diff --git a/eslint.config.js b/eslint.config.js index 0eef7c04..734bdda3 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -33,7 +33,7 @@ const jsConfig = { curly: "error", quotes: ["error", "double"], "comma-style": ["error", "last"], - // "no-unused-vars": ["warn", { varsIgnorePattern: "^React$" }], + "no-unused-vars": ["off", { varsIgnorePattern: "^React$" }], "no-console": "warn", "no-extra-semi": "error", // "no-unused-expressions": "error", @@ -63,8 +63,8 @@ const jsConfig = { "no-new-wrappers": "error", "no-restricted-globals": "error", "no-return-assign": "warn", - // "@typescript-eslint/no-explicit-any": "warn", // any 허용 - "@typescript-eslint/no-unused-vars": ["warn", { varsIgnorePattern: "^React$" }], // 'React' 사용 안해도 경고하지 않도록 설정 + "@typescript-eslint/no-explicit-any": "warn", // any 허용 + "@typescript-eslint/no-unused-vars": ["off", { varsIgnorePattern: "^React$" }], // 'React' 사용 안해도 경고하지 않도록 설정 }, settings: { react: { diff --git a/src/apis/domains/users/api.ts b/src/apis/domains/users/api.ts index 63c4dcd7..4b443218 100644 --- a/src/apis/domains/users/api.ts +++ b/src/apis/domains/users/api.ts @@ -1,18 +1,13 @@ import { post } from "@apis/index"; +import { components } from "@typings/api/schema"; import { ApiResponseType } from "@typings/commonType"; import { AxiosResponse } from "axios"; -type LoginSuccessReponse = { - data: { - accessToken: string; - refreshToken: string; - nickName: string; - }; -}; +type LoginSuccessResponse = components["schemas"]["LoginSuccessResponse"]; -export const postKakaoLogin = async (authCode: string): Promise => { +export const postKakaoLogin = async (authCode: string): Promise => { try { - const response: AxiosResponse> = await post( + const response: AxiosResponse> = await post( `/users/sign-up?authorizationCode=${authCode}`, { socialType: "KAKAO", diff --git a/src/apis/domains/users/queries.ts b/src/apis/domains/users/queries.ts index e9d0e726..d910514a 100644 --- a/src/apis/domains/users/queries.ts +++ b/src/apis/domains/users/queries.ts @@ -8,29 +8,28 @@ const QUERY_KEY = { KAKAO_LOGIN: "kakaoLogin", }; -type LoginSuccessReponse = { - data: { - accessToken: string; - refreshToken: string; - nickName: string; - }; -}; +type LoginSuccessResponse = components["schemas"]["LoginSuccessResponse"]; export const usePostKakaoLogin = () => { const [, setUserData] = useAtom(userAtom); const queryClient = new QueryClient(); - return useMutation({ + return useMutation({ mutationFn: (authCode: string) => postKakaoLogin(authCode), onSuccess: (response) => { if (response) { console.log("login success", response); - const userData = response.data; + const userData = response; if (userData) { - const { accessToken, refreshToken, nickName } = userData; - setUserData({ nickName, accessToken }); + const { accessToken, nickname } = userData; + + if (accessToken && nickname) { + setUserData({ nickname, accessToken }); + } else { + console.error("accessToken or nickname is undefined"); + } } queryClient.invalidateQueries({ queryKey: [QUERY_KEY.KAKAO_LOGIN] }); diff --git a/src/components/commons/hamburger/Hamburger.tsx b/src/components/commons/hamburger/Hamburger.tsx index 77ab85f8..1a2ff047 100644 --- a/src/components/commons/hamburger/Hamburger.tsx +++ b/src/components/commons/hamburger/Hamburger.tsx @@ -9,6 +9,7 @@ import { useAtom, useAtomValue } from "jotai"; import { navigateAtom } from "@stores/navigate"; import { requestKakaoLogin } from "@utils/kakaoLogin"; +import useLogin from "@hooks/useLogin"; const Hamburger = () => { const navigate = useNavigate(); @@ -16,7 +17,7 @@ const Hamburger = () => { const { isOpen } = useAtomValue(hamburgerAtom); const [, setNavigateUrl] = useAtom(navigateAtom); - const [isLogin, setIsLogin] = useState(false); + const { isLogin, nickname } = useLogin(); const { closeHamburger } = useHamburger(); const outside = useRef(null); @@ -52,12 +53,6 @@ const Hamburger = () => { }; }, [isOpen]); - useEffect(() => { - if (localStorage.getItem("accessToken")) { - setIsLogin(true); - } - }, []); - const handleKakaoLogin = (url: string) => { setNavigateUrl(url); requestKakaoLogin(); @@ -80,8 +75,7 @@ const Hamburger = () => { <> - {/* 이 부분 API 연결하면 사용자 이름으로 변경 */} - 프로필 이름 + {nickname} { + const [userData, setUserData] = useAtom(userAtom); + const [isLogin, setIsLogin] = useState(false); + const { nickname, accessToken } = userData; + + const checkLogin = () => { + if (nickname && accessToken) { + return true; + } + return false; + }; + + useEffect(() => { + setIsLogin(checkLogin()); + }, [userData]); + + return { isLogin, nickname }; +}; + +export default useLogin; diff --git a/src/pages/kakaoLogin/KakaoLogin.tsx b/src/pages/kakaoLogin/KakaoLogin.tsx index f4dc206e..acacad3d 100644 --- a/src/pages/kakaoLogin/KakaoLogin.tsx +++ b/src/pages/kakaoLogin/KakaoLogin.tsx @@ -26,10 +26,7 @@ const KakaoLogin = () => { const fetchData = async () => { if (code) { try { - console.log(code); - const userData = await mutateAsync(code); - console.log("userData", userData); setReadyLogin(true); } catch (error) { diff --git a/src/pages/main/components/performance/Performance.Cardstyled.ts b/src/pages/main/components/performance/Performance.Cardstyled.ts index f7d17ddc..456760a1 100644 --- a/src/pages/main/components/performance/Performance.Cardstyled.ts +++ b/src/pages/main/components/performance/Performance.Cardstyled.ts @@ -6,6 +6,8 @@ export const PerformanceCardWrapper = styled.button` flex-direction: column; gap: 1rem; align-items: start; + + text-align: start; `; export const PerformanceImg = styled.img` diff --git a/src/pages/main/components/performance/PerformnaceCard.tsx b/src/pages/main/components/performance/PerformnaceCard.tsx index 7d7444c4..52e94071 100644 --- a/src/pages/main/components/performance/PerformnaceCard.tsx +++ b/src/pages/main/components/performance/PerformnaceCard.tsx @@ -10,8 +10,7 @@ const PerformnaceCard = ({ ...item }) => { { - // id값 줘서 클릭하면 해당 공연으로 넘어갈 수 있도록 - navigate(`/gig/${1}`); + navigate(`/gig/${item.performanceId}`); }} > diff --git a/src/stores/user.ts b/src/stores/user.ts index 4fe88f74..32edc6c4 100644 --- a/src/stores/user.ts +++ b/src/stores/user.ts @@ -2,6 +2,6 @@ import { UserProps } from "@typings/userType"; import { atomWithStorage } from "jotai/utils"; export const userAtom = atomWithStorage("user", { - nickName: "", + nickname: "", accessToken: "", }); diff --git a/src/typings/userType.ts b/src/typings/userType.ts index f5aaa45b..fffab82a 100644 --- a/src/typings/userType.ts +++ b/src/typings/userType.ts @@ -1,4 +1,4 @@ export interface UserProps { - nickName: string; + nickname: string; accessToken: string; } diff --git a/src/utils/kakaoLogin.ts b/src/utils/kakaoLogin.ts index db0af76b..750f30ce 100644 --- a/src/utils/kakaoLogin.ts +++ b/src/utils/kakaoLogin.ts @@ -1,7 +1,8 @@ export const requestKakaoLogin = () => { const REST_API = import.meta.env.VITE_REST_API; // const REDIRECT_URI = "http://localhost:5173/auth"; - const REDIRECT_URI = "https://www.beatlive.kr/auth"; + // const REDIRECT_URI = "https://www.beatlive.kr/auth"; + const REDIRECT_URI = "http://localhost:5173/auth"; const kakaoURL = `https://kauth.kakao.com/oauth/authorize?client_id=${REST_API}&redirect_uri=${REDIRECT_URI}&response_type=code`; diff --git a/tsconfig.app.json b/tsconfig.app.json index 7188428e..5d8bd2bf 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -18,10 +18,10 @@ "jsx": "react-jsx", /* Linting */ - // "strict": true, - // "noUnusedLocals": true, - // "noUnusedParameters": true, - // "noFallthroughCasesInSwitch": true, + "strict": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": false, "baseUrl": "./", "paths": {