From 888f9f837da8d29d99ddb797b416a4783841a9d5 Mon Sep 17 00:00:00 2001 From: guesung Date: Fri, 9 Aug 2024 13:30:48 +0900 Subject: [PATCH 01/45] =?UTF-8?q?=E2=9C=A8=20feat:=20CI=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20(Type,=20Lint=20=EC=B2=B4=ED=81=AC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 18 ++++++++++++++++++ package.json | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..e6ce0db0 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,18 @@ +name: 'CI' +on: + pull_request: + types: [opened, synchronize, reopened] +jobs: + ci: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Check typescript + run: yarn type:check + + - name: Check eslint + run: yarn lint \ No newline at end of file diff --git a/package.json b/package.json index a0409aeb..aff006ac 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "build": "next build", "start": "next start", "lint": "next lint", + "type:check": "tsc --noEmit", "format": "prettier --write --ignore-path .gitignore .", "make-sprite": "rm public/sprite/sprite.svg && svgstore -o public/sprite/sprite.svg public/sprite/icons/**/*.svg" }, @@ -54,4 +55,4 @@ "prettier-plugin-tailwindcss": "^0.4.1", "tailwindcss": "^3.3.3" } -} +} \ No newline at end of file From 56d106dcb243c399f19efd1986070522c9b99ccb Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 11:29:28 +0900 Subject: [PATCH 02/45] =?UTF-8?q?refactor:=20`yarn=20lint`=EB=A5=BC=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cr.yml | 2 +- README.md | 32 +++++++++---------- package.json | 2 +- src/app/(Sub)/menu/MenuListSection.tsx | 4 +-- src/app/globals.css | 11 ++++--- src/app/layout.tsx | 4 +-- src/components/Button/BottomFixedDiv.tsx | 2 +- .../ErrorBoundary/RejectedFallback.tsx | 2 +- src/components/Header/index.tsx | 2 +- src/components/Login/LoginSection.tsx | 7 ++-- src/components/Modal/BottomSheet.tsx | 2 +- src/components/Overlay/OverlayController.tsx | 10 ++---- src/components/Provider/HydrationProvider.tsx | 2 +- src/components/Provider/index.ts | 2 +- src/constants/env.ts | 2 +- src/hooks/useLaunchApp.ts | 2 +- 16 files changed, 41 insertions(+), 47 deletions(-) diff --git a/.github/workflows/cr.yml b/.github/workflows/cr.yml index 22b7cf52..8fc35c2b 100644 --- a/.github/workflows/cr.yml +++ b/.github/workflows/cr.yml @@ -16,4 +16,4 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - LANGUAGE: Korean \ No newline at end of file + LANGUAGE: Korean diff --git a/README.md b/README.md index 053014a5..30dde19e 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,37 @@ -   ---- +##   -*포토부스에서 고민하는 당신을 위한 포즈추천 서비스* +_포토부스에서 고민하는 당신을 위한 포즈추천 서비스_ -Website | Instagram | Github | Feedback +Website | Instagram | Github | Feedback
## 🪄 Introduce > 네컷사진 찍을 때면 늘 포즈가 고민되지 않나요?
-포즈피커가 포즈 고민을 해결해 드릴게요!
-미리 포즈 고민할 필요 없이, 찍기 직전에 빠르고 재밌게 포즈를 추천해 주는 포즈피커를 이용해 보세요! +> 포즈피커가 포즈 고민을 해결해 드릴게요!
+> 미리 포즈 고민할 필요 없이, 찍기 직전에 빠르고 재밌게 포즈를 추천해 주는 포즈피커를 이용해 보세요!

