diff --git a/Week10/wendy0802/mission/README.md b/Week10/wendy0802/mission/README.md index 8fe35590..3468e328 100644 --- a/Week10/wendy0802/mission/README.md +++ b/Week10/wendy0802/mission/README.md @@ -1,6 +1,6 @@ # React + TypeScript + Vite -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. Currently, two official plugins are available: diff --git a/Week10/wendy0802/mission/eslint.config.js b/Week10/wendy0802/mission/eslint.config.js index 6d809ddf..39137b80 100644 --- a/Week10/wendy0802/mission/eslint.config.js +++ b/Week10/wendy0802/mission/eslint.config.js @@ -1,4 +1,4 @@ -import js from '@eslint/js' + import js from '@eslint/js' import globals from 'globals' import reactHooks from 'eslint-plugin-react-hooks' import reactRefresh from 'eslint-plugin-react-refresh' diff --git a/Week10/wendy0802/mission/index.html b/Week10/wendy0802/mission/index.html index 970cfebd..9aba2c36 100644 --- a/Week10/wendy0802/mission/index.html +++ b/Week10/wendy0802/mission/index.html @@ -1,4 +1,4 @@ - +
diff --git a/Week10/wendy0802/mission/package.json b/Week10/wendy0802/mission/package.json index 323a22ce..c88e29f9 100644 --- a/Week10/wendy0802/mission/package.json +++ b/Week10/wendy0802/mission/package.json @@ -1,4 +1,4 @@ -{ + { "name": "tailwind-react-starter", "version": "0.0.0", "scripts": { diff --git a/Week10/wendy0802/mission/pnpm-lock.yaml b/Week10/wendy0802/mission/pnpm-lock.yaml index 1a8b413f..22e3e764 100644 --- a/Week10/wendy0802/mission/pnpm-lock.yaml +++ b/Week10/wendy0802/mission/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '9.0' + lockfileVersion: '9.0' settings: autoInstallPeers: true diff --git a/Week10/wendy0802/mission/postcss.config.js b/Week10/wendy0802/mission/postcss.config.js index 9b4c420d..6dee55a1 100644 --- a/Week10/wendy0802/mission/postcss.config.js +++ b/Week10/wendy0802/mission/postcss.config.js @@ -1,7 +1,7 @@ module.exports = { plugins: { tailwindcss: {}, - autoprefixer: {}, + autoprefixer: {}, }, } \ No newline at end of file diff --git a/Week10/wendy0802/mission/src/App.tsx b/Week10/wendy0802/mission/src/App.tsx index b6c63def..ca887d4f 100644 --- a/Week10/wendy0802/mission/src/App.tsx +++ b/Week10/wendy0802/mission/src/App.tsx @@ -1,4 +1,4 @@ -import { + import { RouterProvider, createBrowserRouter, redirect, diff --git a/Week10/wendy0802/mission/src/api/auth.ts b/Week10/wendy0802/mission/src/api/auth.ts index 5dd1250e..78335128 100644 --- a/Week10/wendy0802/mission/src/api/auth.ts +++ b/Week10/wendy0802/mission/src/api/auth.ts @@ -1,5 +1,4 @@ -// src/api/auth.ts import axios, { AxiosError, AxiosInstance, InternalAxiosRequestConfig } from "axios"; const api = axios.create({ @@ -7,13 +6,11 @@ baseURL: "http://localhost:8000", withCredentials: true, }); -// 토큰 관리 함수 const getAccessToken = () => localStorage.getItem("accessToken"); const getRefreshToken = () => localStorage.getItem("refreshToken"); const setAccessToken = (token: string) => localStorage.setItem("accessToken", token); const setRefreshToken = (token: string) => localStorage.setItem("refreshToken", token); -// (무한 재시도 방지) let isRefreshing = false; // 토큰 갱신 중 대기중인 요청들을 저장 let failedQueue: any[] = []; diff --git a/Week10/wendy0802/mission/src/auth/auth.controller.ts b/Week10/wendy0802/mission/src/auth/auth.controller.ts index 5049f87a..12501713 100644 --- a/Week10/wendy0802/mission/src/auth/auth.controller.ts +++ b/Week10/wendy0802/mission/src/auth/auth.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Get, Req, Res, UseGuards } from '@nestjs/common'; + import { Controller, Get, Req, Res, UseGuards } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { UserService } from './user.service'; // 같은 폴더에 있는 user.service.ts import { JwtService } from '@nestjs/jwt'; diff --git a/Week10/wendy0802/mission/src/auth/google.strategy.ts b/Week10/wendy0802/mission/src/auth/google.strategy.ts index 090f1cbc..3ab47c09 100644 --- a/Week10/wendy0802/mission/src/auth/google.strategy.ts +++ b/Week10/wendy0802/mission/src/auth/google.strategy.ts @@ -3,7 +3,7 @@ import { PassportStrategy } from '@nestjs/passport'; import { Strategy, VerifyCallback } from 'passport-google-oauth20'; import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; - + @Injectable() export class GoogleStrategy extends PassportStrategy(Strategy, 'google') { constructor(configService: ConfigService) { diff --git a/Week10/wendy0802/mission/src/auth/user.service.ts b/Week10/wendy0802/mission/src/auth/user.service.ts index eea9b1b2..7e179770 100644 --- a/Week10/wendy0802/mission/src/auth/user.service.ts +++ b/Week10/wendy0802/mission/src/auth/user.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; - + export interface User { id: string; email: string; diff --git a/Week10/wendy0802/mission/src/components/MovieCard.tsx b/Week10/wendy0802/mission/src/components/MovieCard.tsx index e5c60b12..aa552fe2 100644 --- a/Week10/wendy0802/mission/src/components/MovieCard.tsx +++ b/Week10/wendy0802/mission/src/components/MovieCard.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; + import { useState } from "react"; interface MovieCardProps { movie: any; diff --git a/Week10/wendy0802/mission/src/components/Navbar.tsx b/Week10/wendy0802/mission/src/components/Navbar.tsx index e354ede3..850e0949 100644 --- a/Week10/wendy0802/mission/src/components/Navbar.tsx +++ b/Week10/wendy0802/mission/src/components/Navbar.tsx @@ -1,4 +1,4 @@ -import { Link } from "react-router-dom"; + import { Link } from "react-router-dom"; const Navbar = () => { return ( diff --git a/Week10/wendy0802/mission/src/components/searchForm.tsx b/Week10/wendy0802/mission/src/components/searchForm.tsx index b8ec2627..1b9ab7d0 100644 --- a/Week10/wendy0802/mission/src/components/searchForm.tsx +++ b/Week10/wendy0802/mission/src/components/searchForm.tsx @@ -1,5 +1,5 @@ import React from "react"; - + interface SearchFormProps { query: string; setQuery: (v: string) => void; diff --git a/Week10/wendy0802/mission/src/constants/storage.ts b/Week10/wendy0802/mission/src/constants/storage.ts index e9b6e773..319df6fe 100644 --- a/Week10/wendy0802/mission/src/constants/storage.ts +++ b/Week10/wendy0802/mission/src/constants/storage.ts @@ -1,4 +1,4 @@ - + export const LOCAL_STORAGE_KEY = { accessToken: 'accessToken', refreshToken: 'refreshToken', diff --git a/Week10/wendy0802/mission/src/context/AuthContext.tsx b/Week10/wendy0802/mission/src/context/AuthContext.tsx index cd7c0a06..136f0b44 100644 --- a/Week10/wendy0802/mission/src/context/AuthContext.tsx +++ b/Week10/wendy0802/mission/src/context/AuthContext.tsx @@ -3,7 +3,7 @@ import { useLocalStorage } from "../hooks/useLocalStorage"; import { loginApi, logoutApi } from "../api/auth"; import { LOCAL_STORAGE_KEY } from "../constants/storage"; import { LoginRequest } from "../api/auth"; - + interface AuthContextType { accessToken: string | null; refreshToken: string | null; diff --git a/Week10/wendy0802/mission/src/hooks/useFecthMovies.tsx b/Week10/wendy0802/mission/src/hooks/useFecthMovies.tsx index 3080a7b2..ff409eda 100644 --- a/Week10/wendy0802/mission/src/hooks/useFecthMovies.tsx +++ b/Week10/wendy0802/mission/src/hooks/useFecthMovies.tsx @@ -2,7 +2,6 @@ import { useState, useEffect } from "react"; import axios from "axios"; -// ✅ 카테고리 이름을 실제 API endpoint에 맞게 변환하는 맵 const categoryMap: Record🔵🔵🔵
- + ); }; diff --git a/Week10/wendy0802/mission/src/pages/Login.tsx b/Week10/wendy0802/mission/src/pages/Login.tsx index b89d35a3..e4bd7a94 100644 --- a/Week10/wendy0802/mission/src/pages/Login.tsx +++ b/Week10/wendy0802/mission/src/pages/Login.tsx @@ -7,7 +7,7 @@ import { loginApi } from "../api/auth"; import { useAuth } from "../context/AuthContext"; import { useEffect, useCallback } from "react"; import { useLocation } from "react-router-dom"; - + // 로그인 스키마 정의 const loginSchema = z.object({ email: z.string().email("올바른 이메일 형식이 아닙니다."), diff --git a/Week10/wendy0802/mission/src/pages/MovieDetailPage.tsx b/Week10/wendy0802/mission/src/pages/MovieDetailPage.tsx index fed2acc7..f1979927 100644 --- a/Week10/wendy0802/mission/src/pages/MovieDetailPage.tsx +++ b/Week10/wendy0802/mission/src/pages/MovieDetailPage.tsx @@ -3,7 +3,7 @@ import { useParams } from "react-router-dom"; import axios from "axios"; import LoadingSpinner from "./LoadingSpinner"; import NotFoundPage from "./NotFoundPage"; - + const MovieDetailPage = (): JSX.Element => { const { movieId } = useParams(); const [movieDetails, setMovieDetails] = useState