diff --git a/src/templates/post/context/currentCategory.context.ts b/src/templates/post/context/currentCategory.context.ts new file mode 100644 index 00000000..ea434ced --- /dev/null +++ b/src/templates/post/context/currentCategory.context.ts @@ -0,0 +1,7 @@ +import { atom } from "jotai"; +import { PostCategoryType } from "../types"; +import { CATEGORY } from "../constants"; + +const currentCategoryContext = atom(CATEGORY.COMMON); + +export default currentCategoryContext; diff --git a/src/templates/post/context/index.ts b/src/templates/post/context/index.ts new file mode 100644 index 00000000..87217f1e --- /dev/null +++ b/src/templates/post/context/index.ts @@ -0,0 +1 @@ +export { default as currentCategoryContext } from "./currentCategory.context"; diff --git a/src/templates/post/hooks/usePost.ts b/src/templates/post/hooks/usePost.ts index 6826afb5..0d05dcff 100644 --- a/src/templates/post/hooks/usePost.ts +++ b/src/templates/post/hooks/usePost.ts @@ -3,17 +3,17 @@ import { useRouter } from "next/navigation"; import dayjs from "dayjs"; import React from "react"; import Swal from "sweetalert2"; +import { useAtom } from "jotai"; import { useUser } from "@/@user/hooks"; import { KEY, ROUTER } from "@/constants"; -import { CATEGORY } from "../constants"; import { defaultPostData } from "../assets/data"; import { useDeletePostMutation } from "../services/post/mutation.service"; import { Post, PostCategoryType } from "../types"; +import { currentCategoryContext } from "../context"; const usePost = (defaultPostDataState?: Post) => { const [postData, setPostData] = React.useState(defaultPostData); - const [currentCategory, setCurrentCategory] = - React.useState(CATEGORY.COMMON); + const [currentCategory, setCurrentCategory] = useAtom(currentCategoryContext); const { mutate: deletePostMutate } = useDeletePostMutation(); const { user } = useUser(); diff --git a/src/templates/post/hooks/usePostWritable.ts b/src/templates/post/hooks/usePostWritable.ts index eaa48b6f..70c8a672 100644 --- a/src/templates/post/hooks/usePostWritable.ts +++ b/src/templates/post/hooks/usePostWritable.ts @@ -1,5 +1,7 @@ import React from "react"; +import { useAtom } from "jotai"; import { useImageUpload } from "@/hooks"; +import { useUser } from "@/@user/hooks"; import { getFilteredPostDataByCategory, getPostIsValid } from "../helpers"; import { useCreatePostMutation, @@ -7,10 +9,19 @@ import { } from "../services/post/mutation.service"; import { Post, PostCategoryType, PostData } from "../types"; import { defaultPostData } from "../assets/data"; +import { currentCategoryContext } from "../context"; // edit과 write를 동시에 처리하는 훅 const usePostWritable = (defaultPostDataState?: Post) => { - const [postData, setPostData] = React.useState(defaultPostData); + const { isAdmin } = useUser(); + const [currentCategory] = useAtom(currentCategoryContext); + + const is유저가공지사항접근 = !isAdmin && currentCategory === "NOTICE"; + + const [postData, setPostData] = React.useState({ + ...defaultPostData, + category: is유저가공지사항접근 ? "COMMON" : currentCategory, + }); const [lostImageUrl, setLostImageUrl] = React.useState(); const { mutate: updatePostMutate } = useUpdatePostMutation(); const { mutate: createPostMutate } = useCreatePostMutation();