-*“빨리 빨리! 우리 무슨 포즈로 찍을래?”*
+_“빨리 빨리! 우리 무슨 포즈로 찍을래?”_
시간 없을 땐 **포즈픽**으로 빠르게 랜덤 포즈를 추천받아보세요.
🃏
-*“이미 있는 포즈는 시시해, 우리만의 특별한 포즈가 필요해!”*
+_“이미 있는 포즈는 시시해, 우리만의 특별한 포즈가 필요해!”_
**포즈톡**에서 뽑은 랜덤 제시어로 나만의 개성있는 포즈를 완성해보세요.
🎞
-*“또 어떤 포즈가 있을까? 우리 이 포즈로 찍어볼까?”*
+_“또 어떤 포즈가 있을까? 우리 이 포즈로 찍어볼까?”_
**포즈피드**에서 특정한 상황을 빛내줄 포즈를 찾고, 친구한테 공유해보세요.
@@ -44,10 +43,8 @@ ![18](https://github.com/dnd-side-project/dnd-9th-5-frontend/assets/75469131/7b4bfdb1-a8bf-4cde-b57c-c254fe221985) ![19](https://github.com/dnd-side-project/dnd-9th-5-frontend/assets/75469131/a3fc9896-5fc4-4612-949e-557f3f088815) -
- ## 🎞 Demo [PosePicker Demo Video](https://youtube.com/shorts/dP7VdyoieMs?si=hv7ou7y1iZwkc7m3) @@ -56,12 +53,12 @@ ## 🙌 Team -| Design | FrontEnd | BackEnd | -|:-:|:-:|:-:| -| ||| -| 이지영 | [seondal](https://github.com/seondal) | [olive-su](https://github.com/olive-su) | -| ||| -| 김수빈 | [guesung](https://github.com/guesung) | [leejw-lu](https://github.com/leejw-lu) | +| Design | FrontEnd | BackEnd | +| :----------------------------------------------------------------: | :----------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | +| | | | +| 이지영 | [seondal](https://github.com/seondal) | [olive-su](https://github.com/olive-su) | +| | | | +| 김수빈 | [guesung](https://github.com/guesung) | [leejw-lu](https://github.com/leejw-lu) |
@@ -72,6 +69,7 @@
## 📂 Folder Structure + > Next13의 App Rounting을 기반으로 하고있습니다. ``` diff --git a/package.json b/package.json index a82539db..66fd880d 100644 --- a/package.json +++ b/package.json @@ -53,4 +53,4 @@ "@tanstack/react-query-devtools": "^4.35.0", "svgstore-cli": "^2.0.1" } -} \ No newline at end of file +} diff --git a/src/app/(Sub)/menu/MenuListSection.tsx b/src/app/(Sub)/menu/MenuListSection.tsx index 5a3a3cc2..37c8179a 100644 --- a/src/app/(Sub)/menu/MenuListSection.tsx +++ b/src/app/(Sub)/menu/MenuListSection.tsx @@ -35,10 +35,10 @@ export default function MenuListSection() { )} {token && ( <> -
+
로그아웃
- + 탈퇴하기 diff --git a/src/app/globals.css b/src/app/globals.css index 16c27b6f..2524c824 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -41,30 +41,31 @@ body { } } - /* Font */ @font-face { font-family: 'Pretendard'; - src: url('https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff') format('woff'); + src: url('https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff') + format('woff'); font-weight: 400; font-style: normal; } @font-face { font-family: 'Pretendard'; - src: url('https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Medium.woff') format('woff'); + src: url('https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Medium.woff') + format('woff'); font-weight: 500; font-style: normal; } @font-face { font-family: 'Pretendard'; - src: url('https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Bold.woff') format('woff'); + src: url('https://cdn.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Bold.woff') + format('woff'); font-weight: 700; font-style: normal; } - /* Typography */ h1 { font-weight: 700; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 4e080b19..cd1a3794 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -16,8 +16,8 @@ export const metadata: Metadata = METADATA; export default function RootLayout({ children }: PropsWithChildren) { return ( - -
+ +
diff --git a/src/components/Button/BottomFixedDiv.tsx b/src/components/Button/BottomFixedDiv.tsx index 188829f4..52acd2c3 100644 --- a/src/components/Button/BottomFixedDiv.tsx +++ b/src/components/Button/BottomFixedDiv.tsx @@ -7,7 +7,7 @@ export function ButtonList({ children }: StrictPropsWithChildren) { export function BottomDiv({ children }: StrictPropsWithChildren) { return ( -
+
{children}
); diff --git a/src/components/ErrorBoundary/RejectedFallback.tsx b/src/components/ErrorBoundary/RejectedFallback.tsx index 82054274..4b0ecca1 100644 --- a/src/components/ErrorBoundary/RejectedFallback.tsx +++ b/src/components/ErrorBoundary/RejectedFallback.tsx @@ -17,7 +17,7 @@ export default function RejectedFallback({

페이지를 불러오는데 실패했습니다.

{error.message}

); } From f5318493f7ceee008f9a7680bab1a8c8f87ca562 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 11:58:27 +0900 Subject: [PATCH 10/45] =?UTF-8?q?refactor:=20isLottie=20->=20isLottiePlayi?= =?UTF-8?q?ng=EC=9C=BC=EB=A1=9C=20=EB=84=A4=EC=9D=B4=EB=B0=8D=EC=9D=84=20?= =?UTF-8?q?=EC=A7=81=EA=B4=80=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/pick/PickComponent.tsx | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/app/(Main)/pick/PickComponent.tsx b/src/app/(Main)/pick/PickComponent.tsx index 397b98da..dc658265 100644 --- a/src/app/(Main)/pick/PickComponent.tsx +++ b/src/app/(Main)/pick/PickComponent.tsx @@ -15,11 +15,8 @@ const DEFAULT_IMAGE = '/images/image-frame.png'; export default function PickComponent() { const [countState, setCountState] = useState(1); const [isRendered, setIsRendered] = useState(false); - const [isLottie, setIsLottie] = useState(true); - const { - refetch, - data - } = usePosePickQuery(countState); + const [isLottiePlaying, setIsLottiePlaying] = useState(true); + const { refetch, data } = usePosePickQuery(countState); const imageSrc = data?.poseInfo?.imageKey || DEFAULT_IMAGE; useEffect(() => { @@ -27,21 +24,27 @@ export default function PickComponent() { }, [countState]); useEffect(() => { - setTimeout(() => setIsLottie(false), 2200); + setTimeout(() => setIsLottiePlaying(false), 2200); }, []); const handlePickClick = () => { setIsRendered(false); refetch(); - setIsLottie(true); - setTimeout(() => setIsLottie(false), 900); + setIsLottiePlaying(true); + setTimeout(() => setIsLottiePlaying(false), 900); }; return ( <> - +
+ +
- {(isLottie || !isRendered) && ( + {(isLottiePlaying || !isRendered) && (
From f54894dc839bc0b7a864a3a3861600244d54df8c Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 11:59:24 +0900 Subject: [PATCH 11/45] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20isRendered=20=EC=83=81=ED=83=9C=EA=B0=92=EC=9D=84?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/pick/PickComponent.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/app/(Main)/pick/PickComponent.tsx b/src/app/(Main)/pick/PickComponent.tsx index dc658265..cfc75b8f 100644 --- a/src/app/(Main)/pick/PickComponent.tsx +++ b/src/app/(Main)/pick/PickComponent.tsx @@ -14,13 +14,12 @@ const DEFAULT_IMAGE = '/images/image-frame.png'; export default function PickComponent() { const [countState, setCountState] = useState(1); - const [isRendered, setIsRendered] = useState(false); const [isLottiePlaying, setIsLottiePlaying] = useState(true); const { refetch, data } = usePosePickQuery(countState); const imageSrc = data?.poseInfo?.imageKey || DEFAULT_IMAGE; useEffect(() => { - setIsRendered(true); + // setIsRendered(true); }, [countState]); useEffect(() => { @@ -28,7 +27,6 @@ export default function PickComponent() { }, []); const handlePickClick = () => { - setIsRendered(false); refetch(); setIsLottiePlaying(true); setTimeout(() => setIsLottiePlaying(false), 900); @@ -44,13 +42,13 @@ export default function PickComponent() { />
- {(isLottiePlaying || !isRendered) && ( + {isLottiePlaying && (
)}
- setIsRendered(true)} /> +
From 90c39f4fab4ba0ae7c22c105f3eaa7b09ef07d46 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 12:00:23 +0900 Subject: [PATCH 12/45] =?UTF-8?q?feat:=20toss/es-toolkit=EC=9D=84=20?= =?UTF-8?q?=EC=84=A4=EC=B9=98=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 66fd880d..89f9f08c 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@tanstack/react-query": "^4.32.6", "axios": "^1.4.0", "clsx": "^2.0.0", + "es-toolkit": "toss/es-toolkit", "eslint": "^8.46.0", "eslint-config-next": "^13.4.12", "framer-motion": "^10.15.0", @@ -33,6 +34,10 @@ "typescript": "5.1.6" }, "devDependencies": { + "@tanstack/react-query-devtools": "^4.35.0", + "@types/node": "20.4.5", + "@types/react": "18.2.17", + "@types/react-dom": "18.2.7", "@typescript-eslint/eslint-plugin": "^6.2.1", "@typescript-eslint/parser": "^6.2.1", "autoprefixer": "^10.4.14", @@ -46,11 +51,7 @@ "postcss": "^8.4.27", "prettier": "^3.0.0", "prettier-plugin-tailwindcss": "^0.4.1", - "tailwindcss": "^3.3.3", - "@types/node": "20.4.5", - "@types/react": "18.2.17", - "@types/react-dom": "18.2.7", - "@tanstack/react-query-devtools": "^4.35.0", - "svgstore-cli": "^2.0.1" + "svgstore-cli": "^2.0.1", + "tailwindcss": "^3.3.3" } } From 8a9cffbf2b03203742a882a74887c7c1d04a5c7e Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 12:01:43 +0900 Subject: [PATCH 13/45] =?UTF-8?q?refactor:=20delay=ED=95=A8=EC=88=98?= =?UTF-8?q?=EB=A5=BC=20=EC=B6=94=EA=B0=80=ED=95=A8=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=EC=8D=A8,=20=EC=A1=B0=EA=B8=88=20=EB=8D=94=20=EC=A7=81?= =?UTF-8?q?=EA=B4=80=EC=A0=81=EC=9C=BC=EB=A1=9C=20=ED=95=A8=EC=88=98?= =?UTF-8?q?=EB=A5=BC=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/pick/PickComponent.tsx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/app/(Main)/pick/PickComponent.tsx b/src/app/(Main)/pick/PickComponent.tsx index cfc75b8f..aa0b1fcb 100644 --- a/src/app/(Main)/pick/PickComponent.tsx +++ b/src/app/(Main)/pick/PickComponent.tsx @@ -1,5 +1,6 @@ 'use client'; +import { delay } from 'es-toolkit'; import { useEffect, useState } from 'react'; import Lottie from 'react-lottie-player'; @@ -9,6 +10,7 @@ import { BottomFixedDiv, PrimaryButton } from '@/components/Button'; import PoseImage from '@/components/Modal/PoseImage'; import { SelectionBasic } from '@/components/Selection'; import { peopleCountList } from '@/constants/data'; +import useDidMount from '@/hooks/useDidMount'; const DEFAULT_IMAGE = '/images/image-frame.png'; @@ -18,18 +20,16 @@ export default function PickComponent() { const { refetch, data } = usePosePickQuery(countState); const imageSrc = data?.poseInfo?.imageKey || DEFAULT_IMAGE; - useEffect(() => { - // setIsRendered(true); - }, [countState]); + useDidMount(async () => { + await delay(2200); + setIsLottiePlaying(false); + }); - useEffect(() => { - setTimeout(() => setIsLottiePlaying(false), 2200); - }, []); - - const handlePickClick = () => { + const handlePickClick = async () => { refetch(); setIsLottiePlaying(true); - setTimeout(() => setIsLottiePlaying(false), 900); + await delay(900); + setIsLottiePlaying(false); }; return ( From bd4a8594e0d9a40c1580607b6e1b0a854f703fe5 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 12:35:33 +0900 Subject: [PATCH 14/45] =?UTF-8?q?fix:=20es-toolkit=EC=9D=84=20=EC=9E=AC?= =?UTF-8?q?=EC=84=A4=EC=B9=98=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 89f9f08c..d81c9f7e 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@tanstack/react-query": "^4.32.6", "axios": "^1.4.0", "clsx": "^2.0.0", - "es-toolkit": "toss/es-toolkit", + "es-toolkit": "^1.15.1", "eslint": "^8.46.0", "eslint-config-next": "^13.4.12", "framer-motion": "^10.15.0", From ecb85520a75bee94b402ac015bba8282a438b3ac Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 12:40:02 +0900 Subject: [PATCH 15/45] =?UTF-8?q?refactor:=20=EA=B3=B5=ED=86=B5=20?= =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=EC=9D=84=20=EB=B0=94=EA=B9=A5?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=BA=80=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/pick/PickComponent.tsx | 2 +- src/components/Selection/SelectionBasic.tsx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/(Main)/pick/PickComponent.tsx b/src/app/(Main)/pick/PickComponent.tsx index aa0b1fcb..74589ac4 100644 --- a/src/app/(Main)/pick/PickComponent.tsx +++ b/src/app/(Main)/pick/PickComponent.tsx @@ -1,7 +1,7 @@ 'use client'; import { delay } from 'es-toolkit'; -import { useEffect, useState } from 'react'; +import { useState } from 'react'; import Lottie from 'react-lottie-player'; import lottiePick from '#/lotties/pick.json'; diff --git a/src/components/Selection/SelectionBasic.tsx b/src/components/Selection/SelectionBasic.tsx index 8d8d51fe..64988975 100644 --- a/src/components/Selection/SelectionBasic.tsx +++ b/src/components/Selection/SelectionBasic.tsx @@ -11,10 +11,10 @@ export default function SelectionBasic({ data, state, setState }: SelectionBasic { setState(item.value); From 905ec6bbd2c057fe2c22e20a2f5804a2d9b40ae6 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 12:46:45 +0900 Subject: [PATCH 16/45] =?UTF-8?q?refactor:=20feed=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EB=A5=BC=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/feed/FeedComponent.tsx | 23 +++++++++++++++++++++++ src/app/(Main)/feed/page.tsx | 22 ++-------------------- 2 files changed, 25 insertions(+), 20 deletions(-) create mode 100644 src/app/(Main)/feed/FeedComponent.tsx diff --git a/src/app/(Main)/feed/FeedComponent.tsx b/src/app/(Main)/feed/FeedComponent.tsx new file mode 100644 index 00000000..00e60c92 --- /dev/null +++ b/src/app/(Main)/feed/FeedComponent.tsx @@ -0,0 +1,23 @@ +'use client'; + +import { QueryAsyncBoundary } from '@suspensive/react-query'; + +import FeedContent from './FeedContent'; +import FilterSheet from './FilterSheet'; +import { RejectedFallback } from '@/components/ErrorBoundary'; +import { Loading } from '@/components/Loading'; +import { PageAnimation } from '@/components/PageAnimation'; + +export default function FeedComponent() { + return ( + } + > + + + + + + ); +} diff --git a/src/app/(Main)/feed/page.tsx b/src/app/(Main)/feed/page.tsx index d8316409..9d75aca1 100644 --- a/src/app/(Main)/feed/page.tsx +++ b/src/app/(Main)/feed/page.tsx @@ -1,23 +1,5 @@ -'use client'; - -import { QueryAsyncBoundary } from '@suspensive/react-query'; - -import FeedContent from './FeedContent'; -import FilterSheet from './FilterSheet'; -import { RejectedFallback } from '@/components/ErrorBoundary'; -import { Loading } from '@/components/Loading'; -import { PageAnimation } from '@/components/PageAnimation'; +import FeedComponent from './FeedComponent'; export default function Feed() { - return ( - } - > - - - - - - ); + return ; } From cb572d6c909579813dbcfed1cb7fcaefacbd4069 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 12:46:53 +0900 Subject: [PATCH 17/45] =?UTF-8?q?refactor:=20mypose=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EB=A5=BC=20=EB=B6=84=EB=A6=AC=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/mypose/MyPoseComponent.tsx | 23 +++++++++++++++++++++++ src/app/(Main)/mypose/page.tsx | 20 ++------------------ 2 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 src/app/(Main)/mypose/MyPoseComponent.tsx diff --git a/src/app/(Main)/mypose/MyPoseComponent.tsx b/src/app/(Main)/mypose/MyPoseComponent.tsx new file mode 100644 index 00000000..fe280a39 --- /dev/null +++ b/src/app/(Main)/mypose/MyPoseComponent.tsx @@ -0,0 +1,23 @@ +'use client'; + +import { PrimaryButton } from '@/components/Button'; +import EmptyCase from '@/components/Feed/EmptyCase'; +import { PreparingPopup } from '@/components/Modal'; +import { useOverlay } from '@/components/Overlay/useOverlay'; + +export default function MyPoseComponent() { + const { open } = useOverlay(); + + return ( + + open(({ exit }) => )} + text="포즈 등록하기" + type="secondary" + /> + + ); +} diff --git a/src/app/(Main)/mypose/page.tsx b/src/app/(Main)/mypose/page.tsx index a8e96e59..08ef89e2 100644 --- a/src/app/(Main)/mypose/page.tsx +++ b/src/app/(Main)/mypose/page.tsx @@ -1,23 +1,7 @@ 'use client'; -import { PrimaryButton } from '@/components/Button'; -import EmptyCase from '@/components/Feed/EmptyCase'; -import { PreparingPopup } from '@/components/Modal'; -import { useOverlay } from '@/components/Overlay/useOverlay'; +import MyPoseComponent from './MyPoseComponent'; export default function Page() { - const { open } = useOverlay(); - - return ( - - open(({ exit }) => )} - text="포즈 등록하기" - type="secondary" - /> - - ); + return ; } From 9fc2f2704cf172134afd2fbcf9aa70def668505c Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 12:52:44 +0900 Subject: [PATCH 18/45] =?UTF-8?q?refactor:=20talk=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=EC=97=90=EC=84=9C=20tooltip=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EB=A5=BC=20=EB=B6=84=EB=A6=AC=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/talk/TalkToolTip.tsx | 32 +++++++++++++++ src/app/(Main)/talk/TitleSection.tsx | 60 +++++++++++----------------- 2 files changed, 55 insertions(+), 37 deletions(-) create mode 100644 src/app/(Main)/talk/TalkToolTip.tsx diff --git a/src/app/(Main)/talk/TalkToolTip.tsx b/src/app/(Main)/talk/TalkToolTip.tsx new file mode 100644 index 00000000..b5c358c6 --- /dev/null +++ b/src/app/(Main)/talk/TalkToolTip.tsx @@ -0,0 +1,32 @@ +import { ComponentProps } from 'react'; +import { Tooltip } from 'react-tooltip'; + +import { Icon } from '@/components/Button'; +import { Spacing } from '@/components/Spacing'; + +interface TalkToolTipProps extends ComponentProps { + onToolTipClick: () => void; +} + +export default function TalkToolTip({ onToolTipClick, ...props }: TalkToolTipProps) { + return ( + ( +
+
+

{`일명 <포즈로 말해요> 챌린지!`}

+

제시어에 맞춰 포즈를 취해보세요.

+
+ + +
+ )} + {...props} + /> + ); +} diff --git a/src/app/(Main)/talk/TitleSection.tsx b/src/app/(Main)/talk/TitleSection.tsx index 38db970c..ea986326 100644 --- a/src/app/(Main)/talk/TitleSection.tsx +++ b/src/app/(Main)/talk/TitleSection.tsx @@ -2,15 +2,33 @@ import { useEffect, useState } from 'react'; import { Tooltip } from 'react-tooltip'; +import TalkToolTip from './TalkToolTip'; import { Icon } from '@/components/Button/Icon'; import { Spacing } from '@/components/Spacing'; import { ICON } from '@/constants/icon'; +import useDidMount from '@/hooks/useDidMount'; export default function TitleSection() { - const [isOpen, setIsOpen] = useState(true); - useEffect(() => { + const [isOpen, setIsOpen] = useState(true); + + useDidMount(() => { if (localStorage.getItem('tooltipIsOpen') === 'false') setIsOpen(false); - }, []); + }); + + const handleToolTopClick = () => { + localStorage.setItem('tooltipIsOpen', 'false'); + setIsOpen(false); + }; + + const handleToolTopInfoClick = () => { + if (isOpen) { + localStorage.setItem('tooltipIsOpen', 'false'); + setIsOpen(false); + } else { + localStorage.setItem('tooltipIsOpen', 'true'); + setIsOpen(true); + } + }; return (
@@ -20,44 +38,12 @@ export default function TitleSection() { data-tooltip-id="my-tooltip" data-tooltip-place="top" style={{ cursor: 'pointer' }} - onClick={() => { - if (isOpen) { - localStorage.setItem('tooltipIsOpen', 'false'); - setIsOpen(false); - } else { - localStorage.setItem('tooltipIsOpen', 'true'); - setIsOpen(true); - } - }} + onClick={handleToolTopInfoClick} >
- ( -
{ - localStorage.setItem('tooltipIsOpen', 'false'); - setIsOpen(false); - }} - > -
-

{`일명 <포즈로 말해요> 챌린지!`}

-

제시어에 맞춰 포즈를 취해보세요.

-
- - -
- )} - clickable - /> + ); From 9eeeaeeeb04b47f0df7981849f7ec9389d99c709 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 12:54:32 +0900 Subject: [PATCH 19/45] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20PageAnimation=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8?= =?UTF-8?q?=EB=A5=BC=20=EC=A0=9C=EA=B1=B0=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/talk/TitleSection.tsx | 3 +-- src/app/(Main)/talk/page.tsx | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/app/(Main)/talk/TitleSection.tsx b/src/app/(Main)/talk/TitleSection.tsx index ea986326..af295028 100644 --- a/src/app/(Main)/talk/TitleSection.tsx +++ b/src/app/(Main)/talk/TitleSection.tsx @@ -1,6 +1,5 @@ 'use client'; -import { useEffect, useState } from 'react'; -import { Tooltip } from 'react-tooltip'; +import { useState } from 'react'; import TalkToolTip from './TalkToolTip'; import { Icon } from '@/components/Button/Icon'; diff --git a/src/app/(Main)/talk/page.tsx b/src/app/(Main)/talk/page.tsx index 68f323b6..288fadb1 100644 --- a/src/app/(Main)/talk/page.tsx +++ b/src/app/(Main)/talk/page.tsx @@ -4,9 +4,9 @@ import { PageAnimation } from '@/components/PageAnimation'; export default function Talk() { return ( - +
- +
); } From 024583053199b5c8c151525e371c5867d74f00d7 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 12:57:47 +0900 Subject: [PATCH 20/45] =?UTF-8?q?refactor:=20SSR=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=B4=20cookie=EB=A1=9C=20tooltip=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EB=A5=BC=20=EA=B5=90=EC=B2=B4=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/talk/TalkSection.tsx | 2 +- src/app/(Main)/talk/TitleSection.tsx | 18 +++++++++--------- src/app/(Main)/talk/page.tsx | 9 ++++++--- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/app/(Main)/talk/TalkSection.tsx b/src/app/(Main)/talk/TalkSection.tsx index 71ee1549..69190d56 100644 --- a/src/app/(Main)/talk/TalkSection.tsx +++ b/src/app/(Main)/talk/TalkSection.tsx @@ -12,7 +12,7 @@ import { Spacing } from '@/components/Spacing'; import useLoading from '@/hooks/useLoading'; export default function TalkSection() { - const [talkWord, setTalkWord] = useState(`제시어에 맞춰 포즈를 취해요!`); + const [talkWord, setTalkWord] = useState(`제시어에 맞춰 포즈를 취해요!`); const { isLoading: isFirstLoading, stopLoading: stopFirstLoading } = useLoading({ isFirstLoadingInfinite: true, }); diff --git a/src/app/(Main)/talk/TitleSection.tsx b/src/app/(Main)/talk/TitleSection.tsx index af295028..7e8a8339 100644 --- a/src/app/(Main)/talk/TitleSection.tsx +++ b/src/app/(Main)/talk/TitleSection.tsx @@ -5,26 +5,26 @@ import TalkToolTip from './TalkToolTip'; import { Icon } from '@/components/Button/Icon'; import { Spacing } from '@/components/Spacing'; import { ICON } from '@/constants/icon'; -import useDidMount from '@/hooks/useDidMount'; +import { setClientCookie } from '@/utils'; -export default function TitleSection() { - const [isOpen, setIsOpen] = useState(true); +interface TitleSectionProps { + isInitialToolTipOpen: boolean; +} - useDidMount(() => { - if (localStorage.getItem('tooltipIsOpen') === 'false') setIsOpen(false); - }); +export default function TitleSection({ isInitialToolTipOpen }: TitleSectionProps) { + const [isOpen, setIsOpen] = useState(isInitialToolTipOpen); const handleToolTopClick = () => { - localStorage.setItem('tooltipIsOpen', 'false'); + setClientCookie('tooltipIsOpen', 'false'); setIsOpen(false); }; const handleToolTopInfoClick = () => { if (isOpen) { - localStorage.setItem('tooltipIsOpen', 'false'); + setClientCookie('tooltipIsOpen', 'false'); setIsOpen(false); } else { - localStorage.setItem('tooltipIsOpen', 'true'); + setClientCookie('tooltipIsOpen', 'true'); setIsOpen(true); } }; diff --git a/src/app/(Main)/talk/page.tsx b/src/app/(Main)/talk/page.tsx index 288fadb1..adf43d84 100644 --- a/src/app/(Main)/talk/page.tsx +++ b/src/app/(Main)/talk/page.tsx @@ -1,11 +1,14 @@ import TalkSection from './TalkSection'; import TitleSection from './TitleSection'; import { PageAnimation } from '@/components/PageAnimation'; +import { getServerCookie } from '@/utils'; + +export default async function Talk() { + const isToolTipOpen = (await getServerCookie('tooltipIsOpen')) === 'true'; -export default function Talk() { return ( -
- +
+
); From 32f9eb400c76fe07becfbd818197ce4b15e537f4 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 13:03:42 +0900 Subject: [PATCH 21/45] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=83=81=ED=83=9C=EA=B0=92=EC=9D=84=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/talk/TalkSection.tsx | 47 ++++++++++++----------------- src/app/(Main)/talk/page.tsx | 3 +- 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/app/(Main)/talk/TalkSection.tsx b/src/app/(Main)/talk/TalkSection.tsx index 69190d56..a82b54d7 100644 --- a/src/app/(Main)/talk/TalkSection.tsx +++ b/src/app/(Main)/talk/TalkSection.tsx @@ -1,6 +1,7 @@ 'use client'; import { useQueryClient } from '@tanstack/react-query'; +import { delay } from 'es-toolkit'; import { useEffect, useState } from 'react'; import Lottie from 'react-lottie-player'; @@ -11,52 +12,42 @@ import { BottomFixedDiv, PrimaryButton } from '@/components/Button'; import { Spacing } from '@/components/Spacing'; import useLoading from '@/hooks/useLoading'; +const INITIAL_TALK_WORD = `제시어에 맞춰 포즈를 취해요!`; + export default function TalkSection() { - const [talkWord, setTalkWord] = useState(`제시어에 맞춰 포즈를 취해요!`); - const { isLoading: isFirstLoading, stopLoading: stopFirstLoading } = useLoading({ - isFirstLoadingInfinite: true, - }); + const [talkWord, setTalkWord] = useState(INITIAL_TALK_WORD); + const [isLoading, setIsLoading] = useState(true); + const isWordLoaded = talkWord !== INITIAL_TALK_WORD; const { refetch } = usePoseTalkQuery({ - onSuccess: (data) => { - setTimeout(() => { - setTalkWord(data.poseWord.content); - }, 1000); + onSuccess: async (data) => { + await delay(1000); + setTalkWord(data.poseWord.content); + setIsLoading(false); }, }); - const { isLoading, startLoading } = useLoading({ - loadingDelay: 1000, - initialState: false, - }); - const handleTalkClick = () => { - if (isFirstLoading) stopFirstLoading(); - startLoading(); + setIsLoading(true); refetch(); }; - const queryClient = useQueryClient(); - - useEffect(() => { - return () => { - queryClient.resetQueries(['poseTalk']); - }; - }, [queryClient]); - return (
-

{talkWord}

+

{talkWord}

+ -
- {isFirstLoading && } - {!isFirstLoading && isLoading && ( + +
+ {isLoading && !isWordLoaded && } + {isWordLoaded && isLoading && ( )} - {!isFirstLoading && !isLoading && ( + {isWordLoaded && !isLoading && ( )}
+ diff --git a/src/app/(Main)/talk/page.tsx b/src/app/(Main)/talk/page.tsx index adf43d84..96472663 100644 --- a/src/app/(Main)/talk/page.tsx +++ b/src/app/(Main)/talk/page.tsx @@ -1,13 +1,12 @@ import TalkSection from './TalkSection'; import TitleSection from './TitleSection'; -import { PageAnimation } from '@/components/PageAnimation'; import { getServerCookie } from '@/utils'; export default async function Talk() { const isToolTipOpen = (await getServerCookie('tooltipIsOpen')) === 'true'; return ( -
+
From faf2987dfdc52efa2a5216e8dd2075be1f737005 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 13:05:55 +0900 Subject: [PATCH 22/45] =?UTF-8?q?refactor:=20Talk=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EC=9D=98=20=EB=84=A4=EC=9D=B4=EB=B0=8D?= =?UTF-8?q?=EC=9D=84=20=EC=A7=81=EA=B4=80=EC=A0=81=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/talk/TalkSection.tsx | 12 +++++------- src/app/(Main)/talk/TitleSection.tsx | 2 +- src/app/(Main)/talk/page.tsx | 8 ++++---- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/app/(Main)/talk/TalkSection.tsx b/src/app/(Main)/talk/TalkSection.tsx index a82b54d7..f3903d9e 100644 --- a/src/app/(Main)/talk/TalkSection.tsx +++ b/src/app/(Main)/talk/TalkSection.tsx @@ -1,8 +1,7 @@ 'use client'; -import { useQueryClient } from '@tanstack/react-query'; import { delay } from 'es-toolkit'; -import { useEffect, useState } from 'react'; +import { useState } from 'react'; import Lottie from 'react-lottie-player'; import lottieTalkAfterClick from '#/lotties/talk_after_click.json'; @@ -10,11 +9,10 @@ import lottieTalkBeforeClick from '#/lotties/talk_before_click.json'; import { usePoseTalkQuery } from '@/apis'; import { BottomFixedDiv, PrimaryButton } from '@/components/Button'; import { Spacing } from '@/components/Spacing'; -import useLoading from '@/hooks/useLoading'; const INITIAL_TALK_WORD = `제시어에 맞춰 포즈를 취해요!`; -export default function TalkSection() { +export default function TalkWordSection() { const [talkWord, setTalkWord] = useState(INITIAL_TALK_WORD); const [isLoading, setIsLoading] = useState(true); const isWordLoaded = talkWord !== INITIAL_TALK_WORD; @@ -34,12 +32,12 @@ export default function TalkSection() { return (
-

{talkWord}

+

{talkWord}

-
- {isLoading && !isWordLoaded && } +
+ {!isWordLoaded && isLoading && } {isWordLoaded && isLoading && ( )} diff --git a/src/app/(Main)/talk/TitleSection.tsx b/src/app/(Main)/talk/TitleSection.tsx index 7e8a8339..a22480a0 100644 --- a/src/app/(Main)/talk/TitleSection.tsx +++ b/src/app/(Main)/talk/TitleSection.tsx @@ -11,7 +11,7 @@ interface TitleSectionProps { isInitialToolTipOpen: boolean; } -export default function TitleSection({ isInitialToolTipOpen }: TitleSectionProps) { +export default function TalkTitleSection({ isInitialToolTipOpen }: TitleSectionProps) { const [isOpen, setIsOpen] = useState(isInitialToolTipOpen); const handleToolTopClick = () => { diff --git a/src/app/(Main)/talk/page.tsx b/src/app/(Main)/talk/page.tsx index 96472663..fe294378 100644 --- a/src/app/(Main)/talk/page.tsx +++ b/src/app/(Main)/talk/page.tsx @@ -1,5 +1,5 @@ -import TalkSection from './TalkSection'; -import TitleSection from './TitleSection'; +import TalkWordSection from './TalkSection'; +import TalkTitleSection from './TitleSection'; import { getServerCookie } from '@/utils'; export default async function Talk() { @@ -7,8 +7,8 @@ export default async function Talk() { return (
- - + +
); } From 5c8dc5d39cb2222bdfb20040f6543739ac274802 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 13:09:01 +0900 Subject: [PATCH 23/45] =?UTF-8?q?refactor:=20ButtonProps=EC=97=90=EC=84=9C?= =?UTF-8?q?=20React.ButtonHTMLAttributes=EB=A5=BC=20=ED=99=95=EC=9E=A5?= =?UTF-8?q?=ED=95=98=EA=B3=A0,=20=EA=B8=B0=EC=A1=B4=20type=20->=20variant?= =?UTF-8?q?=EB=A1=9C=20props=EB=AA=85=EC=9D=84=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/feed/FilterSheet.tsx | 4 ++-- src/app/(Main)/mypose/MyPoseComponent.tsx | 2 +- .../(Main)/mypose/bookmark/BookmarkEmpty.tsx | 2 +- src/app/(Sub)/detail/[id]/DetailSection.tsx | 2 +- src/app/(Sub)/menu/withdraw/page.tsx | 10 ++++---- src/components/Button/PrimaryButton.tsx | 23 +++++++------------ src/components/Login/LogoutModal.tsx | 2 +- 7 files changed, 19 insertions(+), 26 deletions(-) diff --git a/src/app/(Main)/feed/FilterSheet.tsx b/src/app/(Main)/feed/FilterSheet.tsx index 9721fbd7..4536bf03 100644 --- a/src/app/(Main)/feed/FilterSheet.tsx +++ b/src/app/(Main)/feed/FilterSheet.tsx @@ -74,8 +74,8 @@ export default function FilterSheet() {
- - + + ); diff --git a/src/app/(Main)/mypose/MyPoseComponent.tsx b/src/app/(Main)/mypose/MyPoseComponent.tsx index fe280a39..0dff0ae7 100644 --- a/src/app/(Main)/mypose/MyPoseComponent.tsx +++ b/src/app/(Main)/mypose/MyPoseComponent.tsx @@ -16,7 +16,7 @@ export default function MyPoseComponent() { open(({ exit }) => )} text="포즈 등록하기" - type="secondary" + variant="secondary" /> ); diff --git a/src/app/(Main)/mypose/bookmark/BookmarkEmpty.tsx b/src/app/(Main)/mypose/bookmark/BookmarkEmpty.tsx index 8b9b9bd1..7d63a7e3 100644 --- a/src/app/(Main)/mypose/bookmark/BookmarkEmpty.tsx +++ b/src/app/(Main)/mypose/bookmark/BookmarkEmpty.tsx @@ -10,7 +10,7 @@ export default function BookmarkEmpty() { text={`북마크 버튼으로 포즈를 보관할 수 있어요.\n포즈피드에서 멋진 포즈를 찾아 보관해 보세요.`} > - + ); diff --git a/src/app/(Sub)/detail/[id]/DetailSection.tsx b/src/app/(Sub)/detail/[id]/DetailSection.tsx index e2c38407..7c0a33df 100644 --- a/src/app/(Sub)/detail/[id]/DetailSection.tsx +++ b/src/app/(Sub)/detail/[id]/DetailSection.tsx @@ -54,7 +54,7 @@ export default function DetailSection({ poseId }: DetailSectionProps) { shareKakao(poseId)} /> diff --git a/src/app/(Sub)/menu/withdraw/page.tsx b/src/app/(Sub)/menu/withdraw/page.tsx index bd46e348..bfddae65 100644 --- a/src/app/(Sub)/menu/withdraw/page.tsx +++ b/src/app/(Sub)/menu/withdraw/page.tsx @@ -30,11 +30,11 @@ export default function Page() { content={`탈퇴 시 업로드한 포즈를 제외한\n모든 정보가 삭제되며 복구되지 않아요.`} > <> - + router.replace(`/auth/withdraw?reason=${withdrawalReason}`)} - type="warning" + variant="warning" /> @@ -85,11 +85,11 @@ export default function Page() { )}
- router.back()} /> + router.back()} /> {withdrawalReason ? ( - + ) : ( - + )} diff --git a/src/components/Button/PrimaryButton.tsx b/src/components/Button/PrimaryButton.tsx index 622dffb6..70392695 100644 --- a/src/components/Button/PrimaryButton.tsx +++ b/src/components/Button/PrimaryButton.tsx @@ -1,36 +1,29 @@ import { Icon } from './Icon'; import cn from '@/utils/cn'; -interface ButtonProps { +interface ButtonProps extends React.ButtonHTMLAttributes { text: string; icon?: string; - onClick?: () => void; - type?: StyleType; + variant?: StyleType; className?: string; } type StyleType = 'fill' | 'outline' | 'secondary' | 'warning'; const styleMap: Record = { - fill: `bg-main-violet text-white`, - outline: `border-1 border-main-violet text-main-violet bg-main-violet-base`, - secondary: `bg-sub-white text-secondary w-fit`, - warning: `bg-warning text-white`, + fill: 'bg-main-violet text-white', + outline: 'border-1 border-main-violet text-main-violet bg-main-violet-base', + secondary: 'bg-sub-white text-secondary w-fit', + warning: 'bg-warning text-white', }; -export default function PrimaryButton({ - icon, - text, - onClick, - type = 'fill', - className, -}: ButtonProps) { +export default function PrimaryButton({ icon, text, onClick, variant = 'fill', className }: ButtonProps) { return ( + {isFiltered && ( <>
|
From 95a534cfc811825ccbdd83a46bd1396c66cc6c32 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 13:42:09 +0900 Subject: [PATCH 29/45] =?UTF-8?q?refactor:=20import=EB=AC=B8=EC=9D=84=20?= =?UTF-8?q?=ED=95=9C=20=EC=A4=84=EB=A1=9C=20=ED=86=B5=ED=95=A9=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/config/privateApi.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/apis/config/privateApi.ts b/src/apis/config/privateApi.ts index 3c8454b3..a5b79f03 100644 --- a/src/apis/config/privateApi.ts +++ b/src/apis/config/privateApi.ts @@ -1,8 +1,12 @@ import axios from 'axios'; import { CustomInstance } from './type'; -import { ACCESS_TOKEN, ERROR_UNAUTHORIZED, ERROR_UNSUPPORTED_MEDIA_TYPE } from '@/constants'; -import { BASE_API_URL } from '@/constants'; +import { + ACCESS_TOKEN, + BASE_API_URL, + ERROR_UNAUTHORIZED, + ERROR_UNSUPPORTED_MEDIA_TYPE, +} from '@/constants'; import { getClientCookie, removeClientCookie } from '@/utils'; const privateApi: CustomInstance = axios.create({ From a9350b51b98444c783013215b3e684b667adff9f Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 13:43:35 +0900 Subject: [PATCH 30/45] =?UTF-8?q?fix:=20=EC=9E=98=EB=AA=BB=EB=90=9C=20?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=EB=A5=BC=20=EC=88=98=EC=A0=95=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/queries.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apis/queries.ts b/src/apis/queries.ts index 178c19f5..f1bb7ba5 100644 --- a/src/apis/queries.ts +++ b/src/apis/queries.ts @@ -18,7 +18,7 @@ import { getPosePick, getPoseTalk, } from '.'; -import { FilterState } from ''; +import { FilterState } from '@/hooks/useFilterState'; export const usePoseDetailQuery = (poseId: number) => useQuery(['poseId', poseId], () => getPoseDetail(poseId)); From db69fbfc97e110dd7f33b9788e35cceeb0d69574 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 13:52:41 +0900 Subject: [PATCH 31/45] =?UTF-8?q?fix:=20type=20=EC=97=90=EB=9F=AC=EB=A5=BC?= =?UTF-8?q?=20=EA=B3=A0=EC=B9=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layout.tsx | 2 +- src/constants/meta.ts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index bedbaee5..62b4e2c0 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,7 +3,7 @@ import './globals.css'; import Analytics from './Analytics'; import JsonLD from './JsonLD'; import { OverlayProvider } from '@/components/Overlay/OverlayProvider'; -import METADATA from '@/constants'; +import { METADATA } from '@/constants'; import QueryProvider from '@/provider/QueryProvider'; import RecoilProvider from '@/provider/RecoilProvider'; diff --git a/src/constants/meta.ts b/src/constants/meta.ts index 6b55196f..edda17d6 100644 --- a/src/constants/meta.ts +++ b/src/constants/meta.ts @@ -36,7 +36,7 @@ export const OPEN_GRAPH = { }, }; -const METADATA: Metadata = { +export const METADATA: Metadata = { metadataBase: new URL('https://www.posepicker.site'), title: { default: `${META_STRING.title}`, @@ -74,7 +74,6 @@ const METADATA: Metadata = { themeColor: '#ffffff', }; -export default METADATA; export const JSON_LD = { '@context': 'https://schema.org', From a7e0d875f5f68e67e079d44853cbecef32471300 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 13:58:27 +0900 Subject: [PATCH 32/45] =?UTF-8?q?refactor:=20deeplink=20url=EC=9D=84=20url?= =?UTF-8?q?.ts=EB=A1=9C=20=EC=98=AE=EA=B8=B4=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/deepLink.ts | 1 - src/constants/index.ts | 1 - src/constants/url.ts | 3 +++ 3 files changed, 3 insertions(+), 2 deletions(-) delete mode 100644 src/constants/deepLink.ts diff --git a/src/constants/deepLink.ts b/src/constants/deepLink.ts deleted file mode 100644 index b7e5fc27..00000000 --- a/src/constants/deepLink.ts +++ /dev/null @@ -1 +0,0 @@ -export const INSTAGRAM_POSEPICKER_URL_SCHEME = 'instagram://user?username=posepicker'; // ref : https://qiita.com/ahandsel/items/9d668441152e00ba31ff diff --git a/src/constants/index.ts b/src/constants/index.ts index 66b5cbcd..02b49596 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -2,7 +2,6 @@ export * from './meta'; export * from './auth'; export * from './error'; export * from './color'; -export * from './deepLink'; export * from './env'; export * from './url'; export * from './image'; diff --git a/src/constants/url.ts b/src/constants/url.ts index 13d2c7af..7584eb6a 100644 --- a/src/constants/url.ts +++ b/src/constants/url.ts @@ -12,3 +12,6 @@ export const URL = { appstore: 'https://apps.apple.com/kr/app/%ED%8F%AC%EC%A6%88%ED%94%BC%EC%BB%A4-%EB%84%A4%EC%BB%B7%EC%82%AC%EC%A7%84-%ED%8F%AC%EC%A6%88%EC%B6%94%EC%B2%9C/id6474260471', }; + +// ref : https://qiita.com/ahandsel/items/9d668441152e00ba31ff +export const INSTAGRAM_POSEPICKER_URL_SCHEME = 'instagram://user?username=posepicker'; From 790d94e3093d9b387c44650259d40dee06c6e08f Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 14:00:35 +0900 Subject: [PATCH 33/45] =?UTF-8?q?refactor:=20`IS=5FTOOLTIP=5FOPEN`?= =?UTF-8?q?=EB=A5=BC=20=EC=83=81=EC=88=98=ED=99=94=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/talk/TitleSection.tsx | 8 ++++---- src/constants/cookie.ts | 1 + src/constants/index.ts | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 src/constants/cookie.ts diff --git a/src/app/(Main)/talk/TitleSection.tsx b/src/app/(Main)/talk/TitleSection.tsx index 906e18fb..ea341206 100644 --- a/src/app/(Main)/talk/TitleSection.tsx +++ b/src/app/(Main)/talk/TitleSection.tsx @@ -4,7 +4,7 @@ import { useState } from 'react'; import TalkToolTip from './TalkToolTip'; import { Icon } from '@/components/Button/Icon'; import { Spacing } from '@/components/Spacing'; -import { ICON } from '@/constants'; +import { ICON, IS_TOOLTIP_OPEN } from '@/constants'; import { setClientCookie } from '@/utils'; interface TitleSectionProps { @@ -15,16 +15,16 @@ export default function TalkTitleSection({ isInitialToolTipOpen }: TitleSectionP const [isOpen, setIsOpen] = useState(isInitialToolTipOpen); const handleToolTopClick = () => { - setClientCookie('tooltipIsOpen', 'false'); + setClientCookie(IS_TOOLTIP_OPEN, 'false'); setIsOpen(false); }; const handleToolTopInfoClick = () => { if (isOpen) { - setClientCookie('tooltipIsOpen', 'false'); + setClientCookie(IS_TOOLTIP_OPEN, 'false'); setIsOpen(false); } else { - setClientCookie('tooltipIsOpen', 'true'); + setClientCookie(IS_TOOLTIP_OPEN, 'true'); setIsOpen(true); } }; diff --git a/src/constants/cookie.ts b/src/constants/cookie.ts new file mode 100644 index 00000000..d55febd0 --- /dev/null +++ b/src/constants/cookie.ts @@ -0,0 +1 @@ +export const IS_TOOLTIP_OPEN = 'isToolTipOpen'; diff --git a/src/constants/index.ts b/src/constants/index.ts index 02b49596..3866248a 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -7,3 +7,4 @@ export * from './url'; export * from './image'; export * from './icon'; export * from './data'; +export * from './cookie'; From ceaff3d30758608ec513e2d64282a9c356af8309 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 14:01:24 +0900 Subject: [PATCH 34/45] =?UTF-8?q?refactor:=20auth=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=BF=A0=ED=82=A4=20=EC=83=81=EC=88=98=EB=A5=BC=20cookie?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=97=90=20=ED=86=B5=EC=9D=BC=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/auth.ts | 3 --- src/constants/cookie.ts | 5 ++++- src/constants/index.ts | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 src/constants/auth.ts diff --git a/src/constants/auth.ts b/src/constants/auth.ts deleted file mode 100644 index 9bf36250..00000000 --- a/src/constants/auth.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const ACCESS_TOKEN = 'accesstoken'; -export const EMAIL = 'email'; -export const NICKNAME = 'nickname'; diff --git a/src/constants/cookie.ts b/src/constants/cookie.ts index d55febd0..468c4752 100644 --- a/src/constants/cookie.ts +++ b/src/constants/cookie.ts @@ -1 +1,4 @@ -export const IS_TOOLTIP_OPEN = 'isToolTipOpen'; +export const COOKIE_IS_TOOLTIP_OPEN = 'isToolTipOpen'; +export const COOKIE_ACCESS_TOKEN = 'accesstoken'; +export const COOKIE_EMAIL = 'email'; +export const COOKIE_NICKNAME = 'nickname'; diff --git a/src/constants/index.ts b/src/constants/index.ts index 3866248a..b5fc7c49 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -1,5 +1,4 @@ export * from './meta'; -export * from './auth'; export * from './error'; export * from './color'; export * from './env'; From 5555975db6bd9ed1b9f67fb5e23a55603c8f4f71 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 14:06:27 +0900 Subject: [PATCH 35/45] =?UTF-8?q?refactor:=20=EC=83=81=EC=88=98=EC=9D=98?= =?UTF-8?q?=20=EB=B3=80=EC=88=98=EB=AA=85=EC=9D=84=20UPPER=5FCASE=EB=A1=9C?= =?UTF-8?q?=20=ED=86=B5=EC=9D=BC=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/config/privateApi.ts | 6 +++--- src/apis/type.ts | 4 ++-- src/app/(Main)/feed/FilterSheet.tsx | 6 +++--- src/app/(Main)/mypose/bookmark/page.tsx | 4 ++-- src/app/(Main)/pick/PickComponent.tsx | 4 ++-- src/app/(Main)/talk/TitleSection.tsx | 8 ++++---- src/app/(Sub)/auth/AuthComponent.tsx | 12 ++++++------ src/app/(Sub)/auth/withdraw/WithdrawComponent.tsx | 6 +++--- src/app/(Sub)/menu/MenuListSection.tsx | 11 +++++------ src/app/(Sub)/menu/withdraw/page.tsx | 4 ++-- src/components/Feed/BookmarkButton.tsx | 4 ++-- src/components/Login/LoginSection.tsx | 12 ++++++------ src/components/Login/LogoutModal.tsx | 4 ++-- src/constants/cookie.ts | 4 ++-- src/constants/data.ts | 14 +++++++------- 15 files changed, 51 insertions(+), 52 deletions(-) diff --git a/src/apis/config/privateApi.ts b/src/apis/config/privateApi.ts index a5b79f03..bf418c45 100644 --- a/src/apis/config/privateApi.ts +++ b/src/apis/config/privateApi.ts @@ -2,7 +2,7 @@ import axios from 'axios'; import { CustomInstance } from './type'; import { - ACCESS_TOKEN, + COOKIE_ACCESS_TOKEN, BASE_API_URL, ERROR_UNAUTHORIZED, ERROR_UNSUPPORTED_MEDIA_TYPE, @@ -20,7 +20,7 @@ privateApi.interceptors.response.use( const status = error.response.status; if (status === ERROR_UNAUTHORIZED || status === ERROR_UNSUPPORTED_MEDIA_TYPE) { alert('세션이 만료되었어요. 다시 로그인이 필요해요!'); - removeClientCookie(ACCESS_TOKEN); + removeClientCookie(COOKIE_ACCESS_TOKEN); } location.href = '/'; return Promise.reject(error); @@ -29,7 +29,7 @@ privateApi.interceptors.response.use( privateApi.interceptors.request.use( (config) => { - const accessToken = getClientCookie(ACCESS_TOKEN); + const accessToken = getClientCookie(COOKIE_ACCESS_TOKEN); config.headers.Authorization = `Bearer ${accessToken}`; return config; }, diff --git a/src/apis/type.ts b/src/apis/type.ts index 469db938..21c40dc0 100644 --- a/src/apis/type.ts +++ b/src/apis/type.ts @@ -83,8 +83,8 @@ export interface PoseTalkResponse { // 로그인 export interface RegisterResponse { id: number; - nickname: string; - email: string; + COOKIE_NICKNAME: string; + COOKIE_EMAIL: string; token: { accessToken: string; refreshToken: string; diff --git a/src/app/(Main)/feed/FilterSheet.tsx b/src/app/(Main)/feed/FilterSheet.tsx index 772607b8..7dc2cff2 100644 --- a/src/app/(Main)/feed/FilterSheet.tsx +++ b/src/app/(Main)/feed/FilterSheet.tsx @@ -6,7 +6,7 @@ import { FilterTagsResponse, useFilterTagQuery } from '@/apis'; import { BottomDiv, PrimaryButton } from '@/components/Button'; import BottomSheet from '@/components/Modal/BottomSheet'; import { SelectionBasic, SelectionTagList } from '@/components/Selection'; -import { frameCountList, peopleCountList } from '@/constants'; +import { FRAME_COUNT_LIST, PEOPLE_COUNT_LIST } from '@/constants'; import { useBottomSheet, useFilterState } from '@/hooks'; export default function FilterSheet() { @@ -51,13 +51,13 @@ export default function FilterSheet() {
인원 수
- +
프레임 수
- +
diff --git a/src/app/(Main)/mypose/bookmark/page.tsx b/src/app/(Main)/mypose/bookmark/page.tsx index 8814e24e..0ca4e34c 100644 --- a/src/app/(Main)/mypose/bookmark/page.tsx +++ b/src/app/(Main)/mypose/bookmark/page.tsx @@ -1,10 +1,10 @@ import BookmarkEmpty from './BookmarkEmpty'; import BookmarkSecion from './BookmarkSecion'; -import { ACCESS_TOKEN } from '@/constants'; +import { COOKIE_ACCESS_TOKEN } from '@/constants'; import { getServerCookie } from '@/utils'; export default async function BookmarkPage() { - const token = await getServerCookie(ACCESS_TOKEN); + const token = await getServerCookie(COOKIE_ACCESS_TOKEN); if (token) return ; return ; diff --git a/src/app/(Main)/pick/PickComponent.tsx b/src/app/(Main)/pick/PickComponent.tsx index 5869c613..453e9a57 100644 --- a/src/app/(Main)/pick/PickComponent.tsx +++ b/src/app/(Main)/pick/PickComponent.tsx @@ -9,7 +9,7 @@ import { usePosePickQuery } from '@/apis'; import { BottomFixedDiv, PrimaryButton } from '@/components/Button'; import PoseImage from '@/components/Modal/PoseImage'; import { SelectionBasic } from '@/components/Selection'; -import { peopleCountList } from '@/constants'; +import { PEOPLE_COUNT_LIST } from '@/constants'; import { useDidMount } from '@/hooks'; const DEFAULT_IMAGE = '/images/image-frame.png'; @@ -36,7 +36,7 @@ export default function PickComponent() { <>
diff --git a/src/app/(Main)/talk/TitleSection.tsx b/src/app/(Main)/talk/TitleSection.tsx index ea341206..53eacc36 100644 --- a/src/app/(Main)/talk/TitleSection.tsx +++ b/src/app/(Main)/talk/TitleSection.tsx @@ -4,7 +4,7 @@ import { useState } from 'react'; import TalkToolTip from './TalkToolTip'; import { Icon } from '@/components/Button/Icon'; import { Spacing } from '@/components/Spacing'; -import { ICON, IS_TOOLTIP_OPEN } from '@/constants'; +import { ICON, COOKIE_IS_TOOLTIP_OPEN } from '@/constants'; import { setClientCookie } from '@/utils'; interface TitleSectionProps { @@ -15,16 +15,16 @@ export default function TalkTitleSection({ isInitialToolTipOpen }: TitleSectionP const [isOpen, setIsOpen] = useState(isInitialToolTipOpen); const handleToolTopClick = () => { - setClientCookie(IS_TOOLTIP_OPEN, 'false'); + setClientCookie(COOKIE_IS_TOOLTIP_OPEN, 'false'); setIsOpen(false); }; const handleToolTopInfoClick = () => { if (isOpen) { - setClientCookie(IS_TOOLTIP_OPEN, 'false'); + setClientCookie(COOKIE_IS_TOOLTIP_OPEN, 'false'); setIsOpen(false); } else { - setClientCookie(IS_TOOLTIP_OPEN, 'true'); + setClientCookie(COOKIE_IS_TOOLTIP_OPEN, 'true'); setIsOpen(true); } }; diff --git a/src/app/(Sub)/auth/AuthComponent.tsx b/src/app/(Sub)/auth/AuthComponent.tsx index d3f82bf1..ba214f3a 100644 --- a/src/app/(Sub)/auth/AuthComponent.tsx +++ b/src/app/(Sub)/auth/AuthComponent.tsx @@ -3,7 +3,7 @@ import { useRouter } from 'next/navigation'; import { getRegister } from '@/apis'; -import { ACCESS_TOKEN, EMAIL, NICKNAME } from '@/constants'; +import { COOKIE_ACCESS_TOKEN, COOKIE_EMAIL, COOKIE_NICKNAME } from '@/constants'; import { useDidMount } from '@/hooks'; import { setClientCookie } from '@/utils'; @@ -18,13 +18,13 @@ export default function AuthComponent({ code }: AuthComponentProps) { try { const { token: { accessToken }, - email, - nickname, + COOKIE_EMAIL, + COOKIE_NICKNAME, } = await getRegister(code); - setClientCookie(ACCESS_TOKEN, accessToken); - setClientCookie(EMAIL, email); - setClientCookie(NICKNAME, nickname); + setClientCookie(COOKIE_ACCESS_TOKEN, accessToken); + setClientCookie(COOKIE_EMAIL, COOKIE_EMAIL); + setClientCookie(COOKIE_NICKNAME, COOKIE_NICKNAME); alert(`로그인에 성공했어요!`); router.push('/'); diff --git a/src/app/(Sub)/auth/withdraw/WithdrawComponent.tsx b/src/app/(Sub)/auth/withdraw/WithdrawComponent.tsx index 322dd6f8..89a07c49 100644 --- a/src/app/(Sub)/auth/withdraw/WithdrawComponent.tsx +++ b/src/app/(Sub)/auth/withdraw/WithdrawComponent.tsx @@ -3,13 +3,13 @@ import { useRouter, useSearchParams } from 'next/navigation'; import { patchDeleteAccount } from '@/apis'; -import { ACCESS_TOKEN } from '@/constants'; +import { COOKIE_ACCESS_TOKEN } from '@/constants'; import { useDidMount } from '@/hooks'; import { getClientCookie, removeClientCookie } from '@/utils'; export default function WithdrawComponent() { const router = useRouter(); - const token = getClientCookie(ACCESS_TOKEN); + const token = getClientCookie(COOKIE_ACCESS_TOKEN); const withdrawalReason = useSearchParams().get('reason'); useDidMount(async () => { @@ -24,7 +24,7 @@ export default function WithdrawComponent() { // alert('로그아웃 되었습니다'); // }); // } - removeClientCookie(ACCESS_TOKEN); + removeClientCookie(COOKIE_ACCESS_TOKEN); router.replace('/menu'); }); diff --git a/src/app/(Sub)/menu/MenuListSection.tsx b/src/app/(Sub)/menu/MenuListSection.tsx index b82250e6..76655035 100644 --- a/src/app/(Sub)/menu/MenuListSection.tsx +++ b/src/app/(Sub)/menu/MenuListSection.tsx @@ -4,13 +4,12 @@ import Link from 'next/link'; import LogoutModal from '@/components/Login/LogoutModal'; import { useOverlay } from '@/components/Overlay/useOverlay'; -import { ACCESS_TOKEN } from '@/constants'; -import { menuList } from '@/constants'; +import { COOKIE_ACCESS_TOKEN, MENU_LIST } from '@/constants'; import { useLaunchApp } from '@/hooks'; import { getClientCookie } from '@/utils'; export default function MenuListSection() { - const token = getClientCookie(ACCESS_TOKEN); + const token = getClientCookie(COOKIE_ACCESS_TOKEN); const { open } = useOverlay(); const { launchApp } = useLaunchApp(); @@ -20,7 +19,7 @@ export default function MenuListSection() { return (
- {menuList.map((item, idx) => + {MENU_LIST.map((item, idx) => item.text ? (
-
+
로그아웃
- + 탈퇴하기 diff --git a/src/app/(Sub)/menu/withdraw/page.tsx b/src/app/(Sub)/menu/withdraw/page.tsx index a216e977..a3753e4b 100644 --- a/src/app/(Sub)/menu/withdraw/page.tsx +++ b/src/app/(Sub)/menu/withdraw/page.tsx @@ -7,7 +7,7 @@ import { BottomFixedDiv, PrimaryButton } from '@/components/Button'; import Header from '@/components/Header'; import { Popup } from '@/components/Modal'; import { useOverlay } from '@/components/Overlay/useOverlay'; -import { withdrawReasonList } from '@/constants'; +import { WITHDRAW_REASON_LIST } from '@/constants'; const RadioInput = ({ checked }: { checked: boolean }) => { return checked ? ( @@ -51,7 +51,7 @@ export default function Page() { 알려줄 수 있나요?
- {withdrawReasonList.map((item, idx) => ( + {WITHDRAW_REASON_LIST.map((item, idx) => (
@@ -23,10 +23,10 @@ export default function LoginSection() {
-
{token ? email : '회원가입 / 로그인'}
+
{token ? COOKIE_EMAIL : '회원가입 / 로그인'}
{token - ? `${nickname}님 환영합니다! 새 포즈를 등록해 보세요 :)` + ? `${COOKIE_NICKNAME}님 환영합니다! 새 포즈를 등록해 보세요 :)` : '간편 로그인으로 3초만에 가입할 수 있어요.'}
diff --git a/src/components/Login/LogoutModal.tsx b/src/components/Login/LogoutModal.tsx index ab3c0e82..15a5e605 100644 --- a/src/components/Login/LogoutModal.tsx +++ b/src/components/Login/LogoutModal.tsx @@ -4,13 +4,13 @@ import { useRouter } from 'next/navigation'; import { PrimaryButton } from '@/components/Button'; import { Popup } from '@/components/Modal'; -import { ACCESS_TOKEN } from '@/constants'; +import { COOKIE_ACCESS_TOKEN } from '@/constants'; import { removeClientCookie } from '@/utils'; export default function LogoutModal({ exit }: { exit(): void }) { const router = useRouter(); const handleLogout = () => { - removeClientCookie(ACCESS_TOKEN); + removeClientCookie(COOKIE_ACCESS_TOKEN); router.push('/'); }; diff --git a/src/constants/cookie.ts b/src/constants/cookie.ts index 468c4752..de18e177 100644 --- a/src/constants/cookie.ts +++ b/src/constants/cookie.ts @@ -1,4 +1,4 @@ export const COOKIE_IS_TOOLTIP_OPEN = 'isToolTipOpen'; export const COOKIE_ACCESS_TOKEN = 'accesstoken'; -export const COOKIE_EMAIL = 'email'; -export const COOKIE_NICKNAME = 'nickname'; +export const COOKIE_EMAIL = 'COOKIE_EMAIL'; +export const COOKIE_NICKNAME = 'COOKIE_NICKNAME'; diff --git a/src/constants/data.ts b/src/constants/data.ts index c42749dc..a6f15e01 100644 --- a/src/constants/data.ts +++ b/src/constants/data.ts @@ -1,13 +1,13 @@ -import { INSTAGRAM_POSEPICKER_URL_SCHEME } from './deepLink'; -import { URL } from './url'; +import { INSTAGRAM_POSEPICKER_URL_SCHEME, URL } from '.'; -interface MenuI { +interface MenuIterface { text: string; link: string; deepLink?: string; highlight?: boolean; } -export const menuList: readonly MenuI[] = [ + +export const MENU_LIST: readonly MenuIterface[] = [ { text: '공지사항', link: URL.menu.notice }, { text: '자주 묻는 질문', link: URL.menu.faq }, { @@ -23,7 +23,7 @@ export const menuList: readonly MenuI[] = [ { text: '개인정보 처리방침', link: URL.menu.privacy }, ] as const; -export const peopleCountList = [ +export const PEOPLE_COUNT_LIST = [ { text: '전체', value: 0 }, { text: '1인', value: 1 }, { text: '2인', value: 2 }, @@ -32,7 +32,7 @@ export const peopleCountList = [ { text: '5인+', value: 5 }, ]; -export const frameCountList = [ +export const FRAME_COUNT_LIST = [ { text: '전체', value: 0 }, { text: '1컷', value: 1 }, { text: '3컷', value: 3 }, @@ -41,7 +41,7 @@ export const frameCountList = [ { text: '8컷+', value: 8 }, ]; -export const withdrawReasonList = [ +export const WITHDRAW_REASON_LIST = [ '사용을 잘 안하게 돼요', '원하는 포즈가 없어요', '포즈 탐색이 어려워요', From 619271e47df1859e41cc82cf317c18ed91c78d24 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 14:17:55 +0900 Subject: [PATCH 36/45] =?UTF-8?q?refactor:=20=EA=B8=B0=EC=A1=B4=20window.o?= =?UTF-8?q?pen=EC=97=90=EC=84=9C=20Link=ED=83=9C=EA=B7=B8=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Header/Banner.tsx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/components/Header/Banner.tsx b/src/components/Header/Banner.tsx index 88f22cf7..a2756514 100644 --- a/src/components/Header/Banner.tsx +++ b/src/components/Header/Banner.tsx @@ -1,23 +1,27 @@ import Image from 'next/image'; +import Link from 'next/link'; import { URL } from '@/constants'; export default function Banner() { return ( -
- +
+ main icon
포즈피커 - 네컷사진 포즈추천
앱에서 더 많은 기능 이용하기
- +
); } From 74f96cd27d934e37b7a3a2900d837ea22e780fc4 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 14:21:46 +0900 Subject: [PATCH 37/45] =?UTF-8?q?refactor:=20Banner=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=8D=94=20=EB=AA=85=ED=99=95=ED=95=9C=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=EC=9D=B8=20AppDownLoadBanner=EB=A1=9C=20=EB=84=A4=EC=9D=B4?= =?UTF-8?q?=EB=B0=8D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Header/{Banner.tsx => AppDownloadBanner.tsx} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/components/Header/{Banner.tsx => AppDownloadBanner.tsx} (85%) diff --git a/src/components/Header/Banner.tsx b/src/components/Header/AppDownloadBanner.tsx similarity index 85% rename from src/components/Header/Banner.tsx rename to src/components/Header/AppDownloadBanner.tsx index a2756514..41063227 100644 --- a/src/components/Header/Banner.tsx +++ b/src/components/Header/AppDownloadBanner.tsx @@ -3,9 +3,9 @@ import Link from 'next/link'; import { URL } from '@/constants'; -export default function Banner() { +export default function AppDownloadBanner() { return ( -
+
Date: Tue, 13 Aug 2024 14:25:09 +0900 Subject: [PATCH 38/45] =?UTF-8?q?feat:=20.bottom-fixed=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/globals.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/app/globals.css b/src/app/globals.css index 2524c824..6089cc02 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -28,6 +28,12 @@ body { } } +@layer base { + .bottom-fixed { + @apply fixed inset-x-0 bottom-0 z-30; + } +} + /*PWA*/ @media all and (display-mode: standalone) { #ios-banner { From 300c235993d871e9d352824a3546e8ccf3fa1d2c Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 14:39:23 +0900 Subject: [PATCH 39/45] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20depth?= =?UTF-8?q?=EB=A5=BC=20=EC=A0=9C=EA=B1=B0=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Button/BottomFixedDiv.tsx | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/src/components/Button/BottomFixedDiv.tsx b/src/components/Button/BottomFixedDiv.tsx index 52acd2c3..51f3bfb8 100644 --- a/src/components/Button/BottomFixedDiv.tsx +++ b/src/components/Button/BottomFixedDiv.tsx @@ -1,29 +1,17 @@ -import Banner from '../Header/Banner'; +import AppDownloadBanner from '../Header/AppDownloadBanner'; import { StrictPropsWithChildren } from '@/types'; - -export function ButtonList({ children }: StrictPropsWithChildren) { - return
{children}
; -} - -export function BottomDiv({ children }: StrictPropsWithChildren) { - return ( -
- {children} -
- ); -} +import { isIOS } from '@/utils'; export function BottomFixedDiv({ children }: StrictPropsWithChildren) { return ( <> -
- {children} -
- +
+
+
{children}
+ {isIOS() && }
-
); } From c5b5b75db3f7e7a6b485fd91ec9de69068f163dc Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 14:40:22 +0900 Subject: [PATCH 40/45] =?UTF-8?q?refactor:=20`.bottom-fixed`=20=EC=9C=A0?= =?UTF-8?q?=ED=8B=B8=20=EC=8A=A4=ED=83=80=EC=9D=BC=EC=9D=84=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(Main)/talk/TalkSection.tsx | 6 +++--- src/app/(Main)/talk/TitleSection.tsx | 2 +- src/app/(Main)/talk/page.tsx | 5 +++-- src/app/globals.css | 6 ------ 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/app/(Main)/talk/TalkSection.tsx b/src/app/(Main)/talk/TalkSection.tsx index f3903d9e..d74d2a8b 100644 --- a/src/app/(Main)/talk/TalkSection.tsx +++ b/src/app/(Main)/talk/TalkSection.tsx @@ -32,11 +32,11 @@ export default function TalkWordSection() { return (
-

{talkWord}

+

{talkWord}

-
+
{!isWordLoaded && isLoading && } {isWordLoaded && isLoading && ( @@ -47,7 +47,7 @@ export default function TalkWordSection() {
- +
); diff --git a/src/app/(Main)/talk/TitleSection.tsx b/src/app/(Main)/talk/TitleSection.tsx index 53eacc36..627e07c7 100644 --- a/src/app/(Main)/talk/TitleSection.tsx +++ b/src/app/(Main)/talk/TitleSection.tsx @@ -4,7 +4,7 @@ import { useState } from 'react'; import TalkToolTip from './TalkToolTip'; import { Icon } from '@/components/Button/Icon'; import { Spacing } from '@/components/Spacing'; -import { ICON, COOKIE_IS_TOOLTIP_OPEN } from '@/constants'; +import { COOKIE_IS_TOOLTIP_OPEN, ICON } from '@/constants'; import { setClientCookie } from '@/utils'; interface TitleSectionProps { diff --git a/src/app/(Main)/talk/page.tsx b/src/app/(Main)/talk/page.tsx index fe294378..e9b3fce3 100644 --- a/src/app/(Main)/talk/page.tsx +++ b/src/app/(Main)/talk/page.tsx @@ -1,12 +1,13 @@ import TalkWordSection from './TalkSection'; import TalkTitleSection from './TitleSection'; +import { COOKIE_IS_TOOLTIP_OPEN } from '@/constants'; import { getServerCookie } from '@/utils'; export default async function Talk() { - const isToolTipOpen = (await getServerCookie('tooltipIsOpen')) === 'true'; + const isToolTipOpen = (await getServerCookie(COOKIE_IS_TOOLTIP_OPEN)) === 'true'; return ( -
+
diff --git a/src/app/globals.css b/src/app/globals.css index 6089cc02..2524c824 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -28,12 +28,6 @@ body { } } -@layer base { - .bottom-fixed { - @apply fixed inset-x-0 bottom-0 z-30; - } -} - /*PWA*/ @media all and (display-mode: standalone) { #ios-banner { From 0e89fe2d6c047f8b47854277d8e8b52387c8c47d Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 14:43:23 +0900 Subject: [PATCH 41/45] =?UTF-8?q?refactor:=20=EB=84=A4=EC=9D=B4=EB=B0=8D?= =?UTF-8?q?=EC=9D=84=20MainFooter=EB=A1=9C=20=EC=88=98=EC=A0=95=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BottomFixedDiv.tsx => app/(Main)/MainFooter.tsx} | 6 +++--- src/app/(Main)/pick/PickComponent.tsx | 7 ++++--- src/app/(Main)/talk/TalkSection.tsx | 7 ++++--- src/app/(Sub)/detail/[id]/DetailSection.tsx | 7 ++++--- src/app/(Sub)/menu/withdraw/page.tsx | 7 ++++--- src/components/Button/index.ts | 1 - 6 files changed, 19 insertions(+), 16 deletions(-) rename src/{components/Button/BottomFixedDiv.tsx => app/(Main)/MainFooter.tsx} (61%) diff --git a/src/components/Button/BottomFixedDiv.tsx b/src/app/(Main)/MainFooter.tsx similarity index 61% rename from src/components/Button/BottomFixedDiv.tsx rename to src/app/(Main)/MainFooter.tsx index 51f3bfb8..95cfeb3b 100644 --- a/src/components/Button/BottomFixedDiv.tsx +++ b/src/app/(Main)/MainFooter.tsx @@ -1,12 +1,12 @@ -import AppDownloadBanner from '../Header/AppDownloadBanner'; +import AppDownloadBanner from '../../components/Header/AppDownloadBanner'; import { StrictPropsWithChildren } from '@/types'; import { isIOS } from '@/utils'; -export function BottomFixedDiv({ children }: StrictPropsWithChildren) { +export function MainFooter({ children }: StrictPropsWithChildren) { return ( <>
-
+
{children}
{isIOS() && } diff --git a/src/app/(Main)/pick/PickComponent.tsx b/src/app/(Main)/pick/PickComponent.tsx index 453e9a57..d8c74a73 100644 --- a/src/app/(Main)/pick/PickComponent.tsx +++ b/src/app/(Main)/pick/PickComponent.tsx @@ -5,8 +5,9 @@ import { useState } from 'react'; import Lottie from 'react-lottie-player'; import lottiePick from '#/lotties/pick.json'; +import { MainFooter } from '../MainFooter'; import { usePosePickQuery } from '@/apis'; -import { BottomFixedDiv, PrimaryButton } from '@/components/Button'; +import { PrimaryButton } from '@/components/Button'; import PoseImage from '@/components/Modal/PoseImage'; import { SelectionBasic } from '@/components/Selection'; import { PEOPLE_COUNT_LIST } from '@/constants'; @@ -51,12 +52,12 @@ export default function PickComponent() {
- + - + ); } diff --git a/src/app/(Main)/talk/TalkSection.tsx b/src/app/(Main)/talk/TalkSection.tsx index d74d2a8b..a398334c 100644 --- a/src/app/(Main)/talk/TalkSection.tsx +++ b/src/app/(Main)/talk/TalkSection.tsx @@ -6,8 +6,9 @@ import Lottie from 'react-lottie-player'; import lottieTalkAfterClick from '#/lotties/talk_after_click.json'; import lottieTalkBeforeClick from '#/lotties/talk_before_click.json'; +import { MainFooter } from '../MainFooter'; import { usePoseTalkQuery } from '@/apis'; -import { BottomFixedDiv, PrimaryButton } from '@/components/Button'; +import { PrimaryButton } from '@/components/Button'; import { Spacing } from '@/components/Spacing'; const INITIAL_TALK_WORD = `제시어에 맞춰 포즈를 취해요!`; @@ -46,9 +47,9 @@ export default function TalkWordSection() { )}
- + - +
); } diff --git a/src/app/(Sub)/detail/[id]/DetailSection.tsx b/src/app/(Sub)/detail/[id]/DetailSection.tsx index 1e03258f..eec0403a 100644 --- a/src/app/(Sub)/detail/[id]/DetailSection.tsx +++ b/src/app/(Sub)/detail/[id]/DetailSection.tsx @@ -6,7 +6,8 @@ import { useState } from 'react'; import Source from './Source'; import TagButton from './TagButton'; import { usePoseDetailQuery } from '@/apis'; -import { BottomFixedDiv, PrimaryButton } from '@/components/Button'; +import { MainFooter } from '@/app/(Main)/MainFooter'; +import { PrimaryButton } from '@/components/Button'; import { Popup } from '@/components/Modal'; import PoseImage from '@/components/Modal/PoseImage'; import { useOverlay } from '@/components/Overlay/useOverlay'; @@ -50,7 +51,7 @@ export default function DetailSection({ poseId }: DetailSectionProps) { {tagAttributes?.split(',').map((tag, index) => )}
- + shareKakao(poseId)} /> - +
); } diff --git a/src/app/(Sub)/menu/withdraw/page.tsx b/src/app/(Sub)/menu/withdraw/page.tsx index a3753e4b..7ba1b43c 100644 --- a/src/app/(Sub)/menu/withdraw/page.tsx +++ b/src/app/(Sub)/menu/withdraw/page.tsx @@ -3,7 +3,8 @@ import { useRouter } from 'next/navigation'; import { useState } from 'react'; -import { BottomFixedDiv, PrimaryButton } from '@/components/Button'; +import { MainFooter } from '@/app/(Main)/MainFooter'; +import { PrimaryButton } from '@/components/Button'; import Header from '@/components/Header'; import { Popup } from '@/components/Modal'; import { useOverlay } from '@/components/Overlay/useOverlay'; @@ -84,14 +85,14 @@ export default function Page() { /> )}
- + router.back()} /> {withdrawalReason ? ( ) : ( )} - + ); } diff --git a/src/components/Button/index.ts b/src/components/Button/index.ts index d8396429..71222449 100644 --- a/src/components/Button/index.ts +++ b/src/components/Button/index.ts @@ -1,3 +1,2 @@ -export { BottomFixedDiv, ButtonList, BottomDiv } from './BottomFixedDiv'; export { Icon, IconButton } from './Icon'; export { default as PrimaryButton } from './PrimaryButton'; From e8703859d1e3546d2b6f972c628f34ce1d281da1 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 14:55:41 +0900 Subject: [PATCH 42/45] =?UTF-8?q?fix:=20=ED=83=80=EC=9E=85=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=EB=A5=BC=20=EA=B3=A0=EC=B9=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/config/privateApi.ts | 2 +- src/apis/type.ts | 4 ++-- src/app/(Main)/feed/FilterSheet.tsx | 16 +++++++++++----- src/app/(Sub)/auth/AuthComponent.tsx | 8 ++++---- src/components/Login/LoginModal.tsx | 4 +--- src/components/Login/LoginSection.tsx | 17 ++++++++--------- src/components/Modal/Popup.tsx | 9 ++++----- 7 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/apis/config/privateApi.ts b/src/apis/config/privateApi.ts index bf418c45..e4496e28 100644 --- a/src/apis/config/privateApi.ts +++ b/src/apis/config/privateApi.ts @@ -2,8 +2,8 @@ import axios from 'axios'; import { CustomInstance } from './type'; import { - COOKIE_ACCESS_TOKEN, BASE_API_URL, + COOKIE_ACCESS_TOKEN, ERROR_UNAUTHORIZED, ERROR_UNSUPPORTED_MEDIA_TYPE, } from '@/constants'; diff --git a/src/apis/type.ts b/src/apis/type.ts index 21c40dc0..469db938 100644 --- a/src/apis/type.ts +++ b/src/apis/type.ts @@ -83,8 +83,8 @@ export interface PoseTalkResponse { // 로그인 export interface RegisterResponse { id: number; - COOKIE_NICKNAME: string; - COOKIE_EMAIL: string; + nickname: string; + email: string; token: { accessToken: string; refreshToken: string; diff --git a/src/app/(Main)/feed/FilterSheet.tsx b/src/app/(Main)/feed/FilterSheet.tsx index 7dc2cff2..c0ba8a94 100644 --- a/src/app/(Main)/feed/FilterSheet.tsx +++ b/src/app/(Main)/feed/FilterSheet.tsx @@ -3,7 +3,7 @@ import { useEffect, useState } from 'react'; import { FilterTagsResponse, useFilterTagQuery } from '@/apis'; -import { BottomDiv, PrimaryButton } from '@/components/Button'; +import { PrimaryButton } from '@/components/Button'; import BottomSheet from '@/components/Modal/BottomSheet'; import { SelectionBasic, SelectionTagList } from '@/components/Selection'; import { FRAME_COUNT_LIST, PEOPLE_COUNT_LIST } from '@/constants'; @@ -72,10 +72,16 @@ export default function FilterSheet() { )}
- - - - +
+ + +
); } diff --git a/src/app/(Sub)/auth/AuthComponent.tsx b/src/app/(Sub)/auth/AuthComponent.tsx index ba214f3a..1e5a702b 100644 --- a/src/app/(Sub)/auth/AuthComponent.tsx +++ b/src/app/(Sub)/auth/AuthComponent.tsx @@ -18,13 +18,13 @@ export default function AuthComponent({ code }: AuthComponentProps) { try { const { token: { accessToken }, - COOKIE_EMAIL, - COOKIE_NICKNAME, + email, + nickname, } = await getRegister(code); setClientCookie(COOKIE_ACCESS_TOKEN, accessToken); - setClientCookie(COOKIE_EMAIL, COOKIE_EMAIL); - setClientCookie(COOKIE_NICKNAME, COOKIE_NICKNAME); + setClientCookie(COOKIE_EMAIL, email); + setClientCookie(COOKIE_NICKNAME, nickname); alert(`로그인에 성공했어요!`); router.push('/'); diff --git a/src/components/Login/LoginModal.tsx b/src/components/Login/LoginModal.tsx index 6e796267..62b9fc39 100644 --- a/src/components/Login/LoginModal.tsx +++ b/src/components/Login/LoginModal.tsx @@ -1,5 +1,3 @@ -'use client'; - import { useRouter } from 'next/navigation'; import { AppleButton, KakaoButton } from './LoginButton'; @@ -23,7 +21,7 @@ export default function LoginModal({ onClose }: LoginModalProps) { content={`로그인하면 북마크도 쓸 수 있어요!\n간편 로그인으로 3초만에 가입해요.`} onClose={onClose} > -
+
window.open(URL.appstore)} />
diff --git a/src/components/Login/LoginSection.tsx b/src/components/Login/LoginSection.tsx index c5cb2ab9..328f0543 100644 --- a/src/components/Login/LoginSection.tsx +++ b/src/components/Login/LoginSection.tsx @@ -3,30 +3,29 @@ import LoginModal from './LoginModal'; import { Icon } from '@/components/Button/Icon'; import { useOverlay } from '@/components/Overlay/useOverlay'; -import { COOKIE_ACCESS_TOKEN, COOKIE_EMAIL, COOKIE_NICKNAME } from '@/constants'; -import { ICON } from '@/constants'; +import { COOKIE_ACCESS_TOKEN, COOKIE_EMAIL, COOKIE_NICKNAME, ICON } from '@/constants'; import { getClientCookie } from '@/utils'; export default function LoginSection() { const { open, exit } = useOverlay(); const token = getClientCookie(COOKIE_ACCESS_TOKEN); - const COOKIE_EMAIL = getClientCookie(COOKIE_EMAIL); - const COOKIE_NICKNAME = getClientCookie(COOKIE_NICKNAME); + const email = getClientCookie(COOKIE_EMAIL); + const nickname = getClientCookie(COOKIE_NICKNAME); return ( -
+
!token && open(() => )} > -
+
-
{token ? COOKIE_EMAIL : '회원가입 / 로그인'}
+
{token ? email : '회원가입 / 로그인'}
{token - ? `${COOKIE_NICKNAME}님 환영합니다! 새 포즈를 등록해 보세요 :)` + ? `${nickname}님 환영합니다! 새 포즈를 등록해 보세요 :)` : '간편 로그인으로 3초만에 가입할 수 있어요.'}
diff --git a/src/components/Modal/Popup.tsx b/src/components/Modal/Popup.tsx index 329a38f6..8f473238 100644 --- a/src/components/Modal/Popup.tsx +++ b/src/components/Modal/Popup.tsx @@ -1,6 +1,5 @@ import { PropsWithChildren } from 'react'; -import { ButtonList } from '../Button'; interface PopupI extends PropsWithChildren { title?: string; @@ -10,16 +9,16 @@ interface PopupI extends PropsWithChildren { export default function Popup({ title, content, children, onClose }: PopupI) { return ( -
+
-
+
{(title || content) && ( -
+

{title}

{content}
)} - {children} + {children}
); From 1ad7705860bde389fbcf6c4cb03e8a25af441608 Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 20:47:54 +0900 Subject: [PATCH 43/45] =?UTF-8?q?feat:=20CI=EA=B3=BC=EC=A0=95=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=BA=90=EC=8B=B1=EC=9D=84=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: https://nextjs.org/docs/pages/building-your-application/deploying/ci-build-caching#github-actions --- .github/workflows/ci.yml | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6ce0db0..60db4aa0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,13 +6,24 @@ jobs: ci: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + name: Checkout repository + + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: | + ~/.npm + ${{ github.workspace }}/.next/cache + key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }} + restore-keys: | + ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- - - name: Install dependencies - run: yarn install --frozen-lockfile + - name: Install dependencies + run: yarn install --frozen-lockfile - - name: Check typescript - run: yarn type:check + - name: Check typescript + run: yarn type:check - - name: Check eslint - run: yarn lint \ No newline at end of file + - name: Check eslint + run: yarn lint From 2a868aa9663f66a9bded893f0acf36e7ca8a180f Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 20:56:21 +0900 Subject: [PATCH 44/45] =?UTF-8?q?fix:=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=EB=A5=BC=20yarn=EC=97=90=EC=84=9C?= =?UTF-8?q?=20npm=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 60db4aa0..5586f43e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,7 @@ jobs: ci: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@main name: Checkout repository - name: Cache dependencies @@ -20,10 +20,10 @@ jobs: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- - name: Install dependencies - run: yarn install --frozen-lockfile + run: npm install --frozen-lockfile - name: Check typescript - run: yarn type:check + run: npm run type:check - name: Check eslint - run: yarn lint + run: npm run lint From 8091c90c50923cd77d0cc625bfbced26970ffabe Mon Sep 17 00:00:00 2001 From: guesung Date: Tue, 13 Aug 2024 21:15:05 +0900 Subject: [PATCH 45/45] =?UTF-8?q?fix:=20yarn=EC=97=90=20=EB=A7=9E=EA=B2=8C?= =?UTF-8?q?=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=EB=A5=BC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5586f43e..161bb3ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,18 +12,15 @@ jobs: - name: Cache dependencies uses: actions/cache@v4 with: - path: | - ~/.npm - ${{ github.workspace }}/.next/cache - key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }} - restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- + path: ${{ github.workspace }}/.next/cache + key: ${{ runner.os }}-nextjs-${{ hashFiles('yarn.lock') }} + restore-keys: ${{ runner.os }}-nextjs-${{ hashFiles('yarn.lock') }}- - name: Install dependencies - run: npm install --frozen-lockfile + run: yarn install --frozen-lockfile - name: Check typescript - run: npm run type:check + run: yarn run type:check - name: Check eslint - run: npm run lint + run: yarn run lint