diff --git a/src/app/[user]/create-group/page.tsx b/src/app/[user]/create-group/page.tsx index ecf912ba..ee2ce63e 100644 --- a/src/app/[user]/create-group/page.tsx +++ b/src/app/[user]/create-group/page.tsx @@ -3,21 +3,14 @@ import Modal from "@/common/component/Modal"; import Sidebar from "@/common/component/Sidebar"; import ToastProvider from "@/common/component/Toast"; -import CodeClipboard from "@/shared/component/CodeClipboard"; import { sidebarWrapper } from "@/styles/shared.css"; import CreateGroupForm from "@/view/user/create-group/CreateGroupForm"; import { wrapper } from "@/view/user/create-group/index.css"; import { useRouter } from "next/navigation"; -import { useState } from "react"; const CreateGroupPage = () => { const router = useRouter(); - const [responseCode, setResponseCode] = useState(""); - - const handleSuccess = (code: string) => { - setResponseCode(code); - }; return (
@@ -25,8 +18,7 @@ const CreateGroupPage = () => { router.back()} hasCloseBtn>
- - {responseCode && } +
diff --git a/src/app/join-group/[code]/query.ts b/src/app/join-group/[code]/query.ts index 9e8ed73d..450de7a1 100644 --- a/src/app/join-group/[code]/query.ts +++ b/src/app/join-group/[code]/query.ts @@ -1,10 +1,10 @@ import { getGroupsByCode } from "@/app/api/groups"; import { joinGroupAction } from "@/app/join-group/[code]/action"; -import { useMutation, useSuspenseQuery } from "@tanstack/react-query"; +import { useMutation, useQuery } from "@tanstack/react-query"; import { useRouter } from "next/navigation"; export const useGroupByCodeQuery = (code: string) => { - return useSuspenseQuery({ + return useQuery({ queryKey: ["groupByCode", code], queryFn: () => getGroupsByCode(code), }); diff --git a/src/common/component/Calendar/index.tsx b/src/common/component/Calendar/index.tsx index 3581c770..12d1c04b 100644 --- a/src/common/component/Calendar/index.tsx +++ b/src/common/component/Calendar/index.tsx @@ -92,13 +92,21 @@ const renderCustomHeader = ({ }: CustomHeaderProps) => { return (
-
{`${date.getFullYear()}년 ${ date.getMonth() + 1 }월`}
-
diff --git a/src/shared/component/CodeClipboard/index.tsx b/src/shared/component/CodeClipboard/index.tsx index b2fa19b4..987624dd 100644 --- a/src/shared/component/CodeClipboard/index.tsx +++ b/src/shared/component/CodeClipboard/index.tsx @@ -16,12 +16,15 @@ interface CodeClipboardProps { } const CodeClipboard = ({ label, code }: CodeClipboardProps) => { - const { data: groupInfo } = useGroupByCodeQuery(code); + const { data: groupInfo, isSuccess } = useGroupByCodeQuery(code); + const { isCopied, copy } = useClipboard( - groupInfo?.ownerNickname, - groupInfo?.name, + groupInfo?.ownerNickname ?? "", + groupInfo?.name ?? "", ); + if (!isSuccess) return null; + return (
{label &&

{label}

} diff --git a/src/view/user/create-group/CreateGroupForm/index.tsx b/src/view/user/create-group/CreateGroupForm/index.tsx index f5e7a6e5..0d8d34c1 100644 --- a/src/view/user/create-group/CreateGroupForm/index.tsx +++ b/src/view/user/create-group/CreateGroupForm/index.tsx @@ -3,6 +3,7 @@ import { IcnPlus } from "@/asset/svg"; import Button from "@/common/component/Button"; import SupportingText from "@/common/component/SupportingText"; import { useToast } from "@/common/hook/useToast"; +import CodeClipboard from "@/shared/component/CodeClipboard"; import { Form } from "@/shared/component/Form"; import DateFormController from "@/shared/component/GroupInfoForm/DateFormController"; import DescFormController from "@/shared/component/GroupInfoForm/DescFormController"; @@ -16,15 +17,15 @@ import { } from "@/shared/component/GroupInfoForm/index.css"; import { getGroupFormData } from "@/shared/component/GroupInfoForm/util"; import { zodResolver } from "@hookform/resolvers/zod"; +import { useState } from "react"; import { useForm } from "react-hook-form"; import type { z } from "zod"; import { submitBtnStyle } from "./index.css"; -type CreateGroupFormProps = { - onSuccess: (code: string) => void; -}; -const CreateGroupForm = ({ onSuccess }: CreateGroupFormProps) => { +const CreateGroupForm = () => { const { showToast } = useToast(); + const [code, setCode] = useState(""); + const form = useForm>({ resolver: zodResolver(groupSchema), mode: "onTouched", @@ -41,7 +42,7 @@ const CreateGroupForm = ({ onSuccess }: CreateGroupFormProps) => { const data = getGroupFormData(values); const code = await createGroupAction(data); - onSuccess(code); + setCode(code); showToast("스터디가 정상적으로 만들어졌어요.", "success"); }; const error = form.formState.errors.endDate; @@ -86,6 +87,7 @@ const CreateGroupForm = ({ onSuccess }: CreateGroupFormProps) => { 스터디 만들기 + {code && } ); };