diff --git a/enshi/package.json b/enshi/package.json index 901e580..af4b387 100644 --- a/enshi/package.json +++ b/enshi/package.json @@ -1,7 +1,7 @@ { "name": "enshi", "private": true, - "version": "0.1.7", + "version": "0.1.8", "type": "module", "scripts": { "dev": "vite", diff --git a/enshi/src/App.tsx b/enshi/src/App.tsx index cbcc6d9..82da0a2 100644 --- a/enshi/src/App.tsx +++ b/enshi/src/App.tsx @@ -13,7 +13,7 @@ const router = createBrowserRouter(routes); export default function App() { return ( - + diff --git a/enshi/src/Components/ArticleViewer/VoteButton/VoteButton.tsx b/enshi/src/Components/ArticleViewer/VoteButton/VoteButton.tsx index 18e7dcb..d4404a5 100644 --- a/enshi/src/Components/ArticleViewer/VoteButton/VoteButton.tsx +++ b/enshi/src/Components/ArticleViewer/VoteButton/VoteButton.tsx @@ -1,7 +1,10 @@ import { DoubleArrowDownIcon, DoubleArrowUpIcon } from "@radix-ui/react-icons"; import { IconButton } from "@radix-ui/themes"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { useAtomValue } from "jotai"; import { axiosLocalhost } from "../../../api/axios/axios"; +import { userAtom } from "../../../AtomStore/AtomStore"; +import useToast from "../../../hooks/useToast"; export const UPVOTE = true; export const DOWNVOTE = false; @@ -14,6 +17,9 @@ type TVoteButton = { export default function VoteButton(props: TVoteButton) { const queryClient = useQueryClient(); + const user = useAtomValue(userAtom); + const createToast = useToast(); + const { data } = useQuery({ queryKey: [props.vote + "voteCheck"], queryFn: async () => { @@ -57,7 +63,13 @@ export default function VoteButton(props: TVoteButton) { voteMutation.mutate()} + onClick={() => { + if(!user) { + createToast({title: "Please log in to vote", description: "You need to be logged in to vote on a post."}); + return; + } + voteMutation.mutate(); + }} > {props.vote ? : } diff --git a/enshi/src/Components/Dialogs/AddPostToBlogDialog/AddPostToBlogDialog.tsx b/enshi/src/Components/Dialogs/AddPostToBlogDialog/AddPostToBlogDialog.tsx index 41ff55b..79b4c5b 100644 --- a/enshi/src/Components/Dialogs/AddPostToBlogDialog/AddPostToBlogDialog.tsx +++ b/enshi/src/Components/Dialogs/AddPostToBlogDialog/AddPostToBlogDialog.tsx @@ -4,7 +4,7 @@ import { Button, Card, Flex, Select, Text, Theme } from "@radix-ui/themes"; import { useMutation, useQuery } from "@tanstack/react-query"; import { useAtomValue } from "jotai"; import { useState } from "react"; -import { useNavigate } from "react-router-dom"; +import { useNavigate, useParams } from "react-router-dom"; import { Blog } from "../../../@types/BlogTypes"; import { axiosLocalhost } from "../../../api/axios/axios"; import { userAtom } from "../../../AtomStore/AtomStore"; @@ -17,9 +17,12 @@ export default function AddPostToBlogDialog() { const user = useAtomValue(userAtom); const [selectedBlog, setSelectedBlog] = useState(""); - const createToast = useToast() + const [isOpen, setIsOpen] = useState(false); - const { data } = useQuery({ + const params = useParams(); + const createToast = useToast(); + + const { data, refetch } = useQuery({ queryKey: ["userBlogs"], queryFn: async () => { const response = await axiosLocalhost.get("/user/blogs", { @@ -30,20 +33,30 @@ export default function AddPostToBlogDialog() { return temp as Blog[]; }, + enabled: false, }); const addMutation = useMutation({ mutationKey: ["addPostToBlog"], mutationFn: async () => { - + const response = await axiosLocalhost.put( + `posts/${params["postId"]}/blogs/${selectedBlog}` + ); + return response.data; }, onError: (error) => { console.error(error); - createToast({title: "Error!", description: "Post have not been added"}) + createToast({ + title: "Error!", + description: "Post have not been added", + }); }, onSuccess: () => { console.log("Post added successfully"); - createToast({title: "Success!", description: "Post added successfully"}) + createToast({ + title: "Success!", + description: "Post added successfully", + }); }, onSettled: () => { console.log("Add mutation is settled"); @@ -56,7 +69,15 @@ export default function AddPostToBlogDialog() { } return ( - + { + setIsOpen(e); + if (e) { + refetch(); + } + }} + > - - + + {selectedBlog ?
: * Please select a blog to attach the post to.} + +
+ + + +
+