diff --git a/src/app/(auth)/signup/owner/page.tsx b/src/app/(auth)/signup/owner/page.tsx
index 0c94e3f1..967d4970 100644
--- a/src/app/(auth)/signup/owner/page.tsx
+++ b/src/app/(auth)/signup/owner/page.tsx
@@ -1,6 +1,6 @@
"use client";
-import { useAuth } from "@/hooks/useAuth";
+import { useSignup } from "@/hooks/queries/auth/useSignup";
import { type SignupSchema, signupSchema } from "@/schemas/authSchema";
import { userRoles } from "@/constants/userRoles";
import { zodResolver } from "@hookform/resolvers/zod";
@@ -9,7 +9,7 @@ import { useForm } from "react-hook-form";
import Image from "next/image";
export default function OwnerSignupPage() {
- const { signup, isSignupPending } = useAuth();
+ const { signup, isPending } = useSignup();
const {
register,
handleSubmit,
@@ -122,10 +122,10 @@ export default function OwnerSignupPage() {
diff --git a/src/app/(pages)/mypage/components/FilterBar/index.tsx b/src/app/(pages)/mypage/components/FilterBar/index.tsx
index e035750a..c45c8dc0 100644
--- a/src/app/(pages)/mypage/components/FilterBar/index.tsx
+++ b/src/app/(pages)/mypage/components/FilterBar/index.tsx
@@ -6,14 +6,14 @@ import Button from "@/app/components/button/default/Button";
import KebabDropdown from "@/app/components/button/dropdown/KebabDropdown";
import { userRoles } from "@/constants/userRoles";
import useModalStore from "@/store/modalStore";
-import { useUser } from "@/hooks/useUser";
+import { useUser } from "@/hooks/queries/user/me/useUser";
export default function FilterBar() {
const { user, isLoading } = useUser();
const { openModal } = useModalStore();
if (isLoading) {
- return
Loading...
;
+ return null;
}
if (!user) {
diff --git a/src/app/(pages)/mypage/components/sections/CommentsSection.tsx b/src/app/(pages)/mypage/components/sections/CommentsSection.tsx
index 393203e6..91f8b769 100644
--- a/src/app/(pages)/mypage/components/sections/CommentsSection.tsx
+++ b/src/app/(pages)/mypage/components/sections/CommentsSection.tsx
@@ -2,7 +2,7 @@
import React from "react";
import { useState } from "react";
-import { useUser } from "@/hooks/useUser";
+import { useMyComments } from "@/hooks/queries/user/me/useMyComments";
import Pagination from "@/app/components/pagination/Pagination";
import type { MyCommentType } from "@/types/response/user";
@@ -14,7 +14,6 @@ export default function CommentsSection() {
const [currentPage, setCurrentPage] = useState(1);
// 내가 작성한 댓글 목록 조회
- const { useMyComments } = useUser();
const { data, isLoading, error } = useMyComments({
page: currentPage,
pageSize: COMMENTS_PER_PAGE,
diff --git a/src/app/(pages)/mypage/components/sections/PostsSection.tsx b/src/app/(pages)/mypage/components/sections/PostsSection.tsx
index acb7def7..edf826f2 100644
--- a/src/app/(pages)/mypage/components/sections/PostsSection.tsx
+++ b/src/app/(pages)/mypage/components/sections/PostsSection.tsx
@@ -2,7 +2,7 @@
import React, { useEffect } from "react";
import { useInView } from "react-intersection-observer";
-import { useUser } from "@/hooks/useUser";
+import { useMyPosts } from "@/hooks/queries/user/me/useMyPosts";
import { useSortStore } from "@/store/sortStore";
import type { PostListType } from "@/types/response/post";
@@ -21,7 +21,6 @@ export default function PostsSection() {
});
// 내가 작성한 게시글 목록 조회
- const { useMyPosts } = useUser();
const { data, isLoading, error, hasNextPage, fetchNextPage, isFetchingNextPage } = useMyPosts({
limit: POSTS_PER_PAGE,
orderBy: orderBy.posts,
diff --git a/src/app/(pages)/mypage/components/sections/ScrapsSection.tsx b/src/app/(pages)/mypage/components/sections/ScrapsSection.tsx
index 242a2c6e..645bf98f 100644
--- a/src/app/(pages)/mypage/components/sections/ScrapsSection.tsx
+++ b/src/app/(pages)/mypage/components/sections/ScrapsSection.tsx
@@ -2,7 +2,7 @@
import React, { useEffect } from "react";
import { useInView } from "react-intersection-observer";
-import { useUser } from "@/hooks/useUser";
+import { useMyScraps } from "@/hooks/queries/user/me/useMyScraps";
import { useSortStore } from "@/store/sortStore";
import type { FormListType } from "@/types/response/form";
@@ -21,7 +21,6 @@ export default function ScrapsSection() {
});
// 내가 스크랩한 알바폼 목록 조회
- const { useMyScraps } = useUser();
const { data, isLoading, error, hasNextPage, fetchNextPage, isFetchingNextPage } = useMyScraps({
limit: SCRAPS_PER_PAGE,
orderBy: orderBy.scrap,
diff --git a/src/app/components/layout/Header.tsx b/src/app/components/layout/Header.tsx
index b74d608f..7f1ad133 100644
--- a/src/app/components/layout/Header.tsx
+++ b/src/app/components/layout/Header.tsx
@@ -4,13 +4,13 @@ import Image from "next/image";
import Link from "next/link";
import { usePathname, useRouter } from "next/navigation";
import { cn } from "@/lib/tailwindUtil";
-import { useAuth } from "@/hooks/useAuth";
+import { useLogout } from "@/hooks/queries/auth/useLogout";
import { useState } from "react";
import { toast } from "react-hot-toast";
-import { useUser } from "@/hooks/useUser";
+import { useUser } from "@/hooks/queries/user/me/useUser";
export default function Header() {
- const { logout } = useAuth();
+ const { logout } = useLogout();
const { user, isLoading } = useUser();
const pathname = usePathname();
const router = useRouter();
diff --git a/src/app/components/modal/modals/form/ChangePasswordModal.tsx b/src/app/components/modal/modals/form/ChangePasswordModal.tsx
index 5984943e..f5c5b6f1 100644
--- a/src/app/components/modal/modals/form/ChangePasswordModal.tsx
+++ b/src/app/components/modal/modals/form/ChangePasswordModal.tsx
@@ -4,10 +4,8 @@ import { passwordSchema } from "@/schemas/commonSchema";
import { z } from "zod";
import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
-import axios from "axios";
-import toast from "react-hot-toast";
-import { useState } from "react";
-import { useAuth } from "@/hooks/useAuth";
+import { useLogout } from "@/hooks/queries/auth/useLogout";
+import { usePassword } from "@/hooks/queries/user/me/usePassword";
interface ChangePasswordModalProps {
isOpen: boolean;
@@ -54,8 +52,8 @@ const defaultFields = [
] as const;
const ChangePasswordModal = ({ isOpen, onClose, className }: ChangePasswordModalProps) => {
- const [isSubmitting, setIsSubmitting] = useState(false);
- const { logout } = useAuth();
+ const { mutate: changePassword, isPending } = usePassword();
+ const { logout } = useLogout();
const {
register,
@@ -75,35 +73,21 @@ const ChangePasswordModal = ({ isOpen, onClose, className }: ChangePasswordModal
if (!isOpen) return null;
const onSubmitHandler = async (data: ChangePasswordFormData) => {
- if (isSubmitting) return;
+ if (isPending) return;
- try {
- setIsSubmitting(true);
- await axios.patch("/api/users/me/password", {
+ changePassword(
+ {
currentPassword: data.currentPassword,
newPassword: data.newPassword,
- });
-
- reset();
- onClose();
- // 비밀번호 변경 후 로그아웃 처리
- logout();
- toast.success("비밀번호가 변경되었습니다!\n다시 로그인해주세요.", {
- style: {
- whiteSpace: "pre-line", // \n을 줄바꿈으로 처리
- textAlign: "center", // 텍스트 중앙 정렬
+ },
+ {
+ onSuccess: () => {
+ reset();
+ onClose();
+ logout();
},
- });
- } catch (error) {
- if (axios.isAxiosError(error)) {
- const errormessage = error.response?.data?.message || "비밀번호 변경에 실패했습니다.";
- toast.error(errormessage);
- } else {
- toast.error("비밀번호 변경 중 오류가 발생했습니다.");
}
- } finally {
- setIsSubmitting(false);
- }
+ );
};
return (
@@ -124,7 +108,7 @@ const ChangePasswordModal = ({ isOpen, onClose, className }: ChangePasswordModal
type={field.type}
placeholder={field.placeholder}
variant="white"
- disabled={isSubmitting}
+ disabled={isPending}
size="w-[327px] h-[54px] md:w-[640px] md:h-[64px]"
errormessage={errors[field.name]?.message}
/>
@@ -138,17 +122,17 @@ const ChangePasswordModal = ({ isOpen, onClose, className }: ChangePasswordModal
onClose();
reset();
}}
- disabled={isSubmitting}
+ disabled={isPending}
className="text-grayscale-700 flex-1 rounded-md border border-grayscale-300 bg-white px-4 py-2 text-sm font-semibold transition-colors hover:bg-grayscale-50 md:text-base"
>
취소
diff --git a/src/app/components/modal/modals/form/EditMyProfileModal.tsx b/src/app/components/modal/modals/form/EditMyProfileModal.tsx
index 44c5acd8..ea2f2bb3 100644
--- a/src/app/components/modal/modals/form/EditMyProfileModal.tsx
+++ b/src/app/components/modal/modals/form/EditMyProfileModal.tsx
@@ -5,9 +5,7 @@ import { useState, useRef, useEffect } from "react";
import Image from "next/image";
import { FiUser, FiEdit2 } from "react-icons/fi";
import BaseInput from "@/app/components/input/text/BaseInput";
-import { useUser } from "@/hooks/useUser";
-import axios from "axios";
-import toast from "react-hot-toast";
+import { useUser } from "@/hooks/queries/user/me/useUser";
import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import { z } from "zod";
@@ -28,10 +26,9 @@ const editMyProfileSchema = z.object({
type EditMyProfileFormData = z.infer