diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index d57db23a..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true, - "node": true - }, - "parser": "@typescript-eslint/parser", - "plugins": ["react", "@typescript-eslint"], - "parserOptions": { - "project": "./tsconfig.json" - }, - "extends": [ - "eslint:recommended", - "next/core-web-vitals", - "next", - "plugin:react/recommended", - "plugin:@typescript-eslint/recommended", - "prettier" - ], - "eslintIgnore": ["public/mockServiceWorker.js"], // mock lintegnore 추가 - "settings": { - "react": { - "version": "detect" - } - }, - "rules": { - "react/jsx-uses-react": "off", // 해결: 'React' must be in scope when using JSX (Next.js) - "react/react-in-jsx-scope": "off", // 해결: Import React is not needed - "@typescript-eslint/no-unused-vars": "off", // 사용하지 않는 변수값 에러 표시 기능 끄기 - "react/no-unescaped-entities": "off", // React 컴포넌트에서 엔티티를 직접 사용하는 것을 허용합니다. - "@typescript-eslint/no-non-null-assertion": "off", - "@next/next/no-page-custom-font": "off", // Next.js에서 페이지에 사용자 지정 폰트를 로드하는 것을 허용합니다, - "react/jsx-filename-extension": [ - // ts파일에서 tsx구문 허용 (Next.js) - 1, - { - "extensions": [".ts", ".tsx"] - } - ] - } -} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..b2e5d275 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,61 @@ +name: CI + +on: + push: + branches: + - main + - develop + pull_request: + branches: + - main + - develop + +permissions: + id-token: write + +jobs: + build: + env: + ENV_PATH: .env + environment: Production + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8.14.0 + + # Install + - name: Install Dependencies + run: pnpm install + + # Test - test를 진행하지 않으므로 생략 + # - name: Run Tests + # run: pnpm test + + # Lint + - name: Lint Code + run: pnpm lint + + - name: Create .env file + run: | + touch ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_API_MOCKING=${{ secrets.NEXT_PUBLIC_API_MOCKING }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_GOOGLE_API_KEY=${{ secrets.NEXT_PUBLIC_GOOGLE_API_KEY }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_GOOGLE_LOGIN_REDIRECT_URI=${{ secrets.NEXT_PUBLIC_GOOGLE_LOGIN_REDIRECT_URI }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_IMAGE_BASE_PATH=${{ secrets.NEXT_PUBLIC_IMAGE_BASE_PATH }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_JUULABEL_API_URL=${{ secrets.NEXT_PUBLIC_JUULABEL_API_URL }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_KAKAO_API_KEY=${{ secrets.NEXT_PUBLIC_KAKAO_API_KEY }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_KAKAO_LOGIN_REDIRECT_URI=${{ secrets.NEXT_PUBLIC_KAKAO_LOGIN_REDIRECT_URI }} >> ${{ env.ENV_PATH }} + + # Build + - name: Build Project + run: pnpm build diff --git a/.github/workflows/deploy.dev.yml b/.github/workflows/deploy.dev.yml new file mode 100644 index 00000000..ca6771e0 --- /dev/null +++ b/.github/workflows/deploy.dev.yml @@ -0,0 +1,66 @@ +on: + pull_request: + branches: [release/*] + types: [closed] + +jobs: + deploy: + if: github.event.pull_request.merged == true + env: + ENV_PATH: .env + environment: Develop + runs-on: ubuntu-latest + steps: + - name: Checkout branch + uses: actions/checkout@v4 + + - name: Create .env file + run: | + touch ${{ env.ENV_PATH }} + echo ENV_VERSION='dev' >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_API_MOCKING=${{ secrets.NEXT_PUBLIC_API_MOCKING }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_GOOGLE_API_KEY=${{ secrets.NEXT_PUBLIC_GOOGLE_API_KEY }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_GOOGLE_LOGIN_REDIRECT_URI=${{ secrets.NEXT_PUBLIC_GOOGLE_LOGIN_REDIRECT_URI }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_IMAGE_BASE_PATH=${{ secrets.NEXT_PUBLIC_IMAGE_BASE_PATH }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_JUULABEL_API_URL=${{ secrets.NEXT_PUBLIC_JUULABEL_API_URL }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_KAKAO_API_KEY=${{ secrets.NEXT_PUBLIC_KAKAO_API_KEY }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_KAKAO_LOGIN_REDIRECT_URI=${{ secrets.NEXT_PUBLIC_KAKAO_LOGIN_REDIRECT_URI }} >> ${{ env.ENV_PATH }} + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8.14.0 + run_install: false + + - name: Install Dependencies + run: pnpm install + + - name: Build Project + run: pnpm build + + - name: ZIP project files + run: | + zip -r juulabel-front-qa.zip . -x "*.git*" "node_modules/*" + + - name: Acces to AWS + uses: aws-actions/configure-aws-credentials@v3 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ap-northeast-2 + + - name: Upload to S3 + run: | + aws s3 cp ./juulabel-front-qa.zip s3://${{ secrets.S3_BUCKET }}/juulabel-front-qa.zip + + - name: Deploy to EC2 + run: aws deploy create-deployment + --application-name ${{ secrets.CODEDEPLOY_APPLICATION_NAME }} + --deployment-config-name CodeDeployDefault.AllAtOnce + --deployment-group-name ${{ secrets.CODEDEPLOY_GROUP_NAME }} + --s3-location bucket=${{ secrets.S3_BUCKET }},key=juulabel-front-qa.zip,bundleType=zip diff --git a/.github/workflows/deploy.prod.yml b/.github/workflows/deploy.prod.yml new file mode 100644 index 00000000..3c93956e --- /dev/null +++ b/.github/workflows/deploy.prod.yml @@ -0,0 +1,67 @@ +on: + pull_request: + branches: [main] + types: [closed] + +jobs: + deploy: + if: github.event.pull_request.merged == true + env: + ENV_PATH: .env + environment: Production + runs-on: ubuntu-latest + steps: + - name: Checkout branch + uses: actions/checkout@v4 + + - name: Create .env file + run: | + touch ${{ env.ENV_PATH }} + echo ENV_VERSION='production' >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_API_MOCKING=${{ secrets.NEXT_PUBLIC_API_MOCKING }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_GOOGLE_API_KEY=${{ secrets.NEXT_PUBLIC_GOOGLE_API_KEY }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_GOOGLE_LOGIN_REDIRECT_URI=${{ secrets.NEXT_PUBLIC_GOOGLE_LOGIN_REDIRECT_URI }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_IMAGE_BASE_PATH=${{ secrets.NEXT_PUBLIC_IMAGE_BASE_PATH }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_JUULABEL_API_URL=${{ secrets.NEXT_PUBLIC_JUULABEL_API_URL }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_KAKAO_API_KEY=${{ secrets.NEXT_PUBLIC_KAKAO_API_KEY }} >> ${{ env.ENV_PATH }} + echo NEXT_PUBLIC_KAKAO_LOGIN_REDIRECT_URI=${{ secrets.NEXT_PUBLIC_KAKAO_LOGIN_REDIRECT_URI }} >> ${{ env.ENV_PATH }} + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8.14.0 + run_install: false + + - name: Install Dependencies + run: pnpm install + + - name: Build Project + run: pnpm build + + - name: ZIP project files + run: | + zip -r juulabel-front.zip . -x "*.git*" "node_modules/*" + + - name: Acces to AWS + uses: aws-actions/configure-aws-credentials@v3 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ap-northeast-2 + + - name: Upload to S3 + run: | + aws s3 cp ./juulabel-front.zip s3://${{ secrets.S3_BUCKET }}/juulabel-front.zip + + - name: Deploy to EC2 + run: | + aws deploy create-deployment + --application-name ${{ secrets.CODEDEPLOY_APPLICATION_NAME }} + --deployment-config-name CodeDeployDefault.AllAtOnce + --deployment-group-name ${{ secrets.CODEDEPLOY_GROUP_NAME }} + --s3-location bucket=${{ secrets.S3_BUCKET }}, bundleType=zip, key=juulabel-front.zip diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..dbf6cd65 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22.4.0 \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 75fa1341..c9fc7128 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,3 +1,12 @@ { - "tabWidth": 2 + "singleQuote": true, + "parser": "typescript", + "semi": true, + "useTabs": false, + "tabWidth": 2, + "printWidth": 120, + "arrowParens": "always", + "trailingComma": "all", + "bracketSpacing": true, + "endOfLine": "auto" } diff --git a/appspec.yml b/appspec.yml new file mode 100644 index 00000000..4588b40d --- /dev/null +++ b/appspec.yml @@ -0,0 +1,17 @@ +version: 0.0 +os: linux +files: + - source: / + destination: /home/juulabel-front +file_exists_behavior: OVERWRITE +permissions: + - object: /home/juulabel-front + pattern: "**" + owner: root + group: root + mode: 755 +hooks: + AfterInstall: + - location: scripts/after_install.sh + timeout: 300 + runas: root diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..49903506 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,70 @@ +import tseslint from "typescript-eslint"; +import eslint from "@eslint/js"; +import react from "eslint-plugin-react"; +import typescriptPlugin from "@typescript-eslint/eslint-plugin"; +import next from "@next/eslint-plugin-next"; +import eslintPluginPrettier from "eslint-plugin-prettier"; +import globals from "globals"; + +export default tseslint.config( + { + ignores: [ + "**/node_modules/**", + "**/dist/**", + "**/build/**", + "**/public/**", + "**/.next/**", + "**/.github/**", + "**/tailwind.config.js", + "**/postcss.config.js", + "**/next.config.js", + "**/next-env.d.ts", + ], + }, + eslint.configs.recommended, + ...tseslint.configs.recommended, + + { + files: ["**/*.ts", "**/*.tsx"], + plugins: { + "@typescript-eslint": typescriptPlugin, + react, + next, + prettier: eslintPluginPrettier, + }, + languageOptions: { + parser: tseslint.parser, + parserOptions: { + project: "./tsconfig.json", + }, + globals: { + ...globals.browser, + ...globals.node, + }, + }, + rules: { + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", // React import를 사용하지 않도록 설정 + + "prettier/prettier": "warn", // Prettier 규칙을 ESLint에서 경고로 설정 + + "@typescript-eslint/no-unused-vars": "off", // 사용하지 않는 변수 허용 + + "@typescript-eslint/no-explicit-any": "off", // any 타입 사용 허용 + "@typescript-eslint/no-require-imports": "off", // require 사용 허용 + + "react/no-unescaped-entities": "off", // React 컴포넌트에서 엔티티를 직접 사용하는 것을 허용 + "@typescript-eslint/no-non-null-assertion": "off", // non-null assertion 사용 허용 + "@next/next/no-page-custom-font": "off", // next.js에서 커스텀 폰트 사용을 허용 + "react/jsx-filename-extension": [ + 1, + { + extensions: [".ts", ".tsx"], + }, // ts파일에서 tsx 문법 사용 허용 + ], + }, + }, + { + extends: [tseslint.configs.disableTypeChecked], + }, +); diff --git a/package.json b/package.json index 9db9ef9b..41d90327 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "build": "cross-env NODE_ENV=production next build", "start": "cross-env NODE_ENV=production PORT=5001 next start", "start:qa": "cross-env NODE_ENV=production PORT=5005 next start", - "lint": "next lint", + "lint": "eslint .", + "lint:fix": "eslint . --fix", "check-code": "prettier --check .", "format": "prettier --write ." }, @@ -44,7 +45,10 @@ "zustand": "^4.5.6" }, "devDependencies": { + "@eslint/js": "^9.26.0", + "@next/eslint-plugin-next": "^15.3.2", "@svgr/webpack": "^8.1.0", + "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/event-source-polyfill": "^1.0.5", "@types/node": "^20.17.24", "@types/react": "^18.3.18", @@ -58,17 +62,32 @@ "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-react": "^7.37.4", + "globals": "^16.1.0", "msw": "^2.7.3", "postcss": "^8.5.3", "prettier": "^3.5.3", "prettier-plugin-tailwindcss": "^0.6.11", "tailwindcss": "^3.4.17", "typescript": "^5.8.2", + "typescript-eslint": "^8.32.0", "workbox-webpack-plugin": "^7.3.0" }, "prettier": { "plugins": [ - "prettier-plugin-tailwindcss" + "prettier-plugin-tailwindcss", + "@trivago/prettier-plugin-sort-imports" + ], + "importOrder": [ + "", + "^@/app/(.*)$", + "^@/_components/(.*)$", + "^@/_common/(.*)$", + "^@/_lib/(.*)$", + "^@/_store/(.*)$", + "^@/_types/(.*)$", + "^@/_utils/(.*)$", + "^@/(.*)$", + "^[./]" ], "tailwindConfig": "./tailwind.config.ts" }, diff --git a/scripts/after_install.sh b/scripts/after_install.sh new file mode 100644 index 00000000..da6a623c --- /dev/null +++ b/scripts/after_install.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +set -e + +echo "=== [PM2 restart] Restart juulabel-front process ===" + +ENV_VERSION=$(grep ENV_VERSION /home/juulabel-front/.env | cut -d '=' -f2) +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" +export PATH="/home/ubuntu/.nvm/versions/node/v22.4.0/bin:$PATH" +export PM2_HOME="/home/ubuntu/.pm2" + +if [ "$ENV_VERSION" == "dev" ]; then + TARGET_DIR="/home/juulabel-qa/juulabel-front" + PROCESS_NAME="front-qa" + START_SCRIPT="start:qa" +elif [ "$ENV_VERSION" == "production" ]; then + TARGET_DIR="/home/juulabel/juulabel-front" + BACKUP_DIR="/home/juulabel-backup/juulabel-front" + PROCESS_NAME="front-live" + START_SCRIPT="start" +fi + +rm -rf "$TARGET_DIR" +cp -r /home/juulabel-front "$TARGET_DIR" + +if [ "$ENV_VERSION" == "production" ]; then + rm -rf "$BACKUP_DIR" + cp -r /home/juulabel-front "$BACKUP_DIR" +fi + +cd "$TARGET_DIR" +pnpm install + +sudo -u ubuntu -H bash -c " + source /home/ubuntu/.nvm/nvm.sh + pm2 delete $PROCESS_NAME + pm2 start npm --name $PROCESS_NAME -- run $START_SCRIPT +" + +rm -rf /home/juulabel-front +mkdir /home/juulabel-front \ No newline at end of file diff --git a/src/_common/Caption.tsx b/src/_common/Caption.tsx index 7c58ac4e..eb5bbbd2 100644 --- a/src/_common/Caption.tsx +++ b/src/_common/Caption.tsx @@ -1,5 +1,5 @@ -import { cn } from "@/_utils/commons"; import { cva } from "class-variance-authority"; +import { cn } from "@/_utils/commons"; interface ICaption { children: React.ReactNode; diff --git a/src/_common/FullScreenImageCarousel.tsx b/src/_common/FullScreenImageCarousel.tsx index bffc9c6c..1faccb4b 100644 --- a/src/_common/FullScreenImageCarousel.tsx +++ b/src/_common/FullScreenImageCarousel.tsx @@ -1,11 +1,11 @@ "use client"; -import { useCallback, useRef, useState, TouchEvent } from "react"; -import Image from "next/image"; import { constants } from "buffer"; -import { cn } from "@/_utils/commons"; +import Image from "next/image"; +import { useCallback, useRef, useState, TouchEvent } from "react"; import { SlArrowLeft } from "react-icons/sl"; import { SlArrowRight } from "react-icons/sl"; +import { cn } from "@/_utils/commons"; interface Props { images: string[]; diff --git a/src/_common/GTMRouteTracker.tsx b/src/_common/GTMRouteTracker.tsx index cc4876ec..1be2f367 100644 --- a/src/_common/GTMRouteTracker.tsx +++ b/src/_common/GTMRouteTracker.tsx @@ -1,7 +1,7 @@ "use client"; -import { useEffect } from "react"; import { usePathname, useSearchParams } from "next/navigation"; +import { useEffect } from "react"; export default function GTMRouteTracker() { const pathname = usePathname(); diff --git a/src/_common/ModalLayout.tsx b/src/_common/ModalLayout.tsx index 2c91a204..c292dcf5 100644 --- a/src/_common/ModalLayout.tsx +++ b/src/_common/ModalLayout.tsx @@ -1,4 +1,5 @@ "use client"; + import clsx from "clsx"; import { PropsWithChildren, useEffect, useRef } from "react"; diff --git a/src/_common/Navigation.tsx b/src/_common/Navigation.tsx index 4841b70b..7a0a1967 100644 --- a/src/_common/Navigation.tsx +++ b/src/_common/Navigation.tsx @@ -1,17 +1,17 @@ "use client"; import Link from "next/link"; -import ShareSvg from "@/icons/navigation/share.svg"; -import ShareActSvg from "@/icons/navigation/share-active.svg"; -import SearchSvg from "@/icons/navigation/search.svg"; -import SearchActSvg from "@/icons/navigation/search-active.svg"; -import LabelCameraSvg from "@/icons/navigation/label-camera.svg"; -import ShopSvg from "@/icons/navigation/shop.svg"; -import ShopActSvg from "@/icons/navigation/shop-active.svg"; -import MypageSvg from "@/icons/navigation/mypage.svg"; -import { useState } from "react"; import { usePathname } from "next/navigation"; +import { useState } from "react"; import { cn } from "@/_utils/commons"; +import LabelCameraSvg from "@/icons/navigation/label-camera.svg"; +import MypageSvg from "@/icons/navigation/mypage.svg"; +import SearchActSvg from "@/icons/navigation/search-active.svg"; +import SearchSvg from "@/icons/navigation/search.svg"; +import ShareActSvg from "@/icons/navigation/share-active.svg"; +import ShareSvg from "@/icons/navigation/share.svg"; +import ShopActSvg from "@/icons/navigation/shop-active.svg"; +import ShopSvg from "@/icons/navigation/shop.svg"; import ModalWithoutCancel from "./ModalWithoutCancel"; export default function Navigation({ diff --git a/src/_common/TopHeader.tsx b/src/_common/TopHeader.tsx index 9f86dd79..58c66c49 100644 --- a/src/_common/TopHeader.tsx +++ b/src/_common/TopHeader.tsx @@ -1,9 +1,9 @@ "use client"; -import { cn } from "@/_utils/commons"; import { motion } from "framer-motion"; import { usePathname, useRouter } from "next/navigation"; import { GoChevronLeft } from "react-icons/go"; +import { cn } from "@/_utils/commons"; interface ITopHeader { title: string; diff --git a/src/_common/ui/Button.tsx b/src/_common/ui/Button.tsx index 5f085513..4c616cb8 100644 --- a/src/_common/ui/Button.tsx +++ b/src/_common/ui/Button.tsx @@ -1,6 +1,6 @@ -import { PolymorphicPropsWithoutRef } from "@/_types"; import clsx from "clsx"; import { ElementType } from "react"; +import { PolymorphicPropsWithoutRef } from "@/_types"; type ButtonVariant = "primary" | "secondary" | "black" | "none"; diff --git a/src/_components/auth/LoginForm.tsx b/src/_components/auth/LoginForm.tsx index a8c636b3..8f2b33e3 100644 --- a/src/_components/auth/LoginForm.tsx +++ b/src/_components/auth/LoginForm.tsx @@ -1,9 +1,9 @@ "use client"; -import TopHeader from "@/_common/TopHeader"; -import LoginButton from "@/_components/auth/LoginButton"; import Image from "next/image"; import { useEffect, useState } from "react"; +import LoginButton from "@/_components/auth/LoginButton"; +import TopHeader from "@/_common/TopHeader"; export default function LoginForm() { const kakaoSocialLoginLink = `https://kauth.kakao.com/oauth/authorize?client_id=${process.env.NEXT_PUBLIC_KAKAO_API_KEY}&redirect_uri=${process.env.NEXT_PUBLIC_KAKAO_LOGIN_REDIRECT_URI}&response_type=code`; diff --git a/src/_components/auth/NicknameForm.tsx b/src/_components/auth/NicknameForm.tsx index 4f9de00b..d1a6fc1d 100644 --- a/src/_components/auth/NicknameForm.tsx +++ b/src/_components/auth/NicknameForm.tsx @@ -1,16 +1,16 @@ "use client"; -import { - nicknameDefaultValues, - NicknameUserFormValues, -} from "@/_types/yup/yupRegister"; -import { AiFillExclamationCircle } from "react-icons/ai"; -import BottomButton from "@/_common/BottomButton"; +import { useEffect, useState, useCallback } from "react"; import { useForm } from "react-hook-form"; +import { AiFillExclamationCircle } from "react-icons/ai"; import { FaCheckCircle } from "react-icons/fa"; -import { useEffect, useState, useCallback } from "react"; import { instance } from "@/app/api/axios"; +import BottomButton from "@/_common/BottomButton"; import { useRegisterStore } from "@/_store/register"; +import { + nicknameDefaultValues, + NicknameUserFormValues, +} from "@/_types/yup/yupRegister"; export default function NicknameForm() { const { setNickname } = useRegisterStore(); diff --git a/src/_components/auth/PreferredAlcoholForm.tsx b/src/_components/auth/PreferredAlcoholForm.tsx index 06578810..e705458b 100644 --- a/src/_components/auth/PreferredAlcoholForm.tsx +++ b/src/_components/auth/PreferredAlcoholForm.tsx @@ -1,11 +1,11 @@ "use client"; -import Loading from "@/_common/Loading"; -import { alcoholType } from "@/_config/alcoholType"; -import { getAlcoholTypes } from "@/app/api/auth/register/getAlcoholTypes"; import { useQuery } from "@tanstack/react-query"; import axios from "axios"; import Image from "next/image"; +import { getAlcoholTypes } from "@/app/api/auth/register/getAlcoholTypes"; +import Loading from "@/_common/Loading"; +import { alcoholType } from "@/_config/alcoholType"; interface IPreferredAlcohol { alcoholTypes: number[]; diff --git a/src/_components/auth/RegisterAgreementForm.tsx b/src/_components/auth/RegisterAgreementForm.tsx index 7f4f4538..ef24cc10 100644 --- a/src/_components/auth/RegisterAgreementForm.tsx +++ b/src/_components/auth/RegisterAgreementForm.tsx @@ -1,18 +1,18 @@ "use client"; +import { useQuery } from "@tanstack/react-query"; +import { useRouter } from "next/navigation"; +import { useEffect } from "react"; +import { Controller, useForm } from "react-hook-form"; +import { GoChevronRight } from "react-icons/go"; +import { getTerms } from "@/app/api/auth/register/getTerms"; +import BottomButton from "@/_common/BottomButton"; +import Checkbox from "@/_common/Checkbox"; +import { useRegisterStore } from "@/_store/register"; import { AgreementUserFormValues, termsMapping, } from "@/_types/yup/yupRegister"; -import { Controller, useForm } from "react-hook-form"; -import { useRegisterStore } from "@/_store/register"; -import BottomButton from "@/_common/BottomButton"; -import { useQuery } from "@tanstack/react-query"; -import { GoChevronRight } from "react-icons/go"; -import { useRouter } from "next/navigation"; -import Checkbox from "@/_common/Checkbox"; -import { getTerms } from "@/app/api/auth/register/getTerms"; -import { useEffect } from "react"; export default function RegisterAgreementForm() { const router = useRouter(); diff --git a/src/_components/auth/RegisterConfirmModal.tsx b/src/_components/auth/RegisterConfirmModal.tsx index 03427cf6..ae2ab61e 100644 --- a/src/_components/auth/RegisterConfirmModal.tsx +++ b/src/_components/auth/RegisterConfirmModal.tsx @@ -1,7 +1,7 @@ "use client"; -import { alcoholType } from "@/_config/alcoholType"; import { useRegisterStore } from "@/_store/register"; +import { alcoholType } from "@/_config/alcoholType"; interface IRegisterConfirm { handleRegisterConfirm: () => void; diff --git a/src/_components/auth/handler/KaKaoLoginHandler.tsx b/src/_components/auth/handler/KaKaoLoginHandler.tsx index fe771287..6703b471 100644 --- a/src/_components/auth/handler/KaKaoLoginHandler.tsx +++ b/src/_components/auth/handler/KaKaoLoginHandler.tsx @@ -1,14 +1,14 @@ "use client"; -import { useRegisterStore } from "@/_store/register"; -import { instance } from "@/app/api/axios"; -import requests from "@/app/api/requests"; +import { isAxiosError } from "axios"; import { useRouter, useSearchParams } from "next/navigation"; import { useEffect } from "react"; import { useCookies } from "react-cookie"; -import LoginLoading from "./LoginLoading"; import { toast } from "react-toastify"; -import { isAxiosError } from "axios"; +import { instance } from "@/app/api/axios"; +import requests from "@/app/api/requests"; +import { useRegisterStore } from "@/_store/register"; +import LoginLoading from "./LoginLoading"; export default function KaKaoLoginHandler() { const { setEmail, setProvider, setProviderId } = useRegisterStore(); diff --git a/src/_components/auth/handler/LoginLoading.tsx b/src/_components/auth/handler/LoginLoading.tsx index 50f75787..7c6c174e 100644 --- a/src/_components/auth/handler/LoginLoading.tsx +++ b/src/_components/auth/handler/LoginLoading.tsx @@ -1,4 +1,5 @@ "use client"; + import { motion } from "framer-motion"; export default function LoginLoading() { diff --git a/src/_components/follow/UserItem.tsx b/src/_components/follow/UserItem.tsx index dabf75a7..c51dd233 100644 --- a/src/_components/follow/UserItem.tsx +++ b/src/_components/follow/UserItem.tsx @@ -1,10 +1,10 @@ -import { RecommendedUser } from "@/_types/user/recommendedUser"; -import { useCallback, memo, useState } from "react"; import Image from "next/image"; -import FollowButton from "@/_common/FollowButton"; -import { useCommonFollow } from "@/_utils/hooks/useFollow"; import { usePathname, useRouter } from "next/navigation"; +import { useCallback, memo, useState } from "react"; +import FollowButton from "@/_common/FollowButton"; import useMemberStore from "@/_store/memberStore"; +import { RecommendedUser } from "@/_types/user/recommendedUser"; +import { useCommonFollow } from "@/_utils/hooks/useFollow"; const DEFAULT_PROFILE_IMAGE = `${process.env.NEXT_PUBLIC_IMAGE_BASE_PATH}/images/placeholders/profile/default_profile.png`; const BADGE_IMAGE = `${process.env.NEXT_PUBLIC_IMAGE_BASE_PATH}/images/kisa-badge.png`; diff --git a/src/_components/life/LifeThumbnail.tsx b/src/_components/life/LifeThumbnail.tsx index c5b9758f..17552c25 100644 --- a/src/_components/life/LifeThumbnail.tsx +++ b/src/_components/life/LifeThumbnail.tsx @@ -1,7 +1,8 @@ -import { ILifeList } from "@/_types/share"; -import { dateView } from "@/_utils/time"; import Image from "next/image"; import Link from "next/link"; +import { ILifeList } from "@/_types/share"; +import { dateView } from "@/_utils/time"; + export default function LifeThumbnail({ title, content, diff --git a/src/_components/notification/NotificationList.tsx b/src/_components/notification/NotificationList.tsx index dfd46872..b9ab7b89 100644 --- a/src/_components/notification/NotificationList.tsx +++ b/src/_components/notification/NotificationList.tsx @@ -1,10 +1,10 @@ "use client"; -import { INotificationSummary } from "@/_types/notification"; -import { dateViewKoreanFull } from "@/_utils/time"; import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime"; import Image from "next/image"; import { useRouter } from "next/navigation"; +import { INotificationSummary } from "@/_types/notification"; +import { dateViewKoreanFull } from "@/_utils/time"; const NotificationTypeLabels: { [key: string]: string } = { POST_LIKE: "공유공간", diff --git a/src/_components/notification/NotificationProvider.tsx b/src/_components/notification/NotificationProvider.tsx index bbebb581..a69089fb 100644 --- a/src/_components/notification/NotificationProvider.tsx +++ b/src/_components/notification/NotificationProvider.tsx @@ -1,8 +1,8 @@ "use client"; -import { subscribeToNotifications } from "@/app/api/notification/useNotifications"; import { useEffect } from "react"; import { toast } from "react-toastify"; +import { subscribeToNotifications } from "@/app/api/notification/useNotifications"; export default function NotificationProvider({ children, diff --git a/src/_components/notification/NotificationTabButton.tsx b/src/_components/notification/NotificationTabButton.tsx index ff0de91a..becb6a15 100644 --- a/src/_components/notification/NotificationTabButton.tsx +++ b/src/_components/notification/NotificationTabButton.tsx @@ -1,7 +1,7 @@ "use client"; -import { cn } from "@/_utils/commons"; import { useMemo } from "react"; +import { cn } from "@/_utils/commons"; interface NotificationTabButtonProps { onTabClick: (tabName: string) => void; diff --git a/src/_components/reaction/CommentFooter.tsx b/src/_components/reaction/CommentFooter.tsx index 59a1a75a..2b1ef3cc 100644 --- a/src/_components/reaction/CommentFooter.tsx +++ b/src/_components/reaction/CommentFooter.tsx @@ -1,11 +1,11 @@ -import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; -import { IApiResponse } from "@/_types"; -import { ILifeDetail, ILifeDetailInfo } from "@/_types/share"; -import postLifeLike from "@/app/api/life/postLifeLike"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import Image from "next/image"; -import { useCookies } from "react-cookie"; import { memo, useCallback } from "react"; +import { useCookies } from "react-cookie"; +import postLifeLike from "@/app/api/life/postLifeLike"; +import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; +import { ILifeDetail, ILifeDetailInfo } from "@/_types/share"; +import { IApiResponse } from "@/_types"; interface Props { info: ILifeDetailInfo | undefined; diff --git a/src/_components/report/OwnerModalContent.tsx b/src/_components/report/OwnerModalContent.tsx index 97601523..5b0efea7 100644 --- a/src/_components/report/OwnerModalContent.tsx +++ b/src/_components/report/OwnerModalContent.tsx @@ -1,16 +1,16 @@ "use client"; -import Button from "@/_common/ui/Button"; -import { IAlcoholType } from "@/_types/tasting-note/officialData"; -import { getAlcoholType } from "@/app/api/common/getAlcoholType"; -import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; import { useQuery } from "@tanstack/react-query"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { useCookies } from "react-cookie"; import { toast } from "react-toastify"; -import WarningModal from "../notification/WarningModal"; +import { getAlcoholType } from "@/app/api/common/getAlcoholType"; import { useDeleteTastingNote } from "@/app/api/tasting-note/deleteTastingNote"; +import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; +import Button from "@/_common/ui/Button"; +import { IAlcoholType } from "@/_types/tasting-note/officialData"; +import WarningModal from "../notification/WarningModal"; export default function OwnerModalContent({ postId, diff --git a/src/_components/report/ReportForm.tsx b/src/_components/report/ReportForm.tsx index e64d415b..750b00de 100644 --- a/src/_components/report/ReportForm.tsx +++ b/src/_components/report/ReportForm.tsx @@ -1,9 +1,9 @@ -import Checkbox from "@/_common/Checkbox"; +import Image from "next/image"; import { useRouter, useSearchParams } from "next/navigation"; import { useEffect, useState } from "react"; import { GoChevronLeft } from "react-icons/go"; -import Image from "next/image"; import BottomButton from "@/_common/BottomButton"; +import Checkbox from "@/_common/Checkbox"; interface ReportFormType { reportList: { data: string[] }; diff --git a/src/_components/report/VisitorsModalContent.tsx b/src/_components/report/VisitorsModalContent.tsx index 5be53f36..09250a80 100644 --- a/src/_components/report/VisitorsModalContent.tsx +++ b/src/_components/report/VisitorsModalContent.tsx @@ -1,9 +1,9 @@ "use client"; -import Button from "@/_common/ui/Button"; import { useParams, useRouter } from "next/navigation"; import { useState } from "react"; import { toast } from "react-toastify"; +import Button from "@/_common/ui/Button"; type ReportType = "시음노트 댓글" | "시음노트" | "일상생활" | "일상생활 댓글"; diff --git a/src/_components/search/AlcoholSearchData.tsx b/src/_components/search/AlcoholSearchData.tsx index 7e96f4f3..149cee81 100644 --- a/src/_components/search/AlcoholSearchData.tsx +++ b/src/_components/search/AlcoholSearchData.tsx @@ -1,9 +1,9 @@ "use client"; -import OfficialDataThumbnail from "./AlcoholSearchDataThumbnailThumbnail"; -import { IAlcoholSearchData } from "@/_types/search/alcoholSearchData"; import { useMemo } from "react"; +import { IAlcoholSearchData } from "@/_types/search/alcoholSearchData"; import AlcoholTypeLoader from "../search/AlcoholTypeLoader"; +import OfficialDataThumbnail from "./AlcoholSearchDataThumbnailThumbnail"; import Spinner from "./Spinner"; interface AlcoholSearchDataProps { diff --git a/src/_components/search/AlcoholSearchDataThumbnailThumbnail.tsx b/src/_components/search/AlcoholSearchDataThumbnailThumbnail.tsx index 166140a3..2c78b692 100644 --- a/src/_components/search/AlcoholSearchDataThumbnailThumbnail.tsx +++ b/src/_components/search/AlcoholSearchDataThumbnailThumbnail.tsx @@ -1,12 +1,12 @@ "use client"; -import Caption from "@/_common/Caption"; -import { placeholderThumbnailProvider } from "@/_components/tasting-note/NoteThumbnail"; -import { IAlcoholSearchData } from "@/_types/search/alcoholSearchData"; -import { cn } from "@/_utils/commons"; import Image from "next/image"; import { useRouter } from "next/navigation"; import { useState } from "react"; +import { placeholderThumbnailProvider } from "@/_components/tasting-note/NoteThumbnail"; +import Caption from "@/_common/Caption"; +import { IAlcoholSearchData } from "@/_types/search/alcoholSearchData"; +import { cn } from "@/_utils/commons"; export default function AlcoholSearchDataThumbnail({ id: alcoholicDrinksId, diff --git a/src/_components/search/AlcoholSearchlDataSearchResult.tsx b/src/_components/search/AlcoholSearchlDataSearchResult.tsx index 6c88253f..a42bfb81 100644 --- a/src/_components/search/AlcoholSearchlDataSearchResult.tsx +++ b/src/_components/search/AlcoholSearchlDataSearchResult.tsx @@ -1,10 +1,10 @@ "use client"; +import Image from "next/image"; import { useEffect, useState } from "react"; import { GoChevronLeft } from "react-icons/go"; import { IAlcoholSearchData } from "@/_types/search/alcoholSearchData"; import AlcoholSearchData from "./AlcoholSearchData"; -import Image from "next/image"; interface IAlcoholSearchDataSearchResult { query: string; diff --git a/src/_components/search/AlcoholSlider.tsx b/src/_components/search/AlcoholSlider.tsx index 5ab98834..a3cdcf7e 100644 --- a/src/_components/search/AlcoholSlider.tsx +++ b/src/_components/search/AlcoholSlider.tsx @@ -1,6 +1,6 @@ import Image from "next/image"; -import { alcoholType } from "@/_config/alcoholType"; import { IAlcoholTypeTab } from "@/_types/search/alcoholTypeTab"; +import { alcoholType } from "@/_config/alcoholType"; interface AlcoholSliderProps { onAlcoholTypeClick: (tab: IAlcoholTypeTab) => void; // Use the type here diff --git a/src/_components/search/AlcoholTypeData.tsx b/src/_components/search/AlcoholTypeData.tsx index 6b1c1a53..12401c29 100644 --- a/src/_components/search/AlcoholTypeData.tsx +++ b/src/_components/search/AlcoholTypeData.tsx @@ -1,18 +1,18 @@ "use client"; -import { IAlcoholTypeTab } from "@/_types/search/alcoholTypeTab"; -import { IAlcoholTypeData } from "@/_types/search/alcoholTypeData"; -import { cn } from "@/_utils/commons"; +import { useInfiniteQuery } from "@tanstack/react-query"; import Image from "next/image"; import { useMemo, useState, useCallback } from "react"; import { GoChevronLeft } from "react-icons/go"; +import { getAlcoholTypeResult } from "@/app/api/search/getAlcoholTypeResult"; import { IAlcoholSortedType } from "@/_types/search/alcoholSortedType"; -import AlcoholTypeLoader from "./AlcoholTypeLoader"; +import { IAlcoholTypeData } from "@/_types/search/alcoholTypeData"; +import { IAlcoholTypeTab } from "@/_types/search/alcoholTypeTab"; +import { cn } from "@/_utils/commons"; +import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; import AlcoholTypeDataThumbnail from "./AlcoholTypeDataThumbnail"; +import AlcoholTypeLoader from "./AlcoholTypeLoader"; import Spinner from "./Spinner"; -import { useInfiniteQuery } from "@tanstack/react-query"; -import { getAlcoholTypeResult } from "@/app/api/search/getAlcoholTypeResult"; -import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; const TAB_ITEMS: IAlcoholTypeTab[] = [ { id: 1, value: "탁주" }, diff --git a/src/_components/search/AlcoholTypeDataThumbnail.tsx b/src/_components/search/AlcoholTypeDataThumbnail.tsx index 1d4bb05d..71756ff3 100644 --- a/src/_components/search/AlcoholTypeDataThumbnail.tsx +++ b/src/_components/search/AlcoholTypeDataThumbnail.tsx @@ -1,8 +1,8 @@ -import { placeholderThumbnailProvider } from "@/_components/tasting-note/NoteThumbnail"; -import { IAlcoholTypeData } from "@/_types/search/alcoholTypeData"; import Image from "next/image"; import Link from "next/link"; import { useState } from "react"; +import { placeholderThumbnailProvider } from "@/_components/tasting-note/NoteThumbnail"; +import { IAlcoholTypeData } from "@/_types/search/alcoholTypeData"; export default function AlcoholTypeDataThumbnail({ id, diff --git a/src/_components/search/RelatedSearchResult.tsx b/src/_components/search/RelatedSearchResult.tsx index 45be4708..0c0993a0 100644 --- a/src/_components/search/RelatedSearchResult.tsx +++ b/src/_components/search/RelatedSearchResult.tsx @@ -1,8 +1,8 @@ "use client"; -import saveRecentSearchDataToLocalStorage from "@/_utils/saveRecentSearchDataToLocalStorage"; import Image from "next/image"; import { useEffect, useState } from "react"; +import saveRecentSearchDataToLocalStorage from "@/_utils/saveRecentSearchDataToLocalStorage"; interface IRelatedSearchResult { searchedData: string; diff --git a/src/_components/search/ScrollUpFloatingBtn.tsx b/src/_components/search/ScrollUpFloatingBtn.tsx index 899ba6f6..5f35d6ef 100644 --- a/src/_components/search/ScrollUpFloatingBtn.tsx +++ b/src/_components/search/ScrollUpFloatingBtn.tsx @@ -1,7 +1,8 @@ "use client"; -import { cn } from "@/_utils/commons"; + import Image from "next/image"; import { useEffect, useState } from "react"; +import { cn } from "@/_utils/commons"; interface Props { layoutId?: string; diff --git a/src/_components/search/SearchHeader.tsx b/src/_components/search/SearchHeader.tsx index c40e3c80..32e8777a 100644 --- a/src/_components/search/SearchHeader.tsx +++ b/src/_components/search/SearchHeader.tsx @@ -1,6 +1,6 @@ -import { useFetchNotificationCount } from "@/app/api/notification/useNotifications"; import Image from "next/image"; import Link from "next/link"; +import { useFetchNotificationCount } from "@/app/api/notification/useNotifications"; export default function SearchHeader() { const { data: notificationCount = 0, isLoading } = diff --git a/src/_components/share/BadgeInfoModal.tsx b/src/_components/share/BadgeInfoModal.tsx index 8f7d181f..e3947334 100644 --- a/src/_components/share/BadgeInfoModal.tsx +++ b/src/_components/share/BadgeInfoModal.tsx @@ -1,6 +1,6 @@ -import { cn } from "@/_utils/commons"; import Image from "next/image"; import { useRef, useEffect, useCallback } from "react"; +import { cn } from "@/_utils/commons"; interface BadgeInfoModalProps { setIsBadgeInfoModalOpen: (isOpen: boolean) => void; diff --git a/src/_components/share/FloatingBtn.tsx b/src/_components/share/FloatingBtn.tsx index 0fe511bc..72746c8a 100644 --- a/src/_components/share/FloatingBtn.tsx +++ b/src/_components/share/FloatingBtn.tsx @@ -1,8 +1,9 @@ "use client"; -import { cn } from "@/_utils/commons"; + import Image from "next/image"; import Link from "next/link"; import { useState } from "react"; +import { cn } from "@/_utils/commons"; export default function FloatingBtn() { const [clicked, setClicked] = useState(false); diff --git a/src/_components/share/LikeCommentFooter.tsx b/src/_components/share/LikeCommentFooter.tsx index 2da247f5..0ed8a12d 100644 --- a/src/_components/share/LikeCommentFooter.tsx +++ b/src/_components/share/LikeCommentFooter.tsx @@ -1,4 +1,12 @@ "use client"; + +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import clsx from "clsx"; +import Image from "next/image"; +import { useRouter } from "next/navigation"; +import { useEffect, useState } from "react"; +import { useCookies } from "react-cookie"; +import postNoteLike from "@/app/api/tasting-note/postNoteLike"; import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; import { useCommentStore } from "@/_store/tastingDetailStore"; import { @@ -6,13 +14,6 @@ import { ITastingNoteDetailInfo, ITastingNoteResponse, } from "@/_types"; -import postNoteLike from "@/app/api/tasting-note/postNoteLike"; -import { useMutation, useQueryClient } from "@tanstack/react-query"; -import clsx from "clsx"; -import Image from "next/image"; -import { useRouter } from "next/navigation"; -import { useEffect, useState } from "react"; -import { useCookies } from "react-cookie"; interface Props { info: ITastingNoteDetailInfo | undefined; diff --git a/src/_components/share/ShareLayout.tsx b/src/_components/share/ShareLayout.tsx index deb3f209..9ccbb4bf 100644 --- a/src/_components/share/ShareLayout.tsx +++ b/src/_components/share/ShareLayout.tsx @@ -1,10 +1,10 @@ -import Navigation from "@/_common/Navigation"; -import FloatingBtn from "@/_components/share/FloatingBtn"; -import ShareTabButton from "@/_components/share/ShareTabButton"; -import { useFetchNotificationCount } from "@/app/api/notification/useNotifications"; import Image from "next/image"; import Link from "next/link"; import { ReactNode } from "react"; +import { useFetchNotificationCount } from "@/app/api/notification/useNotifications"; +import FloatingBtn from "@/_components/share/FloatingBtn"; +import ShareTabButton from "@/_components/share/ShareTabButton"; +import Navigation from "@/_common/Navigation"; export default function ShareLayout({ children }: { children: ReactNode }) { const { data: notificationCount = 0, isLoading } = diff --git a/src/_components/share/ShareTabButton.tsx b/src/_components/share/ShareTabButton.tsx index 66eaad77..9369b523 100644 --- a/src/_components/share/ShareTabButton.tsx +++ b/src/_components/share/ShareTabButton.tsx @@ -1,8 +1,8 @@ "use client"; -import { cn } from "@/_utils/commons"; import Link from "next/link"; import { usePathname } from "next/navigation"; +import { cn } from "@/_utils/commons"; export default function ShareTabButton() { const pathname = usePathname(); diff --git a/src/_components/share/ShareWriteTopHeader.tsx b/src/_components/share/ShareWriteTopHeader.tsx index 8406f3d4..fdfc4bd9 100644 --- a/src/_components/share/ShareWriteTopHeader.tsx +++ b/src/_components/share/ShareWriteTopHeader.tsx @@ -1,10 +1,10 @@ "use client"; -import { GoChevronLeft } from "react-icons/go"; +import { motion } from "framer-motion"; +import { useRouter } from "next/navigation"; import { MouseEvent } from "react"; +import { GoChevronLeft } from "react-icons/go"; import { cn } from "@/_utils/commons"; -import { useRouter } from "next/navigation"; -import { motion } from "framer-motion"; interface ITopHeader { title: string; diff --git a/src/_components/share/SkeletonUIForList.tsx b/src/_components/share/SkeletonUIForList.tsx index 94f717e4..fccd691f 100644 --- a/src/_components/share/SkeletonUIForList.tsx +++ b/src/_components/share/SkeletonUIForList.tsx @@ -1,5 +1,6 @@ import Skeleton from "react-loading-skeleton"; import "react-loading-skeleton/dist/skeleton.css"; + export default function SkeletomUIForList() { return (
diff --git a/src/_components/share/SkeletonUIForUserProfile.tsx b/src/_components/share/SkeletonUIForUserProfile.tsx index 44889024..41f71c4e 100644 --- a/src/_components/share/SkeletonUIForUserProfile.tsx +++ b/src/_components/share/SkeletonUIForUserProfile.tsx @@ -1,6 +1,6 @@ -import UserHeader from "../user/UserHeader"; import { useRouter } from "next/navigation"; import Loading from "@/_common/Loading"; +import UserHeader from "../user/UserHeader"; import SkeletomUIForList from "./SkeletonUIForList"; export default function SkeletonUIForUserProfile() { diff --git a/src/_components/share/SwipeableTabBar.tsx b/src/_components/share/SwipeableTabBar.tsx index cf98e1d7..f95def3d 100644 --- a/src/_components/share/SwipeableTabBar.tsx +++ b/src/_components/share/SwipeableTabBar.tsx @@ -1,4 +1,5 @@ import React, { ReactNode, useEffect, useRef, useState } from "react"; + interface SwipeableTabBarProps { activeTabIndex: number; children: ReactNode[]; diff --git a/src/_components/share/SwipeableTabView.tsx b/src/_components/share/SwipeableTabView.tsx index 037b2eb1..7da6e52d 100644 --- a/src/_components/share/SwipeableTabView.tsx +++ b/src/_components/share/SwipeableTabView.tsx @@ -1,7 +1,7 @@ import { ReactNode, useEffect, useRef, useState, useCallback } from "react"; -import { Swiper, SwiperSlide } from "swiper/react"; -import "swiper/css"; import type { Swiper as SwiperType } from "swiper"; +import "swiper/css"; +import { Swiper, SwiperSlide } from "swiper/react"; interface SwipeableTabViewProps { activeIndex: number; diff --git a/src/_components/share/detail/FilterDropdown.tsx b/src/_components/share/detail/FilterDropdown.tsx index 8a0651d4..fa97ce94 100644 --- a/src/_components/share/detail/FilterDropdown.tsx +++ b/src/_components/share/detail/FilterDropdown.tsx @@ -1,9 +1,9 @@ "use client"; -import { boolean } from "yup"; import { ReactNode, useState } from "react"; -import useClickOutside from "@/_utils/hooks/useClickOutside"; +import { boolean } from "yup"; import useFilterOrderByStore, { filterList } from "@/_store/filterOrderby"; +import useClickOutside from "@/_utils/hooks/useClickOutside"; interface Props { children: ReactNode; diff --git a/src/_components/share/detail/ShareAboutAlcoholReview.tsx b/src/_components/share/detail/ShareAboutAlcoholReview.tsx index 275eef8c..82a58650 100644 --- a/src/_components/share/detail/ShareAboutAlcoholReview.tsx +++ b/src/_components/share/detail/ShareAboutAlcoholReview.tsx @@ -1,7 +1,7 @@ "use client"; -import { sensoryMap } from "@/_utils/commons"; import { Fragment, ReactNode, useEffect } from "react"; +import { sensoryMap } from "@/_utils/commons"; interface Props { sensoryLevelIds: number[] | undefined; diff --git a/src/_components/share/detail/ShareAboutTheSmellOfAlcohol.tsx b/src/_components/share/detail/ShareAboutTheSmellOfAlcohol.tsx index b7b63d3a..50007c05 100644 --- a/src/_components/share/detail/ShareAboutTheSmellOfAlcohol.tsx +++ b/src/_components/share/detail/ShareAboutTheSmellOfAlcohol.tsx @@ -1,6 +1,6 @@ import { Fragment } from "react"; -import Separator from "../Separator"; import { flavorMap } from "@/_utils/commons"; +import Separator from "../Separator"; interface Props { flavorLevelIds: number[]; diff --git a/src/_components/share/detail/ShareDetailNoteImageBox.tsx b/src/_components/share/detail/ShareDetailNoteImageBox.tsx index 9683276f..555ced7e 100644 --- a/src/_components/share/detail/ShareDetailNoteImageBox.tsx +++ b/src/_components/share/detail/ShareDetailNoteImageBox.tsx @@ -1,16 +1,16 @@ "use client"; -import { useEffect } from "react"; -import LifeCarousel from "../life/LifeCarousel"; +import { useQuery } from "@tanstack/react-query"; import Image from "next/image"; -import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; +import Link from "next/link"; +import { useEffect } from "react"; import { useCookies } from "react-cookie"; -import { useQuery } from "@tanstack/react-query"; -import { ITastingNoteDetailInfo } from "@/_types"; -import { dateViewKoreanFull } from "@/_utils/time"; +import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; import { placeholderThumbnailProvider } from "@/_components/tasting-note/NoteThumbnail"; -import Link from "next/link"; import FullScreenImageCarousel from "@/_common/FullScreenImageCarousel"; +import { dateViewKoreanFull } from "@/_utils/time"; +import { ITastingNoteDetailInfo } from "@/_types"; +import LifeCarousel from "../life/LifeCarousel"; interface Props { info: ITastingNoteDetailInfo | undefined; diff --git a/src/_components/share/detail/ShareDetailReviewBox.tsx b/src/_components/share/detail/ShareDetailReviewBox.tsx index 9909ce8a..486bfbf8 100644 --- a/src/_components/share/detail/ShareDetailReviewBox.tsx +++ b/src/_components/share/detail/ShareDetailReviewBox.tsx @@ -1,15 +1,16 @@ "use client"; + import React, { Fragment, ReactNode, useEffect, useState } from "react"; -import HexagonChart from "../../tasting-note/write/HexagonChart"; -import MoonRating from "./MoonRating"; -import { ITastingNoteDetailInfo } from "@/_types"; import { flavorMap, flavorScoreMap, scentMap, sensoryMap, } from "@/_utils/commons"; +import { ITastingNoteDetailInfo } from "@/_types"; +import HexagonChart from "../../tasting-note/write/HexagonChart"; import RadarChart from "../../tasting-note/write/HexagonChart"; +import MoonRating from "./MoonRating"; import ShareAboutAlcoholReview from "./ShareAboutAlcoholReview"; interface Props { diff --git a/src/_components/share/detail/ShareHeader.tsx b/src/_components/share/detail/ShareHeader.tsx index 65da3101..c6ff4db2 100644 --- a/src/_components/share/detail/ShareHeader.tsx +++ b/src/_components/share/detail/ShareHeader.tsx @@ -1,13 +1,15 @@ "use client"; -import ModalLayout from "@/_common/ModalLayout"; -import OwnerModalContent from "@/_components/report/OwnerModalContent"; -import VisitorsModalContent from "@/_components/report/VisitorsModalContent"; -import { useAuthorCheckStore } from "@/_store/tastingDetailStore"; import clsx from "clsx"; import Image from "next/image"; import { useParams, usePathname, useRouter } from "next/navigation"; -import { useState, useEffect } from "react"; +import { useState } from "react"; +import OwnerModalContent from "@/_components/report/OwnerModalContent"; +import VisitorsModalContent from "@/_components/report/VisitorsModalContent"; +import ModalLayout from "@/_common/ModalLayout"; +import { useAuthorCheckStore } from "@/_store/tastingDetailStore"; + +// import { toast } from "react-toastify"; export default function ShareHeader() { const router = useRouter(); diff --git a/src/_components/share/detail/ShareNoteDetailBody.tsx b/src/_components/share/detail/ShareNoteDetailBody.tsx index b9261419..19581d93 100644 --- a/src/_components/share/detail/ShareNoteDetailBody.tsx +++ b/src/_components/share/detail/ShareNoteDetailBody.tsx @@ -1,24 +1,25 @@ "use client"; -import getCurrentUserInfo from "@/app/api/common/getCurrentUserInfo"; -import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; + import { useQueries } from "@tanstack/react-query"; +import clsx from "clsx"; import { useEffect, useState } from "react"; import { useCookies } from "react-cookie"; -import ServerToast from "../error/ServerToast"; -import LikeCommentFooter from "../LikeCommentFooter"; -import ShareDetailNoteImageBox from "./ShareDetailNoteImageBox"; -import ShareDetailReviewBox from "./ShareDetailReviewBox"; -import ShareNoteInfoBox from "./ShareNoteInfoBox"; -import SkeletonUI from "./SkeletonUI"; -import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; -import clsx from "clsx"; +import { toast } from "react-toastify"; +import getCurrentUserInfo from "@/app/api/common/getCurrentUserInfo"; +import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; +import ScrollUpFloatingBtn from "@/_components/search/ScrollUpFloatingBtn"; import useMemberStore from "@/_store/memberStore"; +import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; import { useAuthorCheckStore, useCommentCountStore, } from "@/_store/tastingDetailStore"; -import ScrollUpFloatingBtn from "@/_components/search/ScrollUpFloatingBtn"; -import { toast } from "react-toastify"; +import LikeCommentFooter from "../LikeCommentFooter"; +import ServerToast from "../error/ServerToast"; +import ShareDetailNoteImageBox from "./ShareDetailNoteImageBox"; +import ShareDetailReviewBox from "./ShareDetailReviewBox"; +import ShareNoteInfoBox from "./ShareNoteInfoBox"; +import SkeletonUI from "./SkeletonUI"; interface Props { id: number; diff --git a/src/_components/share/detail/ShareNoteForTraditionalLiquorBody.tsx b/src/_components/share/detail/ShareNoteForTraditionalLiquorBody.tsx index 82267631..502c6cc3 100644 --- a/src/_components/share/detail/ShareNoteForTraditionalLiquorBody.tsx +++ b/src/_components/share/detail/ShareNoteForTraditionalLiquorBody.tsx @@ -1,16 +1,19 @@ "use client"; + import { useInfiniteQuery } from "@tanstack/react-query"; -import getTastingNoteForAlcoholicDrinks from "@/app/api/tasting-note/getTastingNoteForAlcoholicDrinks"; +import Image from "next/image"; import React, { useEffect } from "react"; -import ShareNoteThumbnailForGather from "@/_components/share/detail/ShareNoteThumbnailForGather"; -import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; import Skeleton from "react-loading-skeleton"; import "react-loading-skeleton/dist/skeleton.css"; +import getTastingNoteForAlcoholicDrinks from "@/app/api/tasting-note/getTastingNoteForAlcoholicDrinks"; +import ScrollUpFloatingBtn from "@/_components/search/ScrollUpFloatingBtn"; import Spinner from "@/_components/search/Spinner"; -import useTastingNoteStore from "@/_store/tastingNoteCountState"; +import ShareNoteThumbnailForGather from "@/_components/share/detail/ShareNoteThumbnailForGather"; import ServerToast from "@/_components/share/error/ServerToast"; -import Image from "next/image"; -import ScrollUpFloatingBtn from "@/_components/search/ScrollUpFloatingBtn"; // 기본 스타일 추가 +import useTastingNoteStore from "@/_store/tastingNoteCountState"; +import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; + +// 기본 스타일 추가 interface Props { id: number; diff --git a/src/_components/share/detail/ShareNoteForTraditionalLiquorFilter.tsx b/src/_components/share/detail/ShareNoteForTraditionalLiquorFilter.tsx index 18abc718..afedf7ee 100644 --- a/src/_components/share/detail/ShareNoteForTraditionalLiquorFilter.tsx +++ b/src/_components/share/detail/ShareNoteForTraditionalLiquorFilter.tsx @@ -1,10 +1,10 @@ "use client"; -import FilterDropdown from "@/_components/share/detail/FilterDropdown"; -import Image from "next/image"; import clsx from "clsx"; -import { boolean } from "yup"; +import Image from "next/image"; import { useState } from "react"; +import { boolean } from "yup"; +import FilterDropdown from "@/_components/share/detail/FilterDropdown"; import useFilterOrderByStore from "@/_store/filterOrderby"; export default function ShareNoteForTraditionalLiquorFilter() { diff --git a/src/_components/share/detail/ShareNoteForTraditionalLiquorLayout.tsx b/src/_components/share/detail/ShareNoteForTraditionalLiquorLayout.tsx index bd4c9bfe..29d7c490 100644 --- a/src/_components/share/detail/ShareNoteForTraditionalLiquorLayout.tsx +++ b/src/_components/share/detail/ShareNoteForTraditionalLiquorLayout.tsx @@ -1,15 +1,17 @@ "use client"; -import { ReactNode, useEffect } from "react"; -import Link from "next/link"; + +import { useIsFetching } from "@tanstack/react-query"; +import clsx from "clsx"; import Image from "next/image"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import { ReactNode, useEffect } from "react"; +import Skeleton from "react-loading-skeleton"; import FilterDropdown from "@/_components/share/detail/FilterDropdown"; -import clsx from "clsx"; import ShareNoteForTraditionalLiquorFilter from "@/_components/share/detail/ShareNoteForTraditionalLiquorFilter"; import useTastingNoteStore from "@/_store/tastingNoteCountState"; -import { useIsFetching } from "@tanstack/react-query"; -import Skeleton from "react-loading-skeleton"; import useTraditionalLiquorList from "@/_utils/hooks/useTraditionalLiquorList"; -import { useRouter } from "next/navigation"; + interface Props { children: ReactNode; id: number; diff --git a/src/_components/share/detail/ShareNoteInfoBox.tsx b/src/_components/share/detail/ShareNoteInfoBox.tsx index 3fd96611..62d349ed 100644 --- a/src/_components/share/detail/ShareNoteInfoBox.tsx +++ b/src/_components/share/detail/ShareNoteInfoBox.tsx @@ -1,6 +1,7 @@ "use client"; -import { IAlchoholicDrinksInfo, ITastingNoteDetailInfo } from "@/_types"; + import { useRouter } from "next/navigation"; +import { IAlchoholicDrinksInfo, ITastingNoteDetailInfo } from "@/_types"; interface Props { info: ITastingNoteDetailInfo | undefined; diff --git a/src/_components/share/detail/ShareNoteThumbnailForGather.tsx b/src/_components/share/detail/ShareNoteThumbnailForGather.tsx index a4cd4318..67ee4783 100644 --- a/src/_components/share/detail/ShareNoteThumbnailForGather.tsx +++ b/src/_components/share/detail/ShareNoteThumbnailForGather.tsx @@ -1,9 +1,9 @@ -import Link from "next/link"; import Image from "next/image"; +import Link from "next/link"; +import { placeholderThumbnailProvider } from "@/_components/tasting-note/NoteThumbnail"; import Caption from "@/_common/Caption"; import { INoteThumbnail } from "@/_types/share"; import { dateViewKoreanFull } from "@/_utils/time"; -import { placeholderThumbnailProvider } from "@/_components/tasting-note/NoteThumbnail"; export default function ShareNoteThumbnailForGather({ TastingNoteId, diff --git a/src/_components/share/detail/ShareTraditionalLiquor.tsx b/src/_components/share/detail/ShareTraditionalLiquor.tsx index 87f11e57..7f76ff4f 100644 --- a/src/_components/share/detail/ShareTraditionalLiquor.tsx +++ b/src/_components/share/detail/ShareTraditionalLiquor.tsx @@ -1,26 +1,26 @@ "use client"; -import React, { Fragment, useEffect } from "react"; -import Image from "next/image"; -import clsx from "clsx"; -import RadarChart from "@/_components/tasting-note/write/HexagonChart"; -import ShareAboutTheSmellOfAlcohol from "./ShareAboutTheSmellOfAlcohol"; -import ShareAboutAlcoholReview from "./ShareAboutAlcoholReview"; -import MoonRating from "./MoonRating"; -import Separator from "../Separator"; import { useQuery } from "@tanstack/react-query"; -import getTraditionalLiquor from "@/app/api/tasting-note/getTraditionalLiquor"; -import { mapImageUrl, parseNumberOfDefault } from "@/_utils/commons"; -import { IApiResponse } from "@/_types"; -import { IResponseTranditionalLiquor } from "@/_types/tasting-note/officialData"; +import clsx from "clsx"; +import Image from "next/image"; import { useRouter } from "next/navigation"; -import ShareTraditionalLiquorSkeletonUI from "./ShareTraditionalLiquorSkeletonUI"; +import React, { Fragment, useEffect } from "react"; +import getTraditionalLiquor from "@/app/api/tasting-note/getTraditionalLiquor"; +import TraditionalLiquorBackground from "@/_components/share/detail/TraditionalLiquorBackground"; import TraditionalLiquorCapacityCell from "@/_components/share/detail/TraditionalLiquorCapacityCell"; -import useVolumePriceStore from "@/_store/volumePriceStore"; import TraditionalLiquorDetailPrice from "@/_components/share/detail/TraditionalLiquorDetailPrice"; +import RadarChart from "@/_components/tasting-note/write/HexagonChart"; +import useVolumePriceStore from "@/_store/volumePriceStore"; +import { IResponseTranditionalLiquor } from "@/_types/tasting-note/officialData"; +import { mapImageUrl, parseNumberOfDefault } from "@/_utils/commons"; import useTraditionalLiquorList from "@/_utils/hooks/useTraditionalLiquorList"; -import TraditionalLiquorBackground from "@/_components/share/detail/TraditionalLiquorBackground"; +import { IApiResponse } from "@/_types"; +import Separator from "../Separator"; import ServerToast from "../error/ServerToast"; +import MoonRating from "./MoonRating"; +import ShareAboutAlcoholReview from "./ShareAboutAlcoholReview"; +import ShareAboutTheSmellOfAlcohol from "./ShareAboutTheSmellOfAlcohol"; +import ShareTraditionalLiquorSkeletonUI from "./ShareTraditionalLiquorSkeletonUI"; interface Props { id: number; diff --git a/src/_components/share/detail/ShareTraditionalLiquorSkeletonUI.tsx b/src/_components/share/detail/ShareTraditionalLiquorSkeletonUI.tsx index a0a3920d..2a9883f8 100644 --- a/src/_components/share/detail/ShareTraditionalLiquorSkeletonUI.tsx +++ b/src/_components/share/detail/ShareTraditionalLiquorSkeletonUI.tsx @@ -1,21 +1,21 @@ "use client"; -import React, { Fragment, useEffect } from "react"; -import Image from "next/image"; -import clsx from "clsx"; -import RadarChart from "@/_components/tasting-note/write/HexagonChart"; -import ShareAboutTheSmellOfAlcohol from "./ShareAboutTheSmellOfAlcohol"; -import ShareAboutAlcoholReview from "./ShareAboutAlcoholReview"; -import MoonRating from "./MoonRating"; -import Separator from "../Separator"; import { useQuery } from "@tanstack/react-query"; -import getTraditionalLiquor from "@/app/api/tasting-note/getTraditionalLiquor"; -import { mapImageUrl, parseNumberOfDefault } from "@/_utils/commons"; -import { IApiResponse } from "@/_types"; -import { IResponseTranditionalLiquor } from "@/_types/tasting-note/officialData"; +import clsx from "clsx"; +import Image from "next/image"; import { useRouter } from "next/navigation"; +import React, { Fragment, useEffect } from "react"; import Skeleton from "react-loading-skeleton"; import "react-loading-skeleton/dist/skeleton.css"; +import getTraditionalLiquor from "@/app/api/tasting-note/getTraditionalLiquor"; +import RadarChart from "@/_components/tasting-note/write/HexagonChart"; +import { IResponseTranditionalLiquor } from "@/_types/tasting-note/officialData"; +import { mapImageUrl, parseNumberOfDefault } from "@/_utils/commons"; +import { IApiResponse } from "@/_types"; +import Separator from "../Separator"; +import MoonRating from "./MoonRating"; +import ShareAboutAlcoholReview from "./ShareAboutAlcoholReview"; +import ShareAboutTheSmellOfAlcohol from "./ShareAboutTheSmellOfAlcohol"; export default function ShareTraditionalLiquorSkeletonUI() { const mediumTextStyle = "text-[16px] font-normal text-cool-grayscale-700"; diff --git a/src/_components/share/detail/SkeletonUI.tsx b/src/_components/share/detail/SkeletonUI.tsx index d5e4709f..7e6f6630 100644 --- a/src/_components/share/detail/SkeletonUI.tsx +++ b/src/_components/share/detail/SkeletonUI.tsx @@ -1,5 +1,7 @@ import Skeleton from "react-loading-skeleton"; -import "react-loading-skeleton/dist/skeleton.css"; // 기본 스타일 추가 +import "react-loading-skeleton/dist/skeleton.css"; + +// 기본 스타일 추가 export default function SkeletonUI() { return ( diff --git a/src/_components/share/detail/TraditionalLiquorBackground.tsx b/src/_components/share/detail/TraditionalLiquorBackground.tsx index 939e2970..bc5afe2b 100644 --- a/src/_components/share/detail/TraditionalLiquorBackground.tsx +++ b/src/_components/share/detail/TraditionalLiquorBackground.tsx @@ -1,10 +1,9 @@ "use client"; -import React from "react"; import Image from "next/image"; - -import bgImage1 from "@/icons/images/traditional_liquor_bg.jpg"; +import React from "react"; import bgImage2 from "@/icons/images/traditional_liquor_bg2.jpg"; +import bgImage1 from "@/icons/images/traditional_liquor_bg.jpg"; const bgImages = [bgImage1, bgImage2]; diff --git a/src/_components/share/detail/TraditionalLiquorCapacityCell.tsx b/src/_components/share/detail/TraditionalLiquorCapacityCell.tsx index 05725018..33cd8646 100644 --- a/src/_components/share/detail/TraditionalLiquorCapacityCell.tsx +++ b/src/_components/share/detail/TraditionalLiquorCapacityCell.tsx @@ -1,7 +1,7 @@ "use client"; -import Image from "next/image"; import clsx from "clsx"; +import Image from "next/image"; import { useEffect, useState } from "react"; import TraditionalLiquorDropDown from "@/_components/share/detail/TraditionalLiquorDropDown"; import useVolumePriceStore from "@/_store/volumePriceStore"; diff --git a/src/_components/share/detail/TraditionalLiquorDetailPrice.tsx b/src/_components/share/detail/TraditionalLiquorDetailPrice.tsx index ddf3c39d..405e96ac 100644 --- a/src/_components/share/detail/TraditionalLiquorDetailPrice.tsx +++ b/src/_components/share/detail/TraditionalLiquorDetailPrice.tsx @@ -1,9 +1,9 @@ "use client"; import clsx from "clsx"; -import { parseNumberOfDefault } from "@/_utils/commons"; import React from "react"; import useVolumePriceStore from "@/_store/volumePriceStore"; +import { parseNumberOfDefault } from "@/_utils/commons"; interface Props { regularPrice: number; diff --git a/src/_components/share/detail/TraditionalLiquorDropDown.tsx b/src/_components/share/detail/TraditionalLiquorDropDown.tsx index ed268c20..560ea2c7 100644 --- a/src/_components/share/detail/TraditionalLiquorDropDown.tsx +++ b/src/_components/share/detail/TraditionalLiquorDropDown.tsx @@ -1,4 +1,5 @@ "use client"; + import { ReactNode, useEffect, useRef, useState, MouseEvent } from "react"; import useVolumePriceStore from "@/_store/volumePriceStore"; import useClickOutside from "@/_utils/hooks/useClickOutside"; diff --git a/src/_components/share/detail/comments/Comments.tsx b/src/_components/share/detail/comments/Comments.tsx index 2eea7408..69a18e0c 100644 --- a/src/_components/share/detail/comments/Comments.tsx +++ b/src/_components/share/detail/comments/Comments.tsx @@ -1,11 +1,11 @@ +import Image from "next/image"; import React, { MouseEvent, useState } from "react"; -import { IComment } from "@/_types"; +import useReplyComponentStore from "@/_store/replyComponentStore"; +import useCommentsModalStore from "@/_store/tastingCommentModal"; import { dateView } from "@/_utils/time"; -import Image from "next/image"; -import ReplyBody from "./ReplyBody"; +import { IComment } from "@/_types"; import CommentsWithReplyWrapper from "./CommentsWithReplyWrapper"; -import useCommentsModalStore from "@/_store/tastingCommentModal"; -import useReplyComponentStore from "@/_store/replyComponentStore"; +import ReplyBody from "./ReplyBody"; interface Props { commentInfo: IComment; diff --git a/src/_components/share/detail/comments/CommentsBody.tsx b/src/_components/share/detail/comments/CommentsBody.tsx index db6496e4..1e3bbf54 100644 --- a/src/_components/share/detail/comments/CommentsBody.tsx +++ b/src/_components/share/detail/comments/CommentsBody.tsx @@ -1,35 +1,35 @@ "use client"; -import React, { useEffect, useRef, useState } from "react"; -import Comments from "./Comments"; -import getNoteComments from "@/app/api/tasting-note/getNoteComments"; -import { useCookies } from "react-cookie"; import { useInfiniteQuery, useQuery, useQueryClient, } from "@tanstack/react-query"; -import { IComment, IReply } from "@/_types"; -import getCurrentUserInfo from "@/app/api/common/getCurrentUserInfo"; -import CommentsFooter from "./CommentsFooter"; +import clsx from "clsx"; +import React, { useEffect, useRef, useState } from "react"; +import { useCookies } from "react-cookie"; import Skeleton from "react-loading-skeleton"; -import SkeletonUI from "./SkeletonUI"; -import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; -import ServerToast from "../../error/ServerToast"; +import { toast } from "react-toastify"; +import getCurrentUserInfo from "@/app/api/common/getCurrentUserInfo"; +import getLifeComments from "@/app/api/life/getLifeComment"; +import deleteNoteComments from "@/app/api/tasting-note/deleteNoteComments"; +import getNoteComments from "@/app/api/tasting-note/getNoteComments"; +import VisitorsModalContent from "@/_components/report/VisitorsModalContent"; import ModalLayout from "@/_common/ModalLayout"; import Button from "@/_common/ui/Button"; -import useCommentsModalStore from "@/_store/tastingCommentModal"; -import deleteNoteComments from "@/app/api/tasting-note/deleteNoteComments"; -import { toast } from "react-toastify"; -import clsx from "clsx"; +import useMemberStore from "@/_store/memberStore"; import useReplyComponentStore from "@/_store/replyComponentStore"; -import ReplyWithComment from "./ReplyWithComment"; +import useCommentsModalStore from "@/_store/tastingCommentModal"; +import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; +import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; +import { IComment, IReply } from "@/_types"; +import ServerToast from "../../error/ServerToast"; +import Comments from "./Comments"; +import CommentsFooter from "./CommentsFooter"; import DeletedComments from "./DeletedComments"; import ModifyDeleteSelectModalForComments from "./ModifyDeleteSelectModalForComments"; -import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; -import useMemberStore from "@/_store/memberStore"; -import getLifeComments from "@/app/api/life/getLifeComment"; -import VisitorsModalContent from "@/_components/report/VisitorsModalContent"; +import ReplyWithComment from "./ReplyWithComment"; +import SkeletonUI from "./SkeletonUI"; interface Props { id: number; diff --git a/src/_components/share/detail/comments/CommentsDeleteModal.tsx b/src/_components/share/detail/comments/CommentsDeleteModal.tsx index 6a99407e..13ec39bb 100644 --- a/src/_components/share/detail/comments/CommentsDeleteModal.tsx +++ b/src/_components/share/detail/comments/CommentsDeleteModal.tsx @@ -1,4 +1,5 @@ "use client"; + import ModalLayout from "@/_common/ModalLayout"; import Button from "@/_common/ui/Button"; import useReplyComponentStore from "@/_store/replyComponentStore"; diff --git a/src/_components/share/detail/comments/CommentsFooter.tsx b/src/_components/share/detail/comments/CommentsFooter.tsx index 0969e6a0..3c33b8c6 100644 --- a/src/_components/share/detail/comments/CommentsFooter.tsx +++ b/src/_components/share/detail/comments/CommentsFooter.tsx @@ -1,11 +1,5 @@ "use client"; -import Button from "@/_common/ui/Button"; -import useReplyComponentStore from "@/_store/replyComponentStore"; -import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; -import { IApiResponse, IComment } from "@/_types"; -import useCommentsPOST from "@/_utils/hooks/useCommentsPOST"; -import postNoteComments from "@/app/api/tasting-note/postNoteComments"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { error } from "console"; import { useRouter } from "next/navigation"; @@ -20,6 +14,12 @@ import { } from "react"; import { useCookies } from "react-cookie"; import { toast } from "react-toastify"; +import postNoteComments from "@/app/api/tasting-note/postNoteComments"; +import Button from "@/_common/ui/Button"; +import useReplyComponentStore from "@/_store/replyComponentStore"; +import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; +import useCommentsPOST from "@/_utils/hooks/useCommentsPOST"; +import { IApiResponse, IComment } from "@/_types"; interface Props { id: number; diff --git a/src/_components/share/detail/comments/CommentsHeader.tsx b/src/_components/share/detail/comments/CommentsHeader.tsx index 48ccaeaa..03c04303 100644 --- a/src/_components/share/detail/comments/CommentsHeader.tsx +++ b/src/_components/share/detail/comments/CommentsHeader.tsx @@ -1,16 +1,17 @@ "use client"; + +import { useQuery } from "@tanstack/react-query"; +import Image from "next/image"; +import { useParams, useRouter } from "next/navigation"; +import { useEffect } from "react"; +import { getLifeDetail } from "@/app/api/life/getLifeDetail"; +import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; import useReplyComponentStore from "@/_store/replyComponentStore"; import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; import { useCommentCountStore, useCommentStore, } from "@/_store/tastingDetailStore"; -import { getLifeDetail } from "@/app/api/life/getLifeDetail"; -import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; -import { useQuery } from "@tanstack/react-query"; -import Image from "next/image"; -import { useParams, useRouter } from "next/navigation"; -import { useEffect } from "react"; interface Props { isLife?: boolean; diff --git a/src/_components/share/detail/comments/CommentsPage.tsx b/src/_components/share/detail/comments/CommentsPage.tsx index fb34520f..a8fd0625 100644 --- a/src/_components/share/detail/comments/CommentsPage.tsx +++ b/src/_components/share/detail/comments/CommentsPage.tsx @@ -1,10 +1,11 @@ "use client"; -import { useCommentStore } from "@/_store/tastingDetailStore"; -import CommentsBody from "./CommentsBody"; -import CommentsHeader from "./CommentsHeader"; + import clsx from "clsx"; import { useEffect } from "react"; import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; +import { useCommentStore } from "@/_store/tastingDetailStore"; +import CommentsBody from "./CommentsBody"; +import CommentsHeader from "./CommentsHeader"; interface Props { id: number; diff --git a/src/_components/share/detail/comments/CommentsWithReplyWrapper.tsx b/src/_components/share/detail/comments/CommentsWithReplyWrapper.tsx index eb8872a2..5d0c70df 100644 --- a/src/_components/share/detail/comments/CommentsWithReplyWrapper.tsx +++ b/src/_components/share/detail/comments/CommentsWithReplyWrapper.tsx @@ -1,14 +1,14 @@ "use client"; +import clsx from "clsx"; +import Image from "next/image"; +import { useParams, usePathname } from "next/navigation"; import React, { useEffect, useState } from "react"; import { PropsWithChildren, MouseEvent } from "react"; -import Image from "next/image"; +import useReplyComponentStore from "@/_store/replyComponentStore"; +import useCommentsLike from "@/_utils/hooks/useCommentsLike"; import { IComment } from "@/_types"; import ReplyBody from "./ReplyBody"; -import useCommentsLike from "@/_utils/hooks/useCommentsLike"; -import { useParams, usePathname } from "next/navigation"; -import clsx from "clsx"; -import useReplyComponentStore from "@/_store/replyComponentStore"; interface Props { commentInfo: IComment; diff --git a/src/_components/share/detail/comments/DeletedComments.tsx b/src/_components/share/detail/comments/DeletedComments.tsx index e6ba2d2b..04e9daca 100644 --- a/src/_components/share/detail/comments/DeletedComments.tsx +++ b/src/_components/share/detail/comments/DeletedComments.tsx @@ -1,10 +1,10 @@ "use client"; +import clsx from "clsx"; +import Image from "next/image"; import React, { MouseEvent } from "react"; import useReplyComponentStore from "@/_store/replyComponentStore"; import { IComment } from "@/_types"; -import clsx from "clsx"; -import Image from "next/image"; interface Props { commentInfo: IComment; diff --git a/src/_components/share/detail/comments/ModifyBody.tsx b/src/_components/share/detail/comments/ModifyBody.tsx index faab3148..ef931c40 100644 --- a/src/_components/share/detail/comments/ModifyBody.tsx +++ b/src/_components/share/detail/comments/ModifyBody.tsx @@ -1,6 +1,7 @@ "use client"; -import useCommentsModalStore from "@/_store/tastingCommentModal"; +import Image from "next/image"; +import { useParams, usePathname, useRouter } from "next/navigation"; import React, { ChangeEvent, useEffect, @@ -8,13 +9,12 @@ import React, { useState, MouseEvent, } from "react"; -import Image from "next/image"; -import useCommentsModify from "@/_utils/hooks/useCommentsModify"; -import ServerToast from "../../error/ServerToast"; -import useReplyComponentStore from "@/_store/replyComponentStore"; -import { useParams, usePathname, useRouter } from "next/navigation"; import ModalLayout from "@/_common/ModalLayout"; import Button from "@/_common/ui/Button"; +import useReplyComponentStore from "@/_store/replyComponentStore"; +import useCommentsModalStore from "@/_store/tastingCommentModal"; +import useCommentsModify from "@/_utils/hooks/useCommentsModify"; +import ServerToast from "../../error/ServerToast"; export default function ModifyBody() { const MAX_LENGTH = 600; diff --git a/src/_components/share/detail/comments/ModifyDeleteSelectModalForComments.tsx b/src/_components/share/detail/comments/ModifyDeleteSelectModalForComments.tsx index 93e1837c..5d22930c 100644 --- a/src/_components/share/detail/comments/ModifyDeleteSelectModalForComments.tsx +++ b/src/_components/share/detail/comments/ModifyDeleteSelectModalForComments.tsx @@ -1,11 +1,11 @@ "use client"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; import ModalLayout from "@/_common/ModalLayout"; import Button from "@/_common/ui/Button"; -import { useState } from "react"; -import CommentsDeleteModal from "./CommentsDeleteModal"; -import { useRouter } from "next/navigation"; import useReplyComponentStore from "@/_store/replyComponentStore"; +import CommentsDeleteModal from "./CommentsDeleteModal"; interface Props { postId: number; diff --git a/src/_components/share/detail/comments/Reply.tsx b/src/_components/share/detail/comments/Reply.tsx index 1c1d01ec..759dfb2e 100644 --- a/src/_components/share/detail/comments/Reply.tsx +++ b/src/_components/share/detail/comments/Reply.tsx @@ -1,16 +1,17 @@ "use client"; -import React, { MouseEvent } from "react"; -import Image from "next/image"; -import { IReply } from "@/_types"; -import { dateView } from "@/_utils/time"; -import useCommentsLike from "@/_utils/hooks/useCommentsLike"; -import clsx from "clsx"; -import useReplyComponentStore from "@/_store/replyComponentStore"; + import { useQuery } from "@tanstack/react-query"; -import getCurrentUserInfo from "@/app/api/common/getCurrentUserInfo"; +import clsx from "clsx"; +import Image from "next/image"; +import { usePathname } from "next/navigation"; +import React, { MouseEvent } from "react"; import { useCookies } from "react-cookie"; +import getCurrentUserInfo from "@/app/api/common/getCurrentUserInfo"; +import useReplyComponentStore from "@/_store/replyComponentStore"; import useCommentsModalStore from "@/_store/tastingCommentModal"; -import { usePathname } from "next/navigation"; +import useCommentsLike from "@/_utils/hooks/useCommentsLike"; +import { dateView } from "@/_utils/time"; +import { IReply } from "@/_types"; interface Props { tastingNoteId: number; diff --git a/src/_components/share/detail/comments/ReplyBody.tsx b/src/_components/share/detail/comments/ReplyBody.tsx index 94f4bf0d..4ae4382c 100644 --- a/src/_components/share/detail/comments/ReplyBody.tsx +++ b/src/_components/share/detail/comments/ReplyBody.tsx @@ -1,9 +1,10 @@ "use client"; + +import clsx from "clsx"; +import Image from "next/image"; import React, { useEffect, useRef, useState } from "react"; import ReplyInput from "./ReplyInput"; -import Image from "next/image"; import ReplyList from "./ReplyList"; -import clsx from "clsx"; interface Props { replyOpen: boolean; diff --git a/src/_components/share/detail/comments/ReplyInput.tsx b/src/_components/share/detail/comments/ReplyInput.tsx index cde5c1e0..fbcdb3e9 100644 --- a/src/_components/share/detail/comments/ReplyInput.tsx +++ b/src/_components/share/detail/comments/ReplyInput.tsx @@ -1,6 +1,5 @@ "use client"; -import Button from "@/_common/ui/Button"; -import postNoteComments from "@/app/api/tasting-note/postNoteComments"; + import { QueryClient, useMutation, @@ -16,6 +15,9 @@ import { } from "react"; import { useCookies } from "react-cookie"; import { toast } from "react-toastify"; +import postNoteComments from "@/app/api/tasting-note/postNoteComments"; +import Button from "@/_common/ui/Button"; + const MAX_LENGTH = 600; interface Props { diff --git a/src/_components/share/detail/comments/ReplyList.tsx b/src/_components/share/detail/comments/ReplyList.tsx index e313eea8..25e2add8 100644 --- a/src/_components/share/detail/comments/ReplyList.tsx +++ b/src/_components/share/detail/comments/ReplyList.tsx @@ -1,24 +1,25 @@ "use client"; -import clsx from "clsx"; -import React, { useEffect } from "react"; -import Image from "next/image"; -import { useState } from "react"; + import { QueryFunctionContext, useInfiniteQuery, useQuery, } from "@tanstack/react-query"; +import clsx from "clsx"; +import Image from "next/image"; +import { usePathname } from "next/navigation"; +import React, { useEffect } from "react"; +import { useState } from "react"; +import { useCookies } from "react-cookie"; +import getCurrentUserInfo from "@/app/api/common/getCurrentUserInfo"; +import getDailyLifeReply from "@/app/api/life/getDailyLifeReply"; import getReply from "@/app/api/tasting-note/getReply"; +import useMemberStore from "@/_store/memberStore"; import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; import { IReply } from "@/_types"; -import Reply from "./Reply"; -import getCurrentUserInfo from "@/app/api/common/getCurrentUserInfo"; -import { useCookies } from "react-cookie"; import DeletedComments from "./DeletedComments"; import DeletedCommentsForReply from "./DeletedCommentsForReply"; -import useMemberStore from "@/_store/memberStore"; -import { usePathname } from "next/navigation"; -import getDailyLifeReply from "@/app/api/life/getDailyLifeReply"; +import Reply from "./Reply"; interface Props { parentCommentId: number; diff --git a/src/_components/share/detail/comments/ReplyWithComment.tsx b/src/_components/share/detail/comments/ReplyWithComment.tsx index df5bd4eb..17dcf115 100644 --- a/src/_components/share/detail/comments/ReplyWithComment.tsx +++ b/src/_components/share/detail/comments/ReplyWithComment.tsx @@ -1,12 +1,13 @@ "use client"; -import useReplyComponentStore from "@/_store/replyComponentStore"; + import clsx from "clsx"; -import Comments from "./Comments"; import { useEffect, useState } from "react"; -import ReplyList from "./ReplyList"; +import useMemberStore from "@/_store/memberStore"; +import useReplyComponentStore from "@/_store/replyComponentStore"; import { useCommentsPageStore } from "@/_store/tastingCommentsPageStore"; +import Comments from "./Comments"; import DeletedComments from "./DeletedComments"; -import useMemberStore from "@/_store/memberStore"; +import ReplyList from "./ReplyList"; export default function ReplyWithComment() { const { isCommentsPageVisible } = useCommentsPageStore(); diff --git a/src/_components/share/detail/comments/SkeletonUI.tsx b/src/_components/share/detail/comments/SkeletonUI.tsx index e0fff749..17e6712f 100644 --- a/src/_components/share/detail/comments/SkeletonUI.tsx +++ b/src/_components/share/detail/comments/SkeletonUI.tsx @@ -1,7 +1,10 @@ "use client"; + import { useEffect } from "react"; import Skeleton from "react-loading-skeleton"; -import "react-loading-skeleton/dist/skeleton.css"; // 기본 스타일 추가 +import "react-loading-skeleton/dist/skeleton.css"; + +// 기본 스타일 추가 export default function SkeletonUI() { // useEffect(() => { diff --git a/src/_components/share/error/ServerToast.tsx b/src/_components/share/error/ServerToast.tsx index f17beac0..b313bda8 100644 --- a/src/_components/share/error/ServerToast.tsx +++ b/src/_components/share/error/ServerToast.tsx @@ -1,4 +1,5 @@ "use client"; + import { useRouter } from "next/navigation"; import { useEffect } from "react"; import { useCookies } from "react-cookie"; diff --git a/src/_components/share/life/HeaderWithButton.tsx b/src/_components/share/life/HeaderWithButton.tsx index ec52d116..580194d9 100644 --- a/src/_components/share/life/HeaderWithButton.tsx +++ b/src/_components/share/life/HeaderWithButton.tsx @@ -1,10 +1,10 @@ "use client"; -import { cn } from "@/_utils/commons"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { GoChevronLeft } from "react-icons/go"; import { RxDotsHorizontal } from "react-icons/rx"; +import { cn } from "@/_utils/commons"; interface IHeaderWithButton { title: string; diff --git a/src/_components/share/life/LifeCarousel.tsx b/src/_components/share/life/LifeCarousel.tsx index a4f1421d..fa14e361 100644 --- a/src/_components/share/life/LifeCarousel.tsx +++ b/src/_components/share/life/LifeCarousel.tsx @@ -1,13 +1,13 @@ "use client"; + +import Image from "next/image"; +import { useRef, useState } from "react"; import "swiper/css"; import "swiper/css/pagination"; -import { useRef, useState } from "react"; - -// Import Swiper React components -import { Swiper, SwiperSlide } from "swiper/react"; // import required modules import { Pagination } from "swiper/modules"; -import Image from "next/image"; +// Import Swiper React components +import { Swiper, SwiperSlide } from "swiper/react"; import FullScreenImageCarousel from "@/_common/FullScreenImageCarousel"; interface ILifeCarousel { diff --git a/src/_components/share/life/LifeViewer.tsx b/src/_components/share/life/LifeViewer.tsx index fc32fd97..c72aa78a 100644 --- a/src/_components/share/life/LifeViewer.tsx +++ b/src/_components/share/life/LifeViewer.tsx @@ -1,7 +1,7 @@ -import { dateViewKoreanFull } from "@/_utils/time"; import Image from "next/image"; -import LifeCarousel from "./LifeCarousel"; import Link from "next/link"; +import { dateViewKoreanFull } from "@/_utils/time"; +import LifeCarousel from "./LifeCarousel"; interface ILifeViewer { title: string; diff --git a/src/_components/shop/ShopLayout.tsx b/src/_components/shop/ShopLayout.tsx index 6d067db2..b80a3bc7 100644 --- a/src/_components/shop/ShopLayout.tsx +++ b/src/_components/shop/ShopLayout.tsx @@ -1,9 +1,9 @@ -import Navigation from "@/_common/Navigation"; -import FloatingBtn from "@/_components/share/FloatingBtn"; -import { useFetchNotificationCount } from "@/app/api/notification/useNotifications"; import Image from "next/image"; import Link from "next/link"; import { ReactNode } from "react"; +import { useFetchNotificationCount } from "@/app/api/notification/useNotifications"; +import FloatingBtn from "@/_components/share/FloatingBtn"; +import Navigation from "@/_common/Navigation"; export default function ShopLayout({ children }: { children: ReactNode }) { const { data: notificationCount = 0, isLoading } = diff --git a/src/_components/tasting-note/NoteThumbnail.tsx b/src/_components/tasting-note/NoteThumbnail.tsx index 344e7b31..8a433d99 100644 --- a/src/_components/tasting-note/NoteThumbnail.tsx +++ b/src/_components/tasting-note/NoteThumbnail.tsx @@ -1,9 +1,9 @@ -import { INoteThumbnail } from "@/_types/share"; -import { dateViewKoreanFull } from "@/_utils/time"; import Image from "next/image"; import Link from "next/link"; -import Caption from "../../_common/Caption"; import { useRouter } from "next/navigation"; +import { INoteThumbnail } from "@/_types/share"; +import { dateViewKoreanFull } from "@/_utils/time"; +import Caption from "../../_common/Caption"; export const placeholderThumbnailProvider = (alcoholType: string) => { switch (alcoholType) { diff --git a/src/_components/tasting-note/SensoryInfo.tsx b/src/_components/tasting-note/SensoryInfo.tsx index 79a2739b..6eeaf4c4 100644 --- a/src/_components/tasting-note/SensoryInfo.tsx +++ b/src/_components/tasting-note/SensoryInfo.tsx @@ -1,7 +1,7 @@ -import { ILevel, ISensoryLevelInfo } from "@/_types"; import { Dispatch, SetStateAction } from "react"; -import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; import { useTastingNoteInformationStore } from "@/_store/tastingNote"; +import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; +import { ILevel, ISensoryLevelInfo } from "@/_types"; import SensoryLevelSelector from "./SensoryLevelSelector"; interface Props { diff --git a/src/_components/tasting-note/SensoryLevelSelector.tsx b/src/_components/tasting-note/SensoryLevelSelector.tsx index 2dd325eb..6ee38216 100644 --- a/src/_components/tasting-note/SensoryLevelSelector.tsx +++ b/src/_components/tasting-note/SensoryLevelSelector.tsx @@ -1,8 +1,8 @@ "use client"; import { ChangeEvent, Dispatch, SetStateAction, useEffect } from "react"; -import { ILevel } from "@/_types"; import { useRef, useState } from "react"; +import { ILevel } from "@/_types"; interface Props { levels: ILevel[]; diff --git a/src/_components/tasting-note/search/OfficalDataSearchResult.tsx b/src/_components/tasting-note/search/OfficalDataSearchResult.tsx index 6e88709b..6d46c659 100644 --- a/src/_components/tasting-note/search/OfficalDataSearchResult.tsx +++ b/src/_components/tasting-note/search/OfficalDataSearchResult.tsx @@ -1,7 +1,7 @@ "use client"; -import { GoChevronLeft } from "react-icons/go"; import Image from "next/image"; +import { GoChevronLeft } from "react-icons/go"; import ScrollUpFloatingBtn from "../../search/ScrollUpFloatingBtn"; import OfficialData from "./OfficialData"; diff --git a/src/_components/tasting-note/search/OfficialData.tsx b/src/_components/tasting-note/search/OfficialData.tsx index 2a26ec90..9f481d1e 100644 --- a/src/_components/tasting-note/search/OfficialData.tsx +++ b/src/_components/tasting-note/search/OfficialData.tsx @@ -1,13 +1,13 @@ "use client"; -import { IOfficialData } from "@/_types/tasting-note/officialData"; import { useInfiniteQuery } from "@tanstack/react-query"; -import OfficialDataThumbnail from "./OfficialDataThumbnail"; +import Image from "next/image"; import { getAlcoholSearchResult } from "@/app/api/search/getAlcoholSearchResult"; +import { IOfficialData } from "@/_types/tasting-note/officialData"; import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; import Spinner from "../../search/Spinner"; +import OfficialDataThumbnail from "./OfficialDataThumbnail"; import TraditionalDrinkInformationComponent from "./TraditionalDrinkInformationComponent"; -import Image from "next/image"; export default function OfficialData({ searchQuery }: { searchQuery: string }) { const { diff --git a/src/_components/tasting-note/search/OfficialDataThumbnail.tsx b/src/_components/tasting-note/search/OfficialDataThumbnail.tsx index 0ac141b1..f492b0fb 100644 --- a/src/_components/tasting-note/search/OfficialDataThumbnail.tsx +++ b/src/_components/tasting-note/search/OfficialDataThumbnail.tsx @@ -1,10 +1,10 @@ "use client"; -import Caption from "@/_common/Caption"; -import { placeholderThumbnailProvider } from "@/_components/tasting-note/NoteThumbnail"; -import { IOfficialData } from "@/_types/tasting-note/officialData"; import Image from "next/image"; import { useRouter } from "next/navigation"; +import { placeholderThumbnailProvider } from "@/_components/tasting-note/NoteThumbnail"; +import Caption from "@/_common/Caption"; +import { IOfficialData } from "@/_types/tasting-note/officialData"; export default function OfficialDataThumbnail({ id: alcoholicDrinksId, diff --git a/src/_components/tasting-note/search/SearchData.tsx b/src/_components/tasting-note/search/SearchData.tsx index 959fc461..8bd40f32 100644 --- a/src/_components/tasting-note/search/SearchData.tsx +++ b/src/_components/tasting-note/search/SearchData.tsx @@ -1,5 +1,5 @@ -import saveRecentSearchDataToLocalStorage from "@/_utils/saveRecentSearchDataToLocalStorage"; import Image from "next/image"; +import saveRecentSearchDataToLocalStorage from "@/_utils/saveRecentSearchDataToLocalStorage"; interface ISearchData { searchQuery: string; diff --git a/src/_components/tasting-note/write/CommentAndRatingForm.tsx b/src/_components/tasting-note/write/CommentAndRatingForm.tsx index ef7f93dd..dc84ef53 100644 --- a/src/_components/tasting-note/write/CommentAndRatingForm.tsx +++ b/src/_components/tasting-note/write/CommentAndRatingForm.tsx @@ -1,18 +1,9 @@ "use client"; -import Checkbox from "@/_common/Checkbox"; -import Modal from "@/_common/Modal"; -import { useTastingNoteInformationStore } from "@/_store/tastingNote"; -import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; -import { ITastingNoteWriteRequest } from "@/_types"; -import { cn } from "@/_utils/commons"; -import { resizeImage } from "@/_utils/resizeImage"; -import { formInstance } from "@/app/api/axios"; -import ImageIcon from "@/icons/image_icon.svg"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; import axios, { AxiosRequestConfig } from "axios"; import Image from "next/image"; import { usePathname, useRouter } from "next/navigation"; - import { useCallback, useEffect, @@ -26,9 +17,17 @@ import { useCookies } from "react-cookie"; import { Controller, useForm } from "react-hook-form"; import { IoClose } from "react-icons/io5"; import { toast } from "react-toastify"; -import Rating from "./Rating"; -import { useQuery, useQueryClient } from "@tanstack/react-query"; +import { formInstance } from "@/app/api/axios"; import { getSensories } from "@/app/api/tasting-note/getTastingNoteFormInformation"; +import Checkbox from "@/_common/Checkbox"; +import Modal from "@/_common/Modal"; +import { useTastingNoteInformationStore } from "@/_store/tastingNote"; +import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; +import { cn } from "@/_utils/commons"; +import { resizeImage } from "@/_utils/resizeImage"; +import { ITastingNoteWriteRequest } from "@/_types"; +import ImageIcon from "@/icons/image_icon.svg"; +import Rating from "./Rating"; async function createFileFromUrl(url: string): Promise { const response = await fetch(url); diff --git a/src/_components/tasting-note/write/FlavorForm.tsx b/src/_components/tasting-note/write/FlavorForm.tsx index 11c5d0c2..38a203c9 100644 --- a/src/_components/tasting-note/write/FlavorForm.tsx +++ b/src/_components/tasting-note/write/FlavorForm.tsx @@ -1,9 +1,9 @@ -import BottomButton from "@/_common/BottomButton"; -import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; -import { getFlavors } from "@/app/api/tasting-note/getTastingNoteFormInformation"; import { useQuery } from "@tanstack/react-query"; import { usePathname } from "next/navigation"; import React, { useEffect, useState } from "react"; +import { getFlavors } from "@/app/api/tasting-note/getTastingNoteFormInformation"; +import BottomButton from "@/_common/BottomButton"; +import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; import { useTastingNoteInformationStore } from "../../../_store/tastingNote"; import RadarChart from "./HexagonChart"; import LevelSelector from "./LevelSelector"; diff --git a/src/_components/tasting-note/write/OfficialBasicInformationForm.tsx b/src/_components/tasting-note/write/OfficialBasicInformationForm.tsx index abe89a92..103293db 100644 --- a/src/_components/tasting-note/write/OfficialBasicInformationForm.tsx +++ b/src/_components/tasting-note/write/OfficialBasicInformationForm.tsx @@ -1,9 +1,9 @@ "use client"; +import { usePathname } from "next/navigation"; import BottomButton from "@/_common/BottomButton"; import { useTastingNoteInformationStore } from "@/_store/tastingNote"; import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; -import { usePathname } from "next/navigation"; interface IOfficialBasicInformationForm { alcoholicDrinksId: string; diff --git a/src/_components/tasting-note/write/ScentForm.tsx b/src/_components/tasting-note/write/ScentForm.tsx index da152946..1b4c4971 100644 --- a/src/_components/tasting-note/write/ScentForm.tsx +++ b/src/_components/tasting-note/write/ScentForm.tsx @@ -1,10 +1,10 @@ -import BottomButton from "@/_common/BottomButton"; -import { useTastingNoteInformationStore } from "@/_store/tastingNote"; -import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; -import { getScents } from "@/app/api/tasting-note/getTastingNoteFormInformation"; import { useQuery } from "@tanstack/react-query"; import { usePathname } from "next/navigation"; import { useEffect, useState } from "react"; +import { getScents } from "@/app/api/tasting-note/getTastingNoteFormInformation"; +import BottomButton from "@/_common/BottomButton"; +import { useTastingNoteInformationStore } from "@/_store/tastingNote"; +import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; interface IScentChip { name: string; diff --git a/src/_components/tasting-note/write/UnOfficialBasicInformationForm.tsx b/src/_components/tasting-note/write/UnOfficialBasicInformationForm.tsx index 56dca872..106411af 100644 --- a/src/_components/tasting-note/write/UnOfficialBasicInformationForm.tsx +++ b/src/_components/tasting-note/write/UnOfficialBasicInformationForm.tsx @@ -1,16 +1,16 @@ "use client"; -import BottomButton from "@/_common/BottomButton"; -import Loading from "@/_common/Loading"; -import { useTastingNoteInformationStore } from "@/_store/tastingNote"; -import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; -import { getAlcoholType } from "@/app/api/common/getAlcoholType"; import { useQuery } from "@tanstack/react-query"; import clsx from "clsx"; import Image from "next/image"; import { usePathname } from "next/navigation"; import { FormEvent, useEffect, useState, MouseEvent } from "react"; import { useForm } from "react-hook-form"; +import { getAlcoholType } from "@/app/api/common/getAlcoholType"; +import BottomButton from "@/_common/BottomButton"; +import Loading from "@/_common/Loading"; +import { useTastingNoteInformationStore } from "@/_store/tastingNote"; +import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; interface AlcoholTypeResponse { id: number; diff --git a/src/_components/tasting-note/write/VisualAndTextureForm.tsx b/src/_components/tasting-note/write/VisualAndTextureForm.tsx index 98d09173..f7bec5ea 100644 --- a/src/_components/tasting-note/write/VisualAndTextureForm.tsx +++ b/src/_components/tasting-note/write/VisualAndTextureForm.tsx @@ -1,19 +1,19 @@ -import BottomButton from "@/_common/BottomButton"; -import { useTastingNoteInformationStore } from "@/_store/tastingNote"; -import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; -import { cn } from "@/_utils/commons"; -import { - getColors, - getSensories, -} from "@/app/api/tasting-note/getTastingNoteFormInformation"; import { useQuery } from "@tanstack/react-query"; import Image from "next/image"; import { usePathname } from "next/navigation"; import { useEffect, useState } from "react"; import { FaCheck } from "react-icons/fa6"; -import LevelSelector from "./LevelSelector"; +import { + getColors, + getSensories, +} from "@/app/api/tasting-note/getTastingNoteFormInformation"; +import BottomButton from "@/_common/BottomButton"; +import { useTastingNoteInformationStore } from "@/_store/tastingNote"; +import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; +import { cn } from "@/_utils/commons"; import { ISensoryLevelInfo } from "@/_types"; import SensoryInfo from "../SensoryInfo"; +import LevelSelector from "./LevelSelector"; interface ColorInfo { id: number; diff --git a/src/_components/user/EditMyInfo.tsx b/src/_components/user/EditMyInfo.tsx index 89471b3f..55379672 100644 --- a/src/_components/user/EditMyInfo.tsx +++ b/src/_components/user/EditMyInfo.tsx @@ -1,18 +1,18 @@ -import { AiFillExclamationCircle } from "react-icons/ai"; -import ProfileChangeModal from "@/_components/user/ProfileChangeModal"; -import { useRouter } from "next/navigation"; +import axios, { AxiosRequestConfig } from "axios"; import Image from "next/image"; -import PreferredAlcoholForm from "@/_components/auth/PreferredAlcoholForm"; -import BottomButton from "@/_common/BottomButton"; -import GenderForm from "@/_components/auth/GenderForm"; +import { useRouter } from "next/navigation"; import { ChangeEvent, useEffect, useRef, useState, useMemo } from "react"; -import { formInstance } from "@/app/api/axios"; -import axios, { AxiosRequestConfig } from "axios"; +import { useCookies } from "react-cookie"; +import { AiFillExclamationCircle } from "react-icons/ai"; import { toast } from "react-toastify"; import { checkNickname } from "@/app/api/auth/checkName"; -import { useCookies } from "react-cookie"; -import { resizeImage } from "@/_utils/resizeImage"; +import { formInstance } from "@/app/api/axios"; import { urlToFile } from "@/app/api/life/urlToFile"; +import GenderForm from "@/_components/auth/GenderForm"; +import PreferredAlcoholForm from "@/_components/auth/PreferredAlcoholForm"; +import ProfileChangeModal from "@/_components/user/ProfileChangeModal"; +import BottomButton from "@/_common/BottomButton"; +import { resizeImage } from "@/_utils/resizeImage"; import { IMyInfo } from "@/_types"; interface ErrorResponse { diff --git a/src/_components/user/MyInfoBody.tsx b/src/_components/user/MyInfoBody.tsx index d7728b08..cd8de638 100644 --- a/src/_components/user/MyInfoBody.tsx +++ b/src/_components/user/MyInfoBody.tsx @@ -1,10 +1,10 @@ -import Modal from "@/_common/Modal"; -import { IMyInfo } from "@/_types"; -import { cn } from "@/_utils/commons"; +import Image from "next/image"; import { useRouter } from "next/navigation"; import { useCallback, useEffect, useState, useMemo } from "react"; import { useCookies } from "react-cookie"; -import Image from "next/image"; +import Modal from "@/_common/Modal"; +import { cn } from "@/_utils/commons"; +import { IMyInfo } from "@/_types"; import BadgeInfoModal from "../share/BadgeInfoModal"; interface IMyInfoBody { diff --git a/src/_components/user/MySpaceHeader.tsx b/src/_components/user/MySpaceHeader.tsx index 6567cc74..916ebe9e 100644 --- a/src/_components/user/MySpaceHeader.tsx +++ b/src/_components/user/MySpaceHeader.tsx @@ -1,8 +1,8 @@ "use client"; -import { useFetchNotificationCount } from "@/app/api/notification/useNotifications"; import Image from "next/image"; import Link from "next/link"; +import { useFetchNotificationCount } from "@/app/api/notification/useNotifications"; interface IMySpaceHeader { title: string; diff --git a/src/_components/user/UserHeader.tsx b/src/_components/user/UserHeader.tsx index 600ca5aa..9efedd47 100644 --- a/src/_components/user/UserHeader.tsx +++ b/src/_components/user/UserHeader.tsx @@ -1,13 +1,13 @@ "use client"; +import clsx from "clsx"; +import Image from "next/image"; +import { useState } from "react"; +import { GoChevronLeft } from "react-icons/go"; import ModalLayout from "@/_common/ModalLayout"; +import { useAuthorCheckStore } from "@/_store/tastingDetailStore"; import { cn } from "@/_utils/commons"; -import { GoChevronLeft } from "react-icons/go"; import UserReport from "./UserReport"; -import { useState } from "react"; -import Image from "next/image"; -import clsx from "clsx"; -import { useAuthorCheckStore } from "@/_store/tastingDetailStore"; interface IUserHeader { title: string; diff --git a/src/_components/user/UserProfileContent.tsx b/src/_components/user/UserProfileContent.tsx index 7ab925d3..d0635a2d 100644 --- a/src/_components/user/UserProfileContent.tsx +++ b/src/_components/user/UserProfileContent.tsx @@ -1,14 +1,14 @@ +import { useInfiniteQuery } from "@tanstack/react-query"; +import { useCallback, useMemo } from "react"; +import React from "react"; +import { useCookies } from "react-cookie"; +import { fetchUserContent } from "@/app/api/user/fetchUserContent"; import LifeThumbnail from "@/_components/life/LifeThumbnail"; -import NoteThumbnail from "@/_components/tasting-note/NoteThumbnail"; -import LifeListSkeletonList from "@/_components/share/life/SkeletonUIForLifeList"; import SkeletomUIForList from "@/_components/share/SkeletonUIForList"; import SwipeableTabView from "@/_components/share/SwipeableTabView"; -import { useCallback, useMemo } from "react"; -import React from "react"; +import LifeListSkeletonList from "@/_components/share/life/SkeletonUIForLifeList"; +import NoteThumbnail from "@/_components/tasting-note/NoteThumbnail"; import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; -import { useInfiniteQuery } from "@tanstack/react-query"; -import { fetchUserContent } from "@/app/api/user/fetchUserContent"; -import { useCookies } from "react-cookie"; interface UserProfileContentProps { activeTabIndex: number; diff --git a/src/_components/user/UserReport.tsx b/src/_components/user/UserReport.tsx index 4036cc8a..6c7369c9 100644 --- a/src/_components/user/UserReport.tsx +++ b/src/_components/user/UserReport.tsx @@ -1,11 +1,11 @@ "use client"; -import Button from "@/_common/ui/Button"; -import { useReportStore } from "@/_store/useReportStore"; -import { getUserProfile } from "@/app/api/user/getUserProfile"; import { useParams, useRouter } from "next/navigation"; import { useState, useEffect } from "react"; import { toast } from "react-toastify"; +import { getUserProfile } from "@/app/api/user/getUserProfile"; +import Button from "@/_common/ui/Button"; +import { useReportStore } from "@/_store/useReportStore"; interface ReportModalContentProps { handleModalClose: () => void; diff --git a/src/_lib/Provider/QueryProvider.tsx b/src/_lib/Provider/QueryProvider.tsx index 17bba5a5..b45be2c4 100644 --- a/src/_lib/Provider/QueryProvider.tsx +++ b/src/_lib/Provider/QueryProvider.tsx @@ -1,8 +1,8 @@ "use client"; -import { ReactNode } from "react"; import { QueryClientProvider, QueryClient } from "@tanstack/react-query"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; +import { ReactNode } from "react"; interface IQueryProvider { children: ReactNode; diff --git a/src/_lib/Provider/ToastProvider.tsx b/src/_lib/Provider/ToastProvider.tsx index dd211390..d3790f09 100644 --- a/src/_lib/Provider/ToastProvider.tsx +++ b/src/_lib/Provider/ToastProvider.tsx @@ -1,9 +1,11 @@ "use client"; -import { cn } from "@/_utils/commons"; import { usePathname } from "next/navigation"; import { Slide, ToastContainer, Zoom } from "react-toastify"; -import "react-toastify/dist/ReactToastify.css"; // Make sure you import default styles +import "react-toastify/dist/ReactToastify.css"; +import { cn } from "@/_utils/commons"; + +// Make sure you import default styles interface IToastProvider { children: React.ReactNode; diff --git a/src/_store/memberStore.ts b/src/_store/memberStore.ts index d9efe953..4188103b 100644 --- a/src/_store/memberStore.ts +++ b/src/_store/memberStore.ts @@ -1,5 +1,5 @@ -import { IMyInfo } from "@/_types"; import { create } from "zustand"; +import { IMyInfo } from "@/_types"; interface MemberState { memberInfo: IMyInfo | null; diff --git a/src/_store/replyComponentStore.ts b/src/_store/replyComponentStore.ts index 46344e2a..763d2dd8 100644 --- a/src/_store/replyComponentStore.ts +++ b/src/_store/replyComponentStore.ts @@ -1,5 +1,5 @@ -import { IComment } from "@/_types"; import { create } from "zustand"; +import { IComment } from "@/_types"; interface ReplyState { isOpen: boolean; diff --git a/src/_store/useTastingNoteStore.ts b/src/_store/useTastingNoteStore.ts index 6f3feee2..2a5dc9df 100644 --- a/src/_store/useTastingNoteStore.ts +++ b/src/_store/useTastingNoteStore.ts @@ -1,6 +1,6 @@ -import { ITastingNoteRequest } from "@/_types"; import { create } from "zustand"; import { persist } from "zustand/middleware"; +import { ITastingNoteRequest } from "@/_types"; interface TastingNoteState { tastingNoteRequest: ITastingNoteRequest | null; diff --git a/src/_store/volumePriceStore.ts b/src/_store/volumePriceStore.ts index 5a3d8065..8a65ad85 100644 --- a/src/_store/volumePriceStore.ts +++ b/src/_store/volumePriceStore.ts @@ -1,5 +1,5 @@ -import { IVolumePriceDetails } from "@/_types/tasting-note/officialData"; import { create } from "zustand"; +import { IVolumePriceDetails } from "@/_types/tasting-note/officialData"; interface VolumePriceStore { volumePriceDetails: IVolumePriceDetails[]; diff --git a/src/_utils/hooks/useFollow.ts b/src/_utils/hooks/useFollow.ts index 716a3a04..e19e71b3 100644 --- a/src/_utils/hooks/useFollow.ts +++ b/src/_utils/hooks/useFollow.ts @@ -1,9 +1,9 @@ -import { IPaginatedData } from "@/_types"; -import { RecommendedUser } from "@/_types/user/recommendedUser"; -import { deleteFollower } from "@/app/api/user/follow/deleteFollower"; -import { followUser } from "@/app/api/user/follow/followUser"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { toast } from "react-toastify"; +import { deleteFollower } from "@/app/api/user/follow/deleteFollower"; +import { followUser } from "@/app/api/user/follow/followUser"; +import { RecommendedUser } from "@/_types/user/recommendedUser"; +import { IPaginatedData } from "@/_types"; export function useProfileFollow( userId: string, diff --git a/src/_utils/hooks/useTastingNoteDataForEdit.ts b/src/_utils/hooks/useTastingNoteDataForEdit.ts index 32be5e65..4806f824 100644 --- a/src/_utils/hooks/useTastingNoteDataForEdit.ts +++ b/src/_utils/hooks/useTastingNoteDataForEdit.ts @@ -1,11 +1,11 @@ -import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; -import { ITastingNoteWriteRequest } from "@/_types"; -import { IAlcoholType } from "@/_types/tasting-note/officialData"; -import { getAlcoholType } from "@/app/api/common/getAlcoholType"; -import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; import { useQuery } from "@tanstack/react-query"; import { useEffect, useMemo } from "react"; import { useCookies } from "react-cookie"; +import { getAlcoholType } from "@/app/api/common/getAlcoholType"; +import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; +import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; +import { IAlcoholType } from "@/_types/tasting-note/officialData"; +import { ITastingNoteWriteRequest } from "@/_types"; export default function useTastingNoteDataForEdit(id: number) { const { setTastingNoteRequest, setImageUrlList } = useTastingNoteStore(); diff --git a/src/_utils/hooks/useTraditionalLiquorList.ts b/src/_utils/hooks/useTraditionalLiquorList.ts index e7de8a60..5919b980 100644 --- a/src/_utils/hooks/useTraditionalLiquorList.ts +++ b/src/_utils/hooks/useTraditionalLiquorList.ts @@ -1,9 +1,9 @@ import { useQuery } from "@tanstack/react-query"; -import { IApiResponse } from "@/_types"; -import { IResponseTranditionalLiquor } from "@/_types/tasting-note/officialData"; -import getTraditionalLiquor from "@/app/api/tasting-note/getTraditionalLiquor"; import { useEffect } from "react"; +import getTraditionalLiquor from "@/app/api/tasting-note/getTraditionalLiquor"; import useVolumePriceStore from "@/_store/volumePriceStore"; +import { IResponseTranditionalLiquor } from "@/_types/tasting-note/officialData"; +import { IApiResponse } from "@/_types"; export default function useTraditionalLiquorList(id: number) { const { setVolumePriceDetails } = useVolumePriceStore((state) => ({ diff --git a/src/_utils/time.ts b/src/_utils/time.ts index 0f4c8826..b8be2429 100644 --- a/src/_utils/time.ts +++ b/src/_utils/time.ts @@ -1,10 +1,10 @@ // date.js import dayjs from "dayjs"; import "dayjs/locale/ko"; +import "dayjs/locale/ko"; import relativeTime from "dayjs/plugin/relativeTime"; -import utc from "dayjs/plugin/utc"; import timezone from "dayjs/plugin/timezone"; -import "dayjs/locale/ko"; +import utc from "dayjs/plugin/utc"; dayjs.extend(utc); dayjs.extend(relativeTime); diff --git a/src/app/(view)/(auth)/login/oauth2/code/google/page.tsx b/src/app/(view)/(auth)/login/oauth2/code/google/page.tsx index 8c0de326..cda698eb 100644 --- a/src/app/(view)/(auth)/login/oauth2/code/google/page.tsx +++ b/src/app/(view)/(auth)/login/oauth2/code/google/page.tsx @@ -1,12 +1,12 @@ "use client"; -import Loading from "@/_common/Loading"; -import { useRegisterStore } from "@/_store/register"; -import { instance } from "@/app/api/axios"; -import requests from "@/app/api/requests"; import { useRouter, useSearchParams } from "next/navigation"; import { Suspense, useEffect } from "react"; import { useCookies } from "react-cookie"; +import { instance } from "@/app/api/axios"; +import requests from "@/app/api/requests"; +import Loading from "@/_common/Loading"; +import { useRegisterStore } from "@/_store/register"; function GoogleLoginHandlerComponent() { const { setEmail, setProvider, setProviderId } = useRegisterStore(); diff --git a/src/app/(view)/(auth)/register/details/page.tsx b/src/app/(view)/(auth)/register/details/page.tsx index 5cc1b634..2047ccf0 100644 --- a/src/app/(view)/(auth)/register/details/page.tsx +++ b/src/app/(view)/(auth)/register/details/page.tsx @@ -1,20 +1,20 @@ "use client"; -import BottomButton from "@/_common/BottomButton"; -import ConfirmModal from "@/_common/ConfirmModal"; -import TopHeader from "@/_common/TopHeader"; -import DetailsText from "@/_components/auth/DetailsText"; -import GenderForm from "@/_components/auth/GenderForm"; -import PreferredAlcoholForm from "@/_components/auth/PreferredAlcoholForm"; -import RegisterConfirmModal from "@/_components/auth/RegisterConfirmModal"; -import { useRegisterStore } from "@/_store/register"; -import { instance } from "@/app/api/axios"; -import requests from "@/app/api/requests"; import { AxiosError } from "axios"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { useCookies } from "react-cookie"; import { toast } from "react-toastify"; +import { instance } from "@/app/api/axios"; +import requests from "@/app/api/requests"; +import DetailsText from "@/_components/auth/DetailsText"; +import GenderForm from "@/_components/auth/GenderForm"; +import PreferredAlcoholForm from "@/_components/auth/PreferredAlcoholForm"; +import RegisterConfirmModal from "@/_components/auth/RegisterConfirmModal"; +import BottomButton from "@/_common/BottomButton"; +import ConfirmModal from "@/_common/ConfirmModal"; +import TopHeader from "@/_common/TopHeader"; +import { useRegisterStore } from "@/_store/register"; export default function Page() { const registerStore = useRegisterStore(); diff --git a/src/app/(view)/(auth)/register/document/[id]/page.tsx b/src/app/(view)/(auth)/register/document/[id]/page.tsx index c9228efa..edf0016b 100644 --- a/src/app/(view)/(auth)/register/document/[id]/page.tsx +++ b/src/app/(view)/(auth)/register/document/[id]/page.tsx @@ -1,10 +1,10 @@ "use client"; import { useQuery } from "@tanstack/react-query"; -import { useParams } from "next/navigation"; -import TopHeader from "@/_common/TopHeader"; import axios from "axios"; +import { useParams } from "next/navigation"; import { Fragment } from "react"; +import TopHeader from "@/_common/TopHeader"; export default function Page() { const { id } = useParams(); diff --git a/src/app/(view)/(main)/notification/page.tsx b/src/app/(view)/(main)/notification/page.tsx index cd3ca033..5e08f4af 100644 --- a/src/app/(view)/(main)/notification/page.tsx +++ b/src/app/(view)/(main)/notification/page.tsx @@ -1,14 +1,14 @@ "use client"; -import Loading from "@/_common/Loading"; +import Image from "next/image"; +import { useCallback, useState } from "react"; +import { toast } from "react-toastify"; import NotificationDeleteAll from "@/_components/notification/NotificationDeleteAllModal"; import NotificationEditModal from "@/_components/notification/NotificationEditModal"; import NotificationList from "@/_components/notification/NotificationList"; import NotificationTabButton from "@/_components/notification/NotificationTabButton"; import HeaderWithButton from "@/_components/share/life/HeaderWithButton"; -import Image from "next/image"; -import { useCallback, useState } from "react"; -import { toast } from "react-toastify"; +import Loading from "@/_common/Loading"; import { useDeleteAllNotifications, useDeleteNotification, diff --git a/src/app/(view)/(main)/report/[id]/page.tsx b/src/app/(view)/(main)/report/[id]/page.tsx index 60227efd..1fd0b616 100644 --- a/src/app/(view)/(main)/report/[id]/page.tsx +++ b/src/app/(view)/(main)/report/[id]/page.tsx @@ -1,10 +1,10 @@ "use client"; -import ReportForm from "@/_components/report/ReportForm"; -import useCommentsModalStore from "@/_store/tastingCommentModal"; -import postReport from "@/app/api/report/postReport"; import { useRouter, useSearchParams } from "next/navigation"; import { toast } from "react-toastify"; +import postReport from "@/app/api/report/postReport"; +import ReportForm from "@/_components/report/ReportForm"; +import useCommentsModalStore from "@/_store/tastingCommentModal"; export default function Page({ params: { id: reportId }, diff --git a/src/app/(view)/(main)/search/page.tsx b/src/app/(view)/(main)/search/page.tsx index 042cb85f..1d985f71 100644 --- a/src/app/(view)/(main)/search/page.tsx +++ b/src/app/(view)/(main)/search/page.tsx @@ -1,18 +1,18 @@ "use client"; -import SearchData from "@/_components/tasting-note/search/SearchData"; -import { useDebounce } from "@/_utils/useDebounce"; import { useEffect, useState, useCallback, useMemo } from "react"; import { getRelatedSearchData } from "@/app/api/tasting-note/getRelatedSearchData"; import AlcoholSlider from "@/_components/search/AlcoholSlider"; -import Navigation from "@/_common/Navigation"; -import SearchHeader from "@/_components/search/SearchHeader"; -import RelatedSearchResult from "@/_components/search/RelatedSearchResult"; +import AlcoholTypeData from "@/_components/search/AlcoholTypeData"; import RecentSearchList from "@/_components/search/RecentSearchList"; +import RelatedSearchResult from "@/_components/search/RelatedSearchResult"; import ScrollUpFloatingBtn from "@/_components/search/ScrollUpFloatingBtn"; -import AlcoholTypeData from "@/_components/search/AlcoholTypeData"; +import SearchHeader from "@/_components/search/SearchHeader"; import OfficialDataSearchResult from "@/_components/tasting-note/search/OfficalDataSearchResult"; +import SearchData from "@/_components/tasting-note/search/SearchData"; +import Navigation from "@/_common/Navigation"; import { IAlcoholTypeTab } from "@/_types/search/alcoholTypeTab"; +import { useDebounce } from "@/_utils/useDebounce"; export default function Page() { const [searchQuery, setSearchQuery] = useState(""); diff --git a/src/app/(view)/(main)/share/brewery/[id]/page.tsx b/src/app/(view)/(main)/share/brewery/[id]/page.tsx index cb77c4ef..7879333a 100644 --- a/src/app/(view)/(main)/share/brewery/[id]/page.tsx +++ b/src/app/(view)/(main)/share/brewery/[id]/page.tsx @@ -1,12 +1,12 @@ "use client"; -import Loading from "@/_common/Loading"; -import AlcoholSearchDataThumbnail from "@/_components/search/AlcoholSearchDataThumbnailThumbnail"; -import HeaderWithButton from "@/_components/share/life/HeaderWithButton"; -import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; import { useInfiniteQuery } from "@tanstack/react-query"; import axios from "axios"; import { useCookies } from "react-cookie"; +import AlcoholSearchDataThumbnail from "@/_components/search/AlcoholSearchDataThumbnailThumbnail"; +import HeaderWithButton from "@/_components/share/life/HeaderWithButton"; +import Loading from "@/_common/Loading"; +import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; export default function Page() { const [cookies, setCookie] = useCookies(["accessToken"]); diff --git a/src/app/(view)/(main)/share/life/(list)/layout.tsx b/src/app/(view)/(main)/share/life/(list)/layout.tsx index a4b57d04..72b510c6 100644 --- a/src/app/(view)/(main)/share/life/(list)/layout.tsx +++ b/src/app/(view)/(main)/share/life/(list)/layout.tsx @@ -1,8 +1,8 @@ "use client"; +import { createContext, ReactNode, useContext, useState } from "react"; import ShareLayout from "@/_components/share/ShareLayout"; import { ILifeList } from "@/_types/share"; -import { createContext, ReactNode, useContext, useState } from "react"; interface LifeListContextProps { lifeListData: ILifeList[] | null; diff --git a/src/app/(view)/(main)/share/life/(list)/page.tsx b/src/app/(view)/(main)/share/life/(list)/page.tsx index 31f8efa3..91257fbb 100644 --- a/src/app/(view)/(main)/share/life/(list)/page.tsx +++ b/src/app/(view)/(main)/share/life/(list)/page.tsx @@ -1,12 +1,12 @@ "use client"; +import { useInfiniteQuery } from "@tanstack/react-query"; +import { getLifeList } from "@/app/api/life/getLifeList"; import LifeThumbnail from "@/_components/life/LifeThumbnail"; import Spinner from "@/_components/search/Spinner"; import ServerToast from "@/_components/share/error/ServerToast"; import LifeListSkeletonList from "@/_components/share/life/SkeletonUIForLifeList"; import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; -import { getLifeList } from "@/app/api/life/getLifeList"; -import { useInfiniteQuery } from "@tanstack/react-query"; export default function Lifes() { const { diff --git a/src/app/(view)/(main)/share/life/[id]/(parallel)/@life/page.tsx b/src/app/(view)/(main)/share/life/[id]/(parallel)/@life/page.tsx index 995d11ef..8ccbda3e 100644 --- a/src/app/(view)/(main)/share/life/[id]/(parallel)/@life/page.tsx +++ b/src/app/(view)/(main)/share/life/[id]/(parallel)/@life/page.tsx @@ -1,23 +1,24 @@ "use client"; -import WarningModal from "@/_components/notification/WarningModal"; -import CommentFooter from "@/_components/reaction/CommentFooter"; -import EditModal from "@/_components/share/EditModal"; -import HeaderWithButton from "@/_components/share/life/HeaderWithButton"; -import LifeViewer from "@/_components/share/life/LifeViewer"; -import getMyInfo from "@/app/api/auth/getMyInfo"; -import { deleteDailyLife } from "@/app/api/life/deleteDailyLife"; -import { getLifeDetail } from "@/app/api/life/getLifeDetail"; + import { useQueries } from "@tanstack/react-query"; import { useRouter, useSearchParams } from "next/navigation"; import { useEffect, useState, useCallback } from "react"; import { useCookies } from "react-cookie"; import { toast } from "react-toastify"; -import { Inputs } from "../../../write/page"; -import { SearchParamProps } from "@/_types"; -import { useAuthorCheckStore } from "@/_store/tastingDetailStore"; -import useMemberStore from "@/_store/memberStore"; +import getMyInfo from "@/app/api/auth/getMyInfo"; +import { deleteDailyLife } from "@/app/api/life/deleteDailyLife"; +import { getLifeDetail } from "@/app/api/life/getLifeDetail"; +import WarningModal from "@/_components/notification/WarningModal"; +import CommentFooter from "@/_components/reaction/CommentFooter"; import VisitorsModalContent from "@/_components/report/VisitorsModalContent"; +import EditModal from "@/_components/share/EditModal"; +import HeaderWithButton from "@/_components/share/life/HeaderWithButton"; +import LifeViewer from "@/_components/share/life/LifeViewer"; import ModalLayout from "@/_common/ModalLayout"; +import useMemberStore from "@/_store/memberStore"; +import { useAuthorCheckStore } from "@/_store/tastingDetailStore"; +import { SearchParamProps } from "@/_types"; +import { Inputs } from "../../../write/page"; function LifeDetailPage({ params }: SearchParamProps) { const router = useRouter(); diff --git a/src/app/(view)/(main)/share/life/[id]/(parallel)/layout.tsx b/src/app/(view)/(main)/share/life/[id]/(parallel)/layout.tsx index 38d17a57..77490584 100644 --- a/src/app/(view)/(main)/share/life/[id]/(parallel)/layout.tsx +++ b/src/app/(view)/(main)/share/life/[id]/(parallel)/layout.tsx @@ -1,6 +1,7 @@ "use client"; -import { useCommentStore } from "@/_store/tastingDetailStore"; + import React, { ReactNode } from "react"; +import { useCommentStore } from "@/_store/tastingDetailStore"; export default function LifeDetailLayout({ // children, diff --git a/src/app/(view)/(main)/share/life/[id]/comments/page.tsx b/src/app/(view)/(main)/share/life/[id]/comments/page.tsx index bf18bba5..ae525c34 100644 --- a/src/app/(view)/(main)/share/life/[id]/comments/page.tsx +++ b/src/app/(view)/(main)/share/life/[id]/comments/page.tsx @@ -1,5 +1,5 @@ -import ModifyBody from "@/_components/share/detail/comments/ModifyBody"; import Image from "next/image"; +import ModifyBody from "@/_components/share/detail/comments/ModifyBody"; export default function CommentsModifyComments() { return ( diff --git a/src/app/(view)/(main)/share/life/write/page.tsx b/src/app/(view)/(main)/share/life/write/page.tsx index f4d0213d..490e7384 100644 --- a/src/app/(view)/(main)/share/life/write/page.tsx +++ b/src/app/(view)/(main)/share/life/write/page.tsx @@ -1,22 +1,23 @@ "use client"; -import Checkbox from "@/_common/Checkbox"; -import HeaderWithButton from "@/_components/share/life/HeaderWithButton"; -import { GoChevronRight } from "react-icons/go"; -import { Controller, useForm } from "react-hook-form"; + +import axios from "axios"; import Image from "next/image"; -import { cn } from "@/_utils/commons"; +import { useRouter, useSearchParams } from "next/navigation"; import { MouseEvent, useEffect, useState, useCallback, Suspense } from "react"; -import { IoClose } from "react-icons/io5"; -import ImageIcon from "@/icons/image_icon.svg"; -import Modal from "@/_common/Modal"; -import { formInstance } from "@/app/api/axios"; import { useCookies } from "react-cookie"; +import { Controller, useForm } from "react-hook-form"; +import { GoChevronRight } from "react-icons/go"; +import { IoClose } from "react-icons/io5"; import { toast } from "react-toastify"; -import axios from "axios"; -import { useRouter, useSearchParams } from "next/navigation"; +import { formInstance } from "@/app/api/axios"; import { urlToFile } from "@/app/api/life/urlToFile"; +import HeaderWithButton from "@/_components/share/life/HeaderWithButton"; +import Checkbox from "@/_common/Checkbox"; import Loading from "@/_common/Loading"; +import Modal from "@/_common/Modal"; +import { cn } from "@/_utils/commons"; import { resizeImage } from "@/_utils/resizeImage"; +import ImageIcon from "@/icons/image_icon.svg"; export interface Inputs { title: string; diff --git a/src/app/(view)/(main)/share/liquor/[id]/filter/page.tsx b/src/app/(view)/(main)/share/liquor/[id]/filter/page.tsx index 039e6a26..5e62754a 100644 --- a/src/app/(view)/(main)/share/liquor/[id]/filter/page.tsx +++ b/src/app/(view)/(main)/share/liquor/[id]/filter/page.tsx @@ -1,7 +1,7 @@ -import { SearchParamProps } from "@/_types"; -import ServerToast from "@/_components/share/error/ServerToast"; -import ShareNoteForTraditionalLiquorLayout from "@/_components/share/detail/ShareNoteForTraditionalLiquorLayout"; import ShareNoteForTraditionalLiquorBody from "@/_components/share/detail/ShareNoteForTraditionalLiquorBody"; +import ShareNoteForTraditionalLiquorLayout from "@/_components/share/detail/ShareNoteForTraditionalLiquorLayout"; +import ServerToast from "@/_components/share/error/ServerToast"; +import { SearchParamProps } from "@/_types"; export default function NoteFilterPage({ params }: SearchParamProps) { const numberTypeId = Number(params.id); diff --git a/src/app/(view)/(main)/share/liquor/[id]/page.tsx b/src/app/(view)/(main)/share/liquor/[id]/page.tsx index 38354b02..464c9045 100644 --- a/src/app/(view)/(main)/share/liquor/[id]/page.tsx +++ b/src/app/(view)/(main)/share/liquor/[id]/page.tsx @@ -1,23 +1,23 @@ +import clsx from "clsx"; +import Image from "next/image"; +import { Fragment } from "react"; +import { fetchLiquor } from "@/app/api/getTraditioanlLiquorList"; +import getTraditionalLiquor from "@/app/api/tasting-note/getTraditionalLiquor"; +import Separator from "@/_components/share/Separator"; import MoonRating from "@/_components/share/detail/MoonRating"; import ShareAboutAlcoholReview from "@/_components/share/detail/ShareAboutAlcoholReview"; import ShareAboutTheSmellOfAlcohol from "@/_components/share/detail/ShareAboutTheSmellOfAlcohol"; import ShareTraditionalLiquor from "@/_components/share/detail/ShareTraditionalLiquor"; import TraditionalLiquorBackground from "@/_components/share/detail/TraditionalLiquorBackground"; +import TraditionalLiquorCapacityCell from "@/_components/share/detail/TraditionalLiquorCapacityCell"; +import TraditionalLiquorDetailPrice from "@/_components/share/detail/TraditionalLiquorDetailPrice"; import ServerToast from "@/_components/share/error/ServerToast"; -import Separator from "@/_components/share/Separator"; import RadarChart from "@/_components/tasting-note/write/HexagonChart"; -import { SearchParamProps } from "@/_types"; import { DrinkApiResponse } from "@/_types/tasting-note/drink"; -import { fetchLiquor } from "@/app/api/getTraditioanlLiquorList"; -import getTraditionalLiquor from "@/app/api/tasting-note/getTraditionalLiquor"; -import clsx from "clsx"; -import Image from "next/image"; -import { Fragment } from "react"; -import ImageRouteBackButton from "./_component/ImageRouteBackButton"; -import TraditionalLiquorCapacityCell from "@/_components/share/detail/TraditionalLiquorCapacityCell"; -import TraditionalLiquorDetailPrice from "@/_components/share/detail/TraditionalLiquorDetailPrice"; +import { SearchParamProps } from "@/_types"; import ClientRadarChart from "./_component/ClientRadarChart"; import FilteringRouteButton from "./_component/FilteringRouteButton"; +import ImageRouteBackButton from "./_component/ImageRouteBackButton"; export async function generateStaticParams() { const { result } = await fetchLiquor(); diff --git a/src/app/(view)/(main)/share/note/(list)/layout.tsx b/src/app/(view)/(main)/share/note/(list)/layout.tsx index ec43e96f..90651664 100644 --- a/src/app/(view)/(main)/share/note/(list)/layout.tsx +++ b/src/app/(view)/(main)/share/note/(list)/layout.tsx @@ -1,8 +1,8 @@ "use client"; +import { createContext, ReactNode, useContext, useState } from "react"; import ShareLayout from "@/_components/share/ShareLayout"; import { ITastingNoteResponse } from "@/_types"; -import { createContext, ReactNode, useContext, useState } from "react"; interface TastingNoteContextProps { tastingNoteData: ITastingNoteResponse | null; diff --git a/src/app/(view)/(main)/share/note/(list)/page.tsx b/src/app/(view)/(main)/share/note/(list)/page.tsx index d93ac98f..98961da0 100644 --- a/src/app/(view)/(main)/share/note/(list)/page.tsx +++ b/src/app/(view)/(main)/share/note/(list)/page.tsx @@ -1,12 +1,12 @@ "use client"; -import NoteThumbnail from "@/_components/tasting-note/NoteThumbnail"; +import { useInfiniteQuery } from "@tanstack/react-query"; +import getNoteList from "@/app/api/tasting-note/getNoteList"; import Spinner from "@/_components/search/Spinner"; -import ServerToast from "@/_components/share/error/ServerToast"; import SkeletomUIForList from "@/_components/share/SkeletonUIForList"; +import ServerToast from "@/_components/share/error/ServerToast"; +import NoteThumbnail from "@/_components/tasting-note/NoteThumbnail"; import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; -import getNoteList from "@/app/api/tasting-note/getNoteList"; -import { useInfiniteQuery } from "@tanstack/react-query"; export default function Notes() { const { diff --git a/src/app/(view)/(main)/share/note/[id]/(parallel)/@comments/page.tsx b/src/app/(view)/(main)/share/note/[id]/(parallel)/@comments/page.tsx index 99411b37..e949be00 100644 --- a/src/app/(view)/(main)/share/note/[id]/(parallel)/@comments/page.tsx +++ b/src/app/(view)/(main)/share/note/[id]/(parallel)/@comments/page.tsx @@ -1,10 +1,10 @@ +import Image from "next/image"; import Comments from "@/_components/share/detail/comments/Comments"; import CommentsBody from "@/_components/share/detail/comments/CommentsBody"; import CommentsHeader from "@/_components/share/detail/comments/CommentsHeader"; import CommentsPage from "@/_components/share/detail/comments/CommentsPage"; import ServerToast from "@/_components/share/error/ServerToast"; import { SearchParamProps } from "@/_types"; -import Image from "next/image"; export default function CommentsPageServer({ params }: SearchParamProps) { const numberTypeId = Number(params.id); diff --git a/src/app/(view)/(main)/share/note/[id]/(parallel)/@note/page.tsx b/src/app/(view)/(main)/share/note/[id]/(parallel)/@note/page.tsx index 2b66f7d6..61413a16 100644 --- a/src/app/(view)/(main)/share/note/[id]/(parallel)/@note/page.tsx +++ b/src/app/(view)/(main)/share/note/[id]/(parallel)/@note/page.tsx @@ -2,6 +2,7 @@ import ShareHeader from "@/_components/share/detail/ShareHeader"; import ShareNoteDetailBody from "@/_components/share/detail/ShareNoteDetailBody"; import ServerToast from "@/_components/share/error/ServerToast"; import { SearchParamProps } from "@/_types"; + // import { redirect } from "next/navigation"; export default function NoteDetailPage({ params }: SearchParamProps) { diff --git a/src/app/(view)/(main)/share/note/[id]/(parallel)/layout.tsx b/src/app/(view)/(main)/share/note/[id]/(parallel)/layout.tsx index 77650118..b630d47d 100644 --- a/src/app/(view)/(main)/share/note/[id]/(parallel)/layout.tsx +++ b/src/app/(view)/(main)/share/note/[id]/(parallel)/layout.tsx @@ -1,8 +1,9 @@ "use client"; -import ShareHeader from "@/_components/share/detail/ShareHeader"; -import { useCommentStore } from "@/_store/tastingDetailStore"; + import clsx from "clsx"; import React, { ReactNode } from "react"; +import ShareHeader from "@/_components/share/detail/ShareHeader"; +import { useCommentStore } from "@/_store/tastingDetailStore"; export default function NoteDetailLayout({ // children, diff --git a/src/app/(view)/(main)/share/note/[id]/comments/page.tsx b/src/app/(view)/(main)/share/note/[id]/comments/page.tsx index bf18bba5..ae525c34 100644 --- a/src/app/(view)/(main)/share/note/[id]/comments/page.tsx +++ b/src/app/(view)/(main)/share/note/[id]/comments/page.tsx @@ -1,5 +1,5 @@ -import ModifyBody from "@/_components/share/detail/comments/ModifyBody"; import Image from "next/image"; +import ModifyBody from "@/_components/share/detail/comments/ModifyBody"; export default function CommentsModifyComments() { return ( diff --git a/src/app/(view)/(main)/share/note/[id]/edit/page.tsx b/src/app/(view)/(main)/share/note/[id]/edit/page.tsx index 66046d13..559c6ddc 100644 --- a/src/app/(view)/(main)/share/note/[id]/edit/page.tsx +++ b/src/app/(view)/(main)/share/note/[id]/edit/page.tsx @@ -1,7 +1,11 @@ "use client"; -import Loading from "@/_common/Loading"; -import TopHeader from "@/_common/TopHeader"; +import { useQuery } from "@tanstack/react-query"; +import { useSearchParams } from "next/navigation"; +import { Suspense, useEffect, useRef, useState } from "react"; +import { useCookies } from "react-cookie"; +import { getAlcoholType } from "@/app/api/common/getAlcoholType"; +import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; import ShareWriteTopHeader from "@/_components/share/ShareWriteTopHeader"; import CommentAndRatingForm from "@/_components/tasting-note/write/CommentAndRatingForm"; import FlavorForm from "@/_components/tasting-note/write/FlavorForm"; @@ -9,16 +13,12 @@ import OfficialBasicInformationForm from "@/_components/tasting-note/write/Offic import ScentForm from "@/_components/tasting-note/write/ScentForm"; import UnOfficialBasicInformationForm from "@/_components/tasting-note/write/UnOfficialBasicInformationForm"; import VisualAndTextureForm from "@/_components/tasting-note/write/VisualAndTextureForm"; +import Loading from "@/_common/Loading"; +import TopHeader from "@/_common/TopHeader"; import { useTastingNoteStore } from "@/_store/useTastingNoteStore"; -import { ITastingNoteWriteRequest } from "@/_types"; import { cn } from "@/_utils/commons"; import useTastingNoteDataForEdit from "@/_utils/hooks/useTastingNoteDataForEdit"; -import { getAlcoholType } from "@/app/api/common/getAlcoholType"; -import getNoteDetail from "@/app/api/tasting-note/getNoteDetail"; -import { useQuery } from "@tanstack/react-query"; -import { useSearchParams } from "next/navigation"; -import { Suspense, useEffect, useRef, useState } from "react"; -import { useCookies } from "react-cookie"; +import { ITastingNoteWriteRequest } from "@/_types"; interface IAlcoholType { id: number; diff --git a/src/app/(view)/(main)/share/note/search/page.tsx b/src/app/(view)/(main)/share/note/search/page.tsx index 78a7df40..a5753b94 100644 --- a/src/app/(view)/(main)/share/note/search/page.tsx +++ b/src/app/(view)/(main)/share/note/search/page.tsx @@ -1,14 +1,14 @@ "use client"; +import { useEffect, useState, useCallback, useMemo } from "react"; +import { getRelatedSearchData } from "@/app/api/tasting-note/getRelatedSearchData"; import RecentSearchList from "@/_components/search/RecentSearchList"; -import SearchData from "@/_components/tasting-note/search/SearchData"; -import OfficialDataSearchResult from "@/_components/tasting-note/search/OfficalDataSearchResult"; import RelatedSearchResult from "@/_components/search/RelatedSearchResult"; +import OfficialDataSearchResult from "@/_components/tasting-note/search/OfficalDataSearchResult"; +import SearchData from "@/_components/tasting-note/search/SearchData"; import TastingNoteSearchHeader from "@/_components/tasting-note/search/TastingNoteSearchHeader"; import TraditionalDrinkInformationComponent from "@/_components/tasting-note/search/TraditionalDrinkInformationComponent"; import { useDebounce } from "@/_utils/useDebounce"; -import { getRelatedSearchData } from "@/app/api/tasting-note/getRelatedSearchData"; -import { useEffect, useState, useCallback, useMemo } from "react"; export default function Page() { const [searchQuery, setSearchQuery] = useState(""); diff --git a/src/app/(view)/(main)/share/note/write/page.tsx b/src/app/(view)/(main)/share/note/write/page.tsx index 1eb5f0e1..ddc4bddc 100644 --- a/src/app/(view)/(main)/share/note/write/page.tsx +++ b/src/app/(view)/(main)/share/note/write/page.tsx @@ -1,7 +1,7 @@ "use client"; -import Loading from "@/_common/Loading"; -import TopHeader from "@/_common/TopHeader"; +import { useSearchParams } from "next/navigation"; +import { Suspense, useEffect, useRef, useState } from "react"; import ShareWriteTopHeader from "@/_components/share/ShareWriteTopHeader"; import CommentAndRatingForm from "@/_components/tasting-note/write/CommentAndRatingForm"; import FlavorForm from "@/_components/tasting-note/write/FlavorForm"; @@ -9,9 +9,9 @@ import OfficialBasicInformationForm from "@/_components/tasting-note/write/Offic import ScentForm from "@/_components/tasting-note/write/ScentForm"; import UnOfficialBasicInformationForm from "@/_components/tasting-note/write/UnOfficialBasicInformationForm"; import VisualAndTextureForm from "@/_components/tasting-note/write/VisualAndTextureForm"; +import Loading from "@/_common/Loading"; +import TopHeader from "@/_common/TopHeader"; import { cn } from "@/_utils/commons"; -import { useSearchParams } from "next/navigation"; -import { Suspense, useEffect, useRef, useState } from "react"; function WriteTastingNote() { const searchParams = useSearchParams(); diff --git a/src/app/(view)/(main)/shop/page.tsx b/src/app/(view)/(main)/shop/page.tsx index 64d2ce25..28ae7399 100644 --- a/src/app/(view)/(main)/shop/page.tsx +++ b/src/app/(view)/(main)/shop/page.tsx @@ -1,7 +1,7 @@ "use client"; -import ShopLayout from "@/_components/shop/ShopLayout"; import Image from "next/image"; +import ShopLayout from "@/_components/shop/ShopLayout"; export default function Notes() { return ( diff --git a/src/app/(view)/(main)/user/delete-account/page.tsx b/src/app/(view)/(main)/user/delete-account/page.tsx index 120f480e..6a065b6c 100644 --- a/src/app/(view)/(main)/user/delete-account/page.tsx +++ b/src/app/(view)/(main)/user/delete-account/page.tsx @@ -1,16 +1,16 @@ "use client"; -import BottomButton from "@/_common/BottomButton"; -import Checkbox from "@/_common/Checkbox"; -import ConfirmModal from "@/_common/ConfirmModal"; -import UserHeader from "@/_components/user/UserHeader"; -import { cn } from "@/_utils/commons"; -import { deleteUser } from "@/app/api/user/deleteUser"; import Image from "next/image"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; import { useCookies } from "react-cookie"; import { toast } from "react-toastify"; +import { deleteUser } from "@/app/api/user/deleteUser"; +import UserHeader from "@/_components/user/UserHeader"; +import BottomButton from "@/_common/BottomButton"; +import Checkbox from "@/_common/Checkbox"; +import ConfirmModal from "@/_common/ConfirmModal"; +import { cn } from "@/_utils/commons"; export default function Page() { const [cookies, setCookie, removeCookie] = useCookies(["accessToken"]); diff --git a/src/app/(view)/(main)/user/follow/[id]/page.tsx b/src/app/(view)/(main)/user/follow/[id]/page.tsx index c1d65830..d88d0f6d 100644 --- a/src/app/(view)/(main)/user/follow/[id]/page.tsx +++ b/src/app/(view)/(main)/user/follow/[id]/page.tsx @@ -1,25 +1,25 @@ "use client"; import { useInfiniteQuery, useQueries } from "@tanstack/react-query"; -import { getFollowee } from "@/app/api/user/follow/getFollowee"; -import UserHeader from "@/_components/user/UserHeader"; import { useRouter, useSearchParams } from "next/navigation"; +import { useCallback, useEffect, useMemo, useState } from "react"; +import getMyInfo from "@/app/api/auth/getMyInfo"; +import { getFollowee } from "@/app/api/user/follow/getFollowee"; +import { getFollower } from "@/app/api/user/follow/getFollower"; import { getUserProfile } from "@/app/api/user/getUserProfile"; import RecommendedUserList from "@/_components/follow/RecommendedUserList"; -import ServerToast from "@/_components/share/error/ServerToast"; -import { useCallback, useEffect, useMemo, useState } from "react"; +import UserListSkeleton from "@/_components/follow/UserListSkeleton"; +import BadgeInfoModal from "@/_components/share/BadgeInfoModal"; import SwipeableTabBar from "@/_components/share/SwipeableTabBar"; import SwipeableTabView from "@/_components/share/SwipeableTabView"; -import { getFollower } from "@/app/api/user/follow/getFollower"; -import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; -import BadgeInfoModal from "@/_components/share/BadgeInfoModal"; -import getMyInfo from "@/app/api/auth/getMyInfo"; -import UserListSkeleton from "@/_components/follow/UserListSkeleton"; +import ServerToast from "@/_components/share/error/ServerToast"; +import UserHeader from "@/_components/user/UserHeader"; import ConfirmModal from "@/_common/ConfirmModal"; -import { useDeleteFollow } from "@/_utils/hooks/useFollow"; +import Loading from "@/_common/Loading"; import useMemberStore from "@/_store/memberStore"; import { RecommendedUser } from "@/_types/user/recommendedUser"; -import Loading from "@/_common/Loading"; +import { useDeleteFollow } from "@/_utils/hooks/useFollow"; +import useInfiniteScroll from "@/_utils/hooks/useInfiniteScroll"; export default function FollowPage({ params: { id: userId }, diff --git a/src/app/(view)/(main)/user/my-info/page.tsx b/src/app/(view)/(main)/user/my-info/page.tsx index 4524d00e..229e52aa 100644 --- a/src/app/(view)/(main)/user/my-info/page.tsx +++ b/src/app/(view)/(main)/user/my-info/page.tsx @@ -1,14 +1,14 @@ "use client"; -import Loading from "@/_common/Loading"; -import UserHeader from "@/_components/user/UserHeader"; -import getMyInfo from "@/app/api/auth/getMyInfo"; import { useQuery } from "@tanstack/react-query"; -import { useState } from "react"; import { useRouter } from "next/navigation"; +import { useState } from "react"; +import getMyInfo from "@/app/api/auth/getMyInfo"; import EditMyInfo from "@/_components/user/EditMyInfo"; -import ConfirmModal from "@/_common/ConfirmModal"; import MyInfoBody from "@/_components/user/MyInfoBody"; +import UserHeader from "@/_components/user/UserHeader"; +import ConfirmModal from "@/_common/ConfirmModal"; +import Loading from "@/_common/Loading"; import { IMyInfo } from "@/_types"; export default function Page() { diff --git a/src/app/(view)/(main)/user/my-space/page.tsx b/src/app/(view)/(main)/user/my-space/page.tsx index 950035a6..c7e7610e 100644 --- a/src/app/(view)/(main)/user/my-space/page.tsx +++ b/src/app/(view)/(main)/user/my-space/page.tsx @@ -1,22 +1,21 @@ "use client"; -import Navigation from "@/_common/Navigation"; -import ServerToast from "@/_components/share/error/ServerToast"; -import SkeletonUIForUserProfile from "@/_components/share/SkeletonUIForUserProfile"; -import BadgeInfoModal from "@/_components/share/BadgeInfoModal"; -import MySpaceHeader from "@/_components/user/MySpaceHeader"; -import UserProfileHeader from "@/_components/user/UserProfileHeader"; -import UserProfileStats from "@/_components/user/UserProfileStats"; -import UserProfileContent from "@/_components/user/UserProfileContent"; -import SwipeableTabBar from "@/_components/share/SwipeableTabBar"; -import { IMySpace } from "@/_types/user/mySpaceData"; -import { getMySpace } from "@/app/api/user/getMySpace"; - import { useQuery } from "@tanstack/react-query"; import Image from "next/image"; import Link from "next/link"; import { useCallback, useState } from "react"; import { useCookies } from "react-cookie"; +import { getMySpace } from "@/app/api/user/getMySpace"; +import BadgeInfoModal from "@/_components/share/BadgeInfoModal"; +import SkeletonUIForUserProfile from "@/_components/share/SkeletonUIForUserProfile"; +import SwipeableTabBar from "@/_components/share/SwipeableTabBar"; +import ServerToast from "@/_components/share/error/ServerToast"; +import MySpaceHeader from "@/_components/user/MySpaceHeader"; +import UserProfileContent from "@/_components/user/UserProfileContent"; +import UserProfileHeader from "@/_components/user/UserProfileHeader"; +import UserProfileStats from "@/_components/user/UserProfileStats"; +import Navigation from "@/_common/Navigation"; +import { IMySpace } from "@/_types/user/mySpaceData"; export default function Page() { const [cookies] = useCookies(["accessToken"]); diff --git a/src/app/(view)/(main)/user/profile/[id]/page.tsx b/src/app/(view)/(main)/user/profile/[id]/page.tsx index 62f2af17..05de3f2e 100644 --- a/src/app/(view)/(main)/user/profile/[id]/page.tsx +++ b/src/app/(view)/(main)/user/profile/[id]/page.tsx @@ -1,21 +1,21 @@ "use client"; -import FollowButton from "@/_common/FollowButton"; -import UserHeader from "@/_components/user/UserHeader"; -import UserProfileHeader from "@/_components/user/UserProfileHeader"; -import UserProfileStats from "@/_components/user/UserProfileStats"; -import UserProfileContent from "@/_components/user/UserProfileContent"; -import SkeletonUIForUserProfile from "@/_components/share/SkeletonUIForUserProfile"; -import BadgeInfoModal from "@/_components/share/BadgeInfoModal"; -import { getUserProfile } from "@/app/api/user/getUserProfile"; import { useQueries, useQuery } from "@tanstack/react-query"; import { useRouter } from "next/navigation"; import { useState, useCallback, useEffect } from "react"; -import SwipeableTabBar from "@/_components/share/SwipeableTabBar"; -import { useProfileFollow } from "@/_utils/hooks/useFollow"; +import { toast } from "react-toastify"; import getMyInfo from "@/app/api/auth/getMyInfo"; +import { getUserProfile } from "@/app/api/user/getUserProfile"; +import BadgeInfoModal from "@/_components/share/BadgeInfoModal"; +import SkeletonUIForUserProfile from "@/_components/share/SkeletonUIForUserProfile"; +import SwipeableTabBar from "@/_components/share/SwipeableTabBar"; import ServerToast from "@/_components/share/error/ServerToast"; -import { toast } from "react-toastify"; +import UserHeader from "@/_components/user/UserHeader"; +import UserProfileContent from "@/_components/user/UserProfileContent"; +import UserProfileHeader from "@/_components/user/UserProfileHeader"; +import UserProfileStats from "@/_components/user/UserProfileStats"; +import FollowButton from "@/_common/FollowButton"; +import { useProfileFollow } from "@/_utils/hooks/useFollow"; export default function Page({ params: { id: userId }, diff --git a/src/app/(view)/(main)/user/recommendation/page.tsx b/src/app/(view)/(main)/user/recommendation/page.tsx index baee5050..beae3d34 100644 --- a/src/app/(view)/(main)/user/recommendation/page.tsx +++ b/src/app/(view)/(main)/user/recommendation/page.tsx @@ -1,24 +1,24 @@ "use client"; -import Loading from "@/_common/Loading"; -import FollowHeader from "@/_components/follow/FollowHeader"; -import RecommendedUserList from "@/_components/follow/RecommendedUserList"; -import { RecommendedUser } from "@/_types/user/recommendedUser"; -import { getUserRecommendation } from "@/app/api/user/getUserRecommendations"; import { useQuery } from "@tanstack/react-query"; -import { useCallback, useEffect, useState, useMemo } from "react"; -import { useRouter } from "next/navigation"; -import { useDebounce } from "@/_utils/useDebounce"; -import { getSearchUser } from "@/app/api/user/getSearchUser"; import Image from "next/image"; -import { IMyInfo } from "@/_types"; +import { useRouter } from "next/navigation"; +import { useCallback, useEffect, useState, useMemo } from "react"; import getMyInfo from "@/app/api/auth/getMyInfo"; +import { getSearchUser } from "@/app/api/user/getSearchUser"; +import { getUserRecommendation } from "@/app/api/user/getUserRecommendations"; +import FollowHeader from "@/_components/follow/FollowHeader"; +import RecommendedUserList from "@/_components/follow/RecommendedUserList"; +import UserListSkeleton from "@/_components/follow/UserListSkeleton"; +import BadgeInfoModal from "@/_components/share/BadgeInfoModal"; import ServerToast from "@/_components/share/error/ServerToast"; import SearchData from "@/_components/tasting-note/search/SearchData"; -import BadgeInfoModal from "@/_components/share/BadgeInfoModal"; -import UserListSkeleton from "@/_components/follow/UserListSkeleton"; -import { alcoholType } from "@/_config/alcoholType"; +import Loading from "@/_common/Loading"; import useMemberStore from "@/_store/memberStore"; +import { RecommendedUser } from "@/_types/user/recommendedUser"; +import { useDebounce } from "@/_utils/useDebounce"; +import { alcoholType } from "@/_config/alcoholType"; +import { IMyInfo } from "@/_types"; // Memoize constant values const IMAGE_BASE_PATH = process.env.NEXT_PUBLIC_IMAGE_BASE_PATH; diff --git a/src/app/api/life/getLifeDetail.ts b/src/app/api/life/getLifeDetail.ts index 5ec76bf3..83b9ff81 100644 --- a/src/app/api/life/getLifeDetail.ts +++ b/src/app/api/life/getLifeDetail.ts @@ -1,6 +1,6 @@ import axios from "axios"; -import { instance } from "../axios"; import { Cookies } from "react-cookie"; +import { instance } from "../axios"; export async function getLifeDetail({ id }: { id: number }) { const cookies = new Cookies(); diff --git a/src/app/api/notification/useNotifications.ts b/src/app/api/notification/useNotifications.ts index ce27df01..2b7e3e82 100644 --- a/src/app/api/notification/useNotifications.ts +++ b/src/app/api/notification/useNotifications.ts @@ -1,7 +1,7 @@ -import { INotificationSummary } from "@/_types/notification"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { EventSourcePolyfill } from "event-source-polyfill"; import nookies from "nookies"; +import { INotificationSummary } from "@/_types/notification"; import { instance } from "../axios"; /** diff --git a/src/app/api/tasting-note/deleteTastingNote.ts b/src/app/api/tasting-note/deleteTastingNote.ts index b75d8ca4..28a61355 100644 --- a/src/app/api/tasting-note/deleteTastingNote.ts +++ b/src/app/api/tasting-note/deleteTastingNote.ts @@ -1,5 +1,4 @@ // import { instance } from "../axios"; - import { useRouter } from "next/navigation"; import { useCookies } from "react-cookie"; import { toast } from "react-toastify"; diff --git a/src/app/api/tasting-note/getTraditionalLiquor.ts b/src/app/api/tasting-note/getTraditionalLiquor.ts index 854cdb4d..9e49bd5b 100644 --- a/src/app/api/tasting-note/getTraditionalLiquor.ts +++ b/src/app/api/tasting-note/getTraditionalLiquor.ts @@ -1,6 +1,6 @@ -import { IAlcoholDetailResponse } from "@/_types/share"; import axios from "axios"; import { Cookies } from "react-cookie"; +import { IAlcoholDetailResponse } from "@/_types/share"; export default async function getTraditionalLiquor({ alcoholicDrinksId, diff --git a/src/app/api/user/deleteUser.ts b/src/app/api/user/deleteUser.ts index ec324cc1..c8c1484d 100644 --- a/src/app/api/user/deleteUser.ts +++ b/src/app/api/user/deleteUser.ts @@ -1,6 +1,6 @@ +import { headers } from "next/headers"; import { instance } from "@/app/api/axios"; import requests from "../requests"; -import { headers } from "next/headers"; export async function deleteUser({ accessToken, diff --git a/src/app/api/user/getReportList.ts b/src/app/api/user/getReportList.ts index 7d831cf7..8139c6c1 100644 --- a/src/app/api/user/getReportList.ts +++ b/src/app/api/user/getReportList.ts @@ -1,5 +1,5 @@ -import { reportListDummyData } from "./../../../mocks/data"; import axios from "axios"; +import { reportListDummyData } from "./../../../mocks/data"; export async function getReportList() { try { diff --git a/src/app/api/user/getUserProfile.ts b/src/app/api/user/getUserProfile.ts index 522fc028..09e1a75d 100644 --- a/src/app/api/user/getUserProfile.ts +++ b/src/app/api/user/getUserProfile.ts @@ -1,5 +1,5 @@ -import { instance } from "../axios"; import { Cookies } from "react-cookie"; +import { instance } from "../axios"; export async function getUserProfile(id: string) { try { diff --git a/src/app/error.tsx b/src/app/error.tsx index 64c8db38..021c666a 100644 --- a/src/app/error.tsx +++ b/src/app/error.tsx @@ -1,4 +1,5 @@ "use client"; + import Image from "next/image"; import Link from "next/link"; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 6168843c..1221885e 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,16 +1,16 @@ -import NotificationProvider from "@/_components/notification/NotificationProvider"; -import { AuthProvider } from "@/_lib/Provider/AuthProvider"; -import QueryProvider from "@/_lib/Provider/QueryProvider"; -import ToastProvider from "@/_lib/Provider/ToastProvider"; +import { GoogleAnalytics, GoogleTagManager } from "@next/third-parties/google"; import type { Metadata, Viewport } from "next"; import localFont from "next/font/local"; -import "react-toastify/dist/ReactToastify.css"; -import "./globals.css"; import Script from "next/script"; -import { GoogleAnalytics, GoogleTagManager } from "@next/third-parties/google"; -import GTMRouteTracker from "@/_common/GTMRouteTracker"; import { Suspense } from "react"; +import "react-toastify/dist/ReactToastify.css"; +import NotificationProvider from "@/_components/notification/NotificationProvider"; +import GTMRouteTracker from "@/_common/GTMRouteTracker"; import Loading from "@/_common/Loading"; +import { AuthProvider } from "@/_lib/Provider/AuthProvider"; +import QueryProvider from "@/_lib/Provider/QueryProvider"; +import ToastProvider from "@/_lib/Provider/ToastProvider"; +import "./globals.css"; const pretendard = localFont({ src: "fonts/PretendardVariable.woff2",