From f16f524d1387902cd12a5fd13475f32da82f0478 Mon Sep 17 00:00:00 2001 From: six-standard Date: Mon, 10 Mar 2025 22:09:32 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=ED=8A=B8=EB=9E=98=EC=BB=A4=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(auth-required)/leaderboards/Content.tsx | 6 +- .../(auth-required)/main/Content.tsx | 17 ++--- src/app/(with-tracker)/(login)/Content.tsx | 2 - src/app/(with-tracker)/layout.tsx | 8 +-- .../auth-required/header/Section.tsx | 2 - src/components/auth-required/header/index.tsx | 6 +- .../auth-required/main/Section/index.tsx | 6 +- .../auth-required/main/Summary/index.tsx | 6 +- src/utils/trackUtil.tsx | 62 ------------------- 9 files changed, 9 insertions(+), 106 deletions(-) delete mode 100644 src/utils/trackUtil.tsx diff --git a/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx b/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx index e6323ae..cae40d6 100644 --- a/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx +++ b/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx @@ -3,7 +3,6 @@ import { Dropdown, Ranker, Rank } from '@/components'; import { SCREENS } from '@/constants'; import { useResponsive, useSearchParam } from '@/hooks'; -import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; const data = [ { rank: 1, name: '정현우', count: 1235 }, @@ -25,10 +24,7 @@ export const Content = () => { ['조회수', 'views'], ['좋아요', 'likes'], ]} - onChange={(data) => { - trackUserEvent(MessageEnum.SORT_INTERACT_BOARD); - setSearchParams({ type: data as string }); - }} + onChange={(data) => setSearchParams({ type: data as string })} defaultValue={'조회수'} />
diff --git a/src/app/(with-tracker)/(auth-required)/main/Content.tsx b/src/app/(with-tracker)/(auth-required)/main/Content.tsx index ecd2981..0397a1a 100644 --- a/src/app/(with-tracker)/(auth-required)/main/Content.tsx +++ b/src/app/(with-tracker)/(auth-required)/main/Content.tsx @@ -7,7 +7,6 @@ import { Button, Dropdown, Section, Summary, Check } from '@/components'; import { postList, postSummary } from '@/apis'; import { PATHS, SORT_TYPE } from '@/constants'; import { useSearchParam } from '@/hooks/useSearchParam'; -import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; import { SortKey, SortValue } from '@/types'; const sorts: Array<[SortKey, SortValue]> = Object.entries(SORT_TYPE) as Array< @@ -60,13 +59,7 @@ export const Content = () => {
- @@ -77,7 +70,6 @@ export const Content = () => {
{ - trackUserEvent(MessageEnum.SORT_INTERACT_MAIN); setSearchParams({ asc: searchParams.asc === 'true' ? 'false' : 'true', }); @@ -91,10 +83,9 @@ export const Content = () => { SORT_TYPE['작성일순'] } options={sorts} - onChange={(data) => { - trackUserEvent(MessageEnum.SORT_INTERACT_MAIN); - setSearchParams({ sort: data as SortValue }); - }} + onChange={(data) => + setSearchParams({ sort: data as SortValue }) + } />
diff --git a/src/app/(with-tracker)/(login)/Content.tsx b/src/app/(with-tracker)/(login)/Content.tsx index bad17fb..4ca375a 100644 --- a/src/app/(with-tracker)/(login)/Content.tsx +++ b/src/app/(with-tracker)/(login)/Content.tsx @@ -7,7 +7,6 @@ import { useMutation } from '@tanstack/react-query'; import { Input, Button } from '@/components'; import { LoginVo } from '@/types'; import { login, sampleLogin } from '@/apis'; -import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; const responsiveStyle = "flex items-center gap-5 max-MBI:before:inline-block max-MBI:before:bg-[url('/favicon.png')] max-MBI:before:[background-size:_100%_100%] max-MBI:before:w-16 max-MBI:before:h-16"; @@ -22,7 +21,6 @@ export const Content = () => { } = useForm({ mode: 'all' }); const onSuccess = () => { - trackUserEvent(MessageEnum.LOGIN); replace('/main?asc=false&sort='); }; diff --git a/src/app/(with-tracker)/layout.tsx b/src/app/(with-tracker)/layout.tsx index dd524eb..16fd798 100644 --- a/src/app/(with-tracker)/layout.tsx +++ b/src/app/(with-tracker)/layout.tsx @@ -1,11 +1,5 @@ import { Suspense } from 'react'; -import { TrackVisitEvent } from '@/utils/trackUtil'; export default function Layout({ children }: { children: React.ReactNode }) { - return ( - - - {children} - - ); + return {children}; } diff --git a/src/components/auth-required/header/Section.tsx b/src/components/auth-required/header/Section.tsx index b61ad7f..69bc9b7 100644 --- a/src/components/auth-required/header/Section.tsx +++ b/src/components/auth-required/header/Section.tsx @@ -2,7 +2,6 @@ import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { Icon, NameType } from '@/components'; import { COLORS } from '@/constants'; -import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; export const defaultStyle = 'w-[180px] h-[65px] px-9 transition-all duration-300 shrink-0 max-MBI:w-[65px] max-MBI:px-0 '; @@ -48,7 +47,6 @@ export const Section = ({ href={action} className={defaultStyle + navigateStyle} id="navigation" - onClick={() => trackUserEvent(MessageEnum.NAVIGATE)} > {
diff --git a/src/components/auth-required/main/Section/index.tsx b/src/components/auth-required/main/Section/index.tsx index bdb1c45..bf9e7c2 100644 --- a/src/components/auth-required/main/Section/index.tsx +++ b/src/components/auth-required/main/Section/index.tsx @@ -1,7 +1,6 @@ 'use client'; import { useState } from 'react'; -import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; import { parseNumber } from '@/utils/numberUtil'; import { COLORS, env, PATHS } from '@/constants'; import { PostType, UserDto } from '@/types'; @@ -22,10 +21,7 @@ export const Section = (p: PostType) => {
{ - trackUserEvent(MessageEnum.SECTION_INTERACT_MAIN); - setOpen((prev) => !prev); - }} + onClick={() => setOpen((prev) => !prev)} >
{
{ - trackUserEvent(MessageEnum.SECTION_INTERACT_MAIN); - setOpen((prev) => !prev); - }} + onClick={() => setOpen((prev) => !prev)} >
요약 정보 {open ? '펼치기' : '접기'} diff --git a/src/utils/trackUtil.tsx b/src/utils/trackUtil.tsx deleted file mode 100644 index 622f399..0000000 --- a/src/utils/trackUtil.tsx +++ /dev/null @@ -1,62 +0,0 @@ -'use client'; - -import { useEffect, useRef } from 'react'; -import { instance } from '@/apis'; -import { env } from '@/constants'; - -type VisitDataType = { - loadDate?: string; - unloadDate?: string; -}; - -export const MessageEnum = { - LOGIN: 11, - NAVIGATE: 12, - LOGOUT: 13, - SECTION_INTERACT_MAIN: 21, - SORT_INTERACT_MAIN: 22, - REFRESH_INTERACT_MAIN: 23, - SORT_INTERACT_BOARD: 31, -} as const; - -const { EVENT_LOG, NODE_ENV } = env; - -export const trackUserEvent = (event: keyof typeof MessageEnum | number) => { - const eventType = typeof event === 'number' ? event : MessageEnum[event]; - - if (EVENT_LOG === 'true') { - instance('/event', { - body: { eventType }, - method: 'POST', - keepalive: true, - }); - } -}; - -export const TrackVisitEvent = () => { - const data = useRef({ - loadDate: undefined, - unloadDate: undefined, - }); - - const setUnloadData = () => { - data.current = { ...data.current, unloadDate: new Date().toISOString() }; - instance('/stay', { body: data.current, method: 'POST', keepalive: true }); - }; - - useEffect(() => { - // 페이지 로드 시 시간 기록 - data.current.loadDate = new Date().toISOString(); - if (NODE_ENV === 'production' && EVENT_LOG === 'true') { - window.addEventListener('unload', setUnloadData); - } - - return () => { - if (NODE_ENV === 'production' && EVENT_LOG === 'true') { - window.removeEventListener('unload', setUnloadData); - } - }; - }, []); - - return eventTracker; -}; From 94e4e2f134ffdcccde4962c257b51157539d52af Mon Sep 17 00:00:00 2001 From: six-standard Date: Mon, 10 Mar 2025 22:42:00 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=ED=8F=B4=EB=8D=94=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/__test__/login.test.tsx | 2 +- src/__test__/main.test.tsx | 2 +- .../(auth-required)/compare/page.tsx | 4 +--- .../components}/header/Section.tsx | 0 .../components}/header/index.tsx | 7 +++---- .../(auth-required)/layout.tsx | 11 ++++------- .../(auth-required)/leaderboards/Content.tsx | 4 +++- .../leaderboards/components}/Rank.tsx | 2 +- .../leaderboards/components}/Ranker.tsx | 0 .../leaderboards/components}/index.ts | 0 .../(auth-required)/leaderboards/page.tsx | 0 .../(auth-required)/main/Content.tsx | 3 ++- .../main/components}/Section/Graph.tsx | 0 .../main/components}/Section/index.tsx | 0 .../main/components}/Summary/BarContent.tsx | 0 .../components}/Summary/SidebarContent.tsx | 0 .../main/components}/Summary/index.tsx | 0 .../(auth-required)/main/components}/index.ts | 0 .../(auth-required)/main/page.tsx | 0 .../{(with-tracker) => }/(login)/Content.tsx | 4 ++-- src/app/{(with-tracker) => }/(login)/page.tsx | 5 +---- src/app/(with-tracker)/layout.tsx | 5 ----- src/app/layout.tsx | 18 ++++++++---------- src/components/{common => }/ArriveSoon.tsx | 0 src/components/{common => }/Button.tsx | 0 src/components/{common => }/Check.tsx | 0 src/components/{common => }/Dropdown.tsx | 0 src/components/{common => }/Icon/SvgrMock.tsx | 0 .../{common => }/Icon/icons/Analytics.svg | 0 .../{common => }/Icon/icons/Arrow.svg | 0 .../{common => }/Icon/icons/Compare.svg | 0 .../{common => }/Icon/icons/Leaderboards.svg | 0 .../{common => }/Icon/icons/Like.svg | 0 .../{common => }/Icon/icons/Shortcut.svg | 0 .../{common => }/Icon/icons/index.ts | 0 src/components/{common => }/Icon/index.tsx | 0 src/components/{common => }/Input.tsx | 2 +- .../ChannelTalkProvider.tsx | 0 .../{common => Providers}/QueryProvider.tsx | 0 src/components/Providers/index.ts | 2 ++ src/components/auth-required/index.ts | 3 --- src/components/common/index.ts | 8 -------- src/components/index.ts | 9 +++++++-- 43 files changed, 37 insertions(+), 54 deletions(-) rename src/app/{(with-tracker) => }/(auth-required)/compare/page.tsx (67%) rename src/{components/auth-required => app/(auth-required)/components}/header/Section.tsx (100%) rename src/{components/auth-required => app/(auth-required)/components}/header/index.tsx (99%) rename src/app/{(with-tracker) => }/(auth-required)/layout.tsx (87%) rename src/app/{(with-tracker) => }/(auth-required)/leaderboards/Content.tsx (94%) rename src/{components/auth-required/leaderboards => app/(auth-required)/leaderboards/components}/Rank.tsx (87%) rename src/{components/auth-required/leaderboards => app/(auth-required)/leaderboards/components}/Ranker.tsx (100%) rename src/{components/auth-required/leaderboards => app/(auth-required)/leaderboards/components}/index.ts (100%) rename src/app/{(with-tracker) => }/(auth-required)/leaderboards/page.tsx (100%) rename src/app/{(with-tracker) => }/(auth-required)/main/Content.tsx (97%) rename src/{components/auth-required/main => app/(auth-required)/main/components}/Section/Graph.tsx (100%) rename src/{components/auth-required/main => app/(auth-required)/main/components}/Section/index.tsx (100%) rename src/{components/auth-required/main => app/(auth-required)/main/components}/Summary/BarContent.tsx (100%) rename src/{components/auth-required/main => app/(auth-required)/main/components}/Summary/SidebarContent.tsx (100%) rename src/{components/auth-required/main => app/(auth-required)/main/components}/Summary/index.tsx (100%) rename src/{components/auth-required/main => app/(auth-required)/main/components}/index.ts (100%) rename src/app/{(with-tracker) => }/(auth-required)/main/page.tsx (100%) rename src/app/{(with-tracker) => }/(login)/Content.tsx (100%) rename src/app/{(with-tracker) => }/(login)/page.tsx (67%) delete mode 100644 src/app/(with-tracker)/layout.tsx rename src/components/{common => }/ArriveSoon.tsx (100%) rename src/components/{common => }/Button.tsx (100%) rename src/components/{common => }/Check.tsx (100%) rename src/components/{common => }/Dropdown.tsx (100%) rename src/components/{common => }/Icon/SvgrMock.tsx (100%) rename src/components/{common => }/Icon/icons/Analytics.svg (100%) rename src/components/{common => }/Icon/icons/Arrow.svg (100%) rename src/components/{common => }/Icon/icons/Compare.svg (100%) rename src/components/{common => }/Icon/icons/Leaderboards.svg (100%) rename src/components/{common => }/Icon/icons/Like.svg (100%) rename src/components/{common => }/Icon/icons/Shortcut.svg (100%) rename src/components/{common => }/Icon/icons/index.ts (100%) rename src/components/{common => }/Icon/index.tsx (100%) rename src/components/{common => }/Input.tsx (94%) rename src/components/{common => Providers}/ChannelTalkProvider.tsx (100%) rename src/components/{common => Providers}/QueryProvider.tsx (100%) create mode 100644 src/components/Providers/index.ts delete mode 100644 src/components/auth-required/index.ts delete mode 100644 src/components/common/index.ts diff --git a/src/__test__/login.test.tsx b/src/__test__/login.test.tsx index b5ff971..6055bca 100644 --- a/src/__test__/login.test.tsx +++ b/src/__test__/login.test.tsx @@ -3,7 +3,7 @@ import { act, screen } from '@testing-library/react'; import { ToastContainer } from 'react-toastify'; import { useRouter } from 'next/navigation'; import { renderWithQueryClient } from '@/utils/componentUtil'; -import { default as Login } from '@/app/(with-tracker)/(login)/page'; +import { default as Login } from '@/app/(login)/page'; jest.mock('next/navigation', () => ({ useRouter: jest.fn(), diff --git a/src/__test__/main.test.tsx b/src/__test__/main.test.tsx index 340cc7c..8030066 100644 --- a/src/__test__/main.test.tsx +++ b/src/__test__/main.test.tsx @@ -1,6 +1,6 @@ import { screen, waitFor } from '@testing-library/react'; import { renderWithQueryClient } from '@/utils'; -import { Content } from '@/app/(with-tracker)/(auth-required)/main/Content'; +import { Content } from '@/app/(auth-required)/main/Content'; import { Header } from '@/components'; jest.mock('next/navigation', () => ({ diff --git a/src/app/(with-tracker)/(auth-required)/compare/page.tsx b/src/app/(auth-required)/compare/page.tsx similarity index 67% rename from src/app/(with-tracker)/(auth-required)/compare/page.tsx rename to src/app/(auth-required)/compare/page.tsx index 693d51b..b058aa6 100644 --- a/src/app/(with-tracker)/(auth-required)/compare/page.tsx +++ b/src/app/(auth-required)/compare/page.tsx @@ -1,9 +1,7 @@ import { Metadata } from 'next'; import { ArriveSoon } from '@/components'; -export const metadata: Metadata = { - title: '통계 비교', -}; +export const metadata: Metadata = { title: '통계 비교' }; export default function Page() { return ; diff --git a/src/components/auth-required/header/Section.tsx b/src/app/(auth-required)/components/header/Section.tsx similarity index 100% rename from src/components/auth-required/header/Section.tsx rename to src/app/(auth-required)/components/header/Section.tsx diff --git a/src/components/auth-required/header/index.tsx b/src/app/(auth-required)/components/header/index.tsx similarity index 99% rename from src/components/auth-required/header/index.tsx rename to src/app/(auth-required)/components/header/index.tsx index 4d3b691..f846a1a 100644 --- a/src/components/auth-required/header/index.tsx +++ b/src/app/(auth-required)/components/header/index.tsx @@ -1,15 +1,14 @@ 'use client'; -import { useEffect, useRef, useState } from 'react'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { usePathname, useRouter } from 'next/navigation'; +import { useEffect, useRef, useState } from 'react'; import Image from 'next/image'; -import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; +import { revalidate } from '@/utils/revalidateUtil'; import { PATHS, SCREENS } from '@/constants'; import { NameType } from '@/components'; import { useResponsive } from '@/hooks'; import { logout, me } from '@/apis'; -import { revalidate } from '@/utils/revalidateUtil'; - import { defaultStyle, Section, textStyle } from './Section'; const PARAMS = { diff --git a/src/app/(with-tracker)/(auth-required)/layout.tsx b/src/app/(auth-required)/layout.tsx similarity index 87% rename from src/app/(with-tracker)/(auth-required)/layout.tsx rename to src/app/(auth-required)/layout.tsx index f819dca..3643288 100644 --- a/src/app/(with-tracker)/(auth-required)/layout.tsx +++ b/src/app/(auth-required)/layout.tsx @@ -1,9 +1,9 @@ -import { ReactElement } from 'react'; import { dehydrate, HydrationBoundary } from '@tanstack/react-query'; -import { Header } from '@/components'; +import { ReactElement } from 'react'; +import { getQueryClient } from '@/utils/queryUtil'; import { PATHS } from '@/constants'; import { me } from '@/apis'; -import { getQueryClient } from '@/utils/queryUtil'; +import { Header } from './components/header'; interface IProp { children: ReactElement; @@ -12,10 +12,7 @@ interface IProp { export default async function Layout({ children }: IProp) { const client = getQueryClient(); - await client.prefetchQuery({ - queryKey: [PATHS.ME], - queryFn: me, - }); + await client.prefetchQuery({ queryKey: [PATHS.ME], queryFn: me }); return (
diff --git a/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx b/src/app/(auth-required)/leaderboards/Content.tsx similarity index 94% rename from src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx rename to src/app/(auth-required)/leaderboards/Content.tsx index cae40d6..882c22d 100644 --- a/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx +++ b/src/app/(auth-required)/leaderboards/Content.tsx @@ -1,8 +1,10 @@ 'use client'; -import { Dropdown, Ranker, Rank } from '@/components'; +import { Dropdown } from '@/components'; + import { SCREENS } from '@/constants'; import { useResponsive, useSearchParam } from '@/hooks'; +import { Ranker, Rank } from './components'; const data = [ { rank: 1, name: '정현우', count: 1235 }, diff --git a/src/components/auth-required/leaderboards/Rank.tsx b/src/app/(auth-required)/leaderboards/components/Rank.tsx similarity index 87% rename from src/components/auth-required/leaderboards/Rank.tsx rename to src/app/(auth-required)/leaderboards/components/Rank.tsx index 98a6c64..f89283c 100644 --- a/src/components/auth-required/leaderboards/Rank.tsx +++ b/src/app/(auth-required)/leaderboards/components/Rank.tsx @@ -1,4 +1,4 @@ -import type { IProp } from './Ranker'; +import type { IProp } from '../../../../components/auth-required/leaderboards/Ranker'; export const Rank = ({ name, rank, count, suffix = '회' }: IProp) => { return ( diff --git a/src/components/auth-required/leaderboards/Ranker.tsx b/src/app/(auth-required)/leaderboards/components/Ranker.tsx similarity index 100% rename from src/components/auth-required/leaderboards/Ranker.tsx rename to src/app/(auth-required)/leaderboards/components/Ranker.tsx diff --git a/src/components/auth-required/leaderboards/index.ts b/src/app/(auth-required)/leaderboards/components/index.ts similarity index 100% rename from src/components/auth-required/leaderboards/index.ts rename to src/app/(auth-required)/leaderboards/components/index.ts diff --git a/src/app/(with-tracker)/(auth-required)/leaderboards/page.tsx b/src/app/(auth-required)/leaderboards/page.tsx similarity index 100% rename from src/app/(with-tracker)/(auth-required)/leaderboards/page.tsx rename to src/app/(auth-required)/leaderboards/page.tsx diff --git a/src/app/(with-tracker)/(auth-required)/main/Content.tsx b/src/app/(auth-required)/main/Content.tsx similarity index 97% rename from src/app/(with-tracker)/(auth-required)/main/Content.tsx rename to src/app/(auth-required)/main/Content.tsx index 0397a1a..29f4d83 100644 --- a/src/app/(with-tracker)/(auth-required)/main/Content.tsx +++ b/src/app/(auth-required)/main/Content.tsx @@ -3,7 +3,8 @@ import { useInfiniteQuery, useQuery } from '@tanstack/react-query'; import { useEffect } from 'react'; import { useInView } from 'react-intersection-observer'; -import { Button, Dropdown, Section, Summary, Check } from '@/components'; +import { Button, Dropdown, Check } from '@/components'; +import { Section, Summary } from './components'; import { postList, postSummary } from '@/apis'; import { PATHS, SORT_TYPE } from '@/constants'; import { useSearchParam } from '@/hooks/useSearchParam'; diff --git a/src/components/auth-required/main/Section/Graph.tsx b/src/app/(auth-required)/main/components/Section/Graph.tsx similarity index 100% rename from src/components/auth-required/main/Section/Graph.tsx rename to src/app/(auth-required)/main/components/Section/Graph.tsx diff --git a/src/components/auth-required/main/Section/index.tsx b/src/app/(auth-required)/main/components/Section/index.tsx similarity index 100% rename from src/components/auth-required/main/Section/index.tsx rename to src/app/(auth-required)/main/components/Section/index.tsx diff --git a/src/components/auth-required/main/Summary/BarContent.tsx b/src/app/(auth-required)/main/components/Summary/BarContent.tsx similarity index 100% rename from src/components/auth-required/main/Summary/BarContent.tsx rename to src/app/(auth-required)/main/components/Summary/BarContent.tsx diff --git a/src/components/auth-required/main/Summary/SidebarContent.tsx b/src/app/(auth-required)/main/components/Summary/SidebarContent.tsx similarity index 100% rename from src/components/auth-required/main/Summary/SidebarContent.tsx rename to src/app/(auth-required)/main/components/Summary/SidebarContent.tsx diff --git a/src/components/auth-required/main/Summary/index.tsx b/src/app/(auth-required)/main/components/Summary/index.tsx similarity index 100% rename from src/components/auth-required/main/Summary/index.tsx rename to src/app/(auth-required)/main/components/Summary/index.tsx diff --git a/src/components/auth-required/main/index.ts b/src/app/(auth-required)/main/components/index.ts similarity index 100% rename from src/components/auth-required/main/index.ts rename to src/app/(auth-required)/main/components/index.ts diff --git a/src/app/(with-tracker)/(auth-required)/main/page.tsx b/src/app/(auth-required)/main/page.tsx similarity index 100% rename from src/app/(with-tracker)/(auth-required)/main/page.tsx rename to src/app/(auth-required)/main/page.tsx diff --git a/src/app/(with-tracker)/(login)/Content.tsx b/src/app/(login)/Content.tsx similarity index 100% rename from src/app/(with-tracker)/(login)/Content.tsx rename to src/app/(login)/Content.tsx index 4ca375a..a4dba8b 100644 --- a/src/app/(with-tracker)/(login)/Content.tsx +++ b/src/app/(login)/Content.tsx @@ -1,12 +1,12 @@ 'use client'; +import { useMutation } from '@tanstack/react-query'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import Image from 'next/image'; -import { useMutation } from '@tanstack/react-query'; import { Input, Button } from '@/components'; -import { LoginVo } from '@/types'; import { login, sampleLogin } from '@/apis'; +import { LoginVo } from '@/types'; const responsiveStyle = "flex items-center gap-5 max-MBI:before:inline-block max-MBI:before:bg-[url('/favicon.png')] max-MBI:before:[background-size:_100%_100%] max-MBI:before:w-16 max-MBI:before:h-16"; diff --git a/src/app/(with-tracker)/(login)/page.tsx b/src/app/(login)/page.tsx similarity index 67% rename from src/app/(with-tracker)/(login)/page.tsx rename to src/app/(login)/page.tsx index fc27d6a..0ffa5c5 100644 --- a/src/app/(with-tracker)/(login)/page.tsx +++ b/src/app/(login)/page.tsx @@ -1,10 +1,7 @@ import { Metadata } from 'next'; - import { Content } from './Content'; -export const metadata: Metadata = { - title: '로그인', -}; +export const metadata: Metadata = { title: '로그인' }; export default function Page() { return ; diff --git a/src/app/(with-tracker)/layout.tsx b/src/app/(with-tracker)/layout.tsx deleted file mode 100644 index 16fd798..0000000 --- a/src/app/(with-tracker)/layout.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Suspense } from 'react'; - -export default function Layout({ children }: { children: React.ReactNode }) { - return {children}; -} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 7917b98..4c27c7d 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,13 +1,13 @@ +import { GoogleAnalytics } from '@next/third-parties/google'; import { Noto_Sans_KR } from 'next/font/google'; import { ToastContainer } from 'react-toastify'; import 'react-toastify/dist/ReactToastify.css'; -import * as sentry from '@sentry/nextjs'; +import { ErrorBoundary } from '@sentry/nextjs'; +import { ReactNode, Suspense } from 'react'; import type { Metadata } from 'next'; -import { ReactNode } from 'react'; -import { GoogleAnalytics } from '@next/third-parties/google'; -import './globals.css'; import { ChannelTalkProvider, QueryProvider } from '@/components'; import { env } from '@/constants'; +import './globals.css'; export const BASE = 'https://velog-dashboard.kro.kr/'; @@ -16,9 +16,7 @@ export const metadata: Metadata = { metadataBase: new URL(BASE), description: '어디서든 편리하게 확인하는 Velog 통계 서비스, Velog Dashboard', icons: { icon: '/favicon.png' }, - alternates: { - canonical: BASE, - }, + alternates: { canonical: BASE }, openGraph: { siteName: 'Velog Dashboard', description: @@ -37,14 +35,14 @@ export default function RootLayout({ return ( - + - {children} + {children} - + diff --git a/src/components/common/ArriveSoon.tsx b/src/components/ArriveSoon.tsx similarity index 100% rename from src/components/common/ArriveSoon.tsx rename to src/components/ArriveSoon.tsx diff --git a/src/components/common/Button.tsx b/src/components/Button.tsx similarity index 100% rename from src/components/common/Button.tsx rename to src/components/Button.tsx diff --git a/src/components/common/Check.tsx b/src/components/Check.tsx similarity index 100% rename from src/components/common/Check.tsx rename to src/components/Check.tsx diff --git a/src/components/common/Dropdown.tsx b/src/components/Dropdown.tsx similarity index 100% rename from src/components/common/Dropdown.tsx rename to src/components/Dropdown.tsx diff --git a/src/components/common/Icon/SvgrMock.tsx b/src/components/Icon/SvgrMock.tsx similarity index 100% rename from src/components/common/Icon/SvgrMock.tsx rename to src/components/Icon/SvgrMock.tsx diff --git a/src/components/common/Icon/icons/Analytics.svg b/src/components/Icon/icons/Analytics.svg similarity index 100% rename from src/components/common/Icon/icons/Analytics.svg rename to src/components/Icon/icons/Analytics.svg diff --git a/src/components/common/Icon/icons/Arrow.svg b/src/components/Icon/icons/Arrow.svg similarity index 100% rename from src/components/common/Icon/icons/Arrow.svg rename to src/components/Icon/icons/Arrow.svg diff --git a/src/components/common/Icon/icons/Compare.svg b/src/components/Icon/icons/Compare.svg similarity index 100% rename from src/components/common/Icon/icons/Compare.svg rename to src/components/Icon/icons/Compare.svg diff --git a/src/components/common/Icon/icons/Leaderboards.svg b/src/components/Icon/icons/Leaderboards.svg similarity index 100% rename from src/components/common/Icon/icons/Leaderboards.svg rename to src/components/Icon/icons/Leaderboards.svg diff --git a/src/components/common/Icon/icons/Like.svg b/src/components/Icon/icons/Like.svg similarity index 100% rename from src/components/common/Icon/icons/Like.svg rename to src/components/Icon/icons/Like.svg diff --git a/src/components/common/Icon/icons/Shortcut.svg b/src/components/Icon/icons/Shortcut.svg similarity index 100% rename from src/components/common/Icon/icons/Shortcut.svg rename to src/components/Icon/icons/Shortcut.svg diff --git a/src/components/common/Icon/icons/index.ts b/src/components/Icon/icons/index.ts similarity index 100% rename from src/components/common/Icon/icons/index.ts rename to src/components/Icon/icons/index.ts diff --git a/src/components/common/Icon/index.tsx b/src/components/Icon/index.tsx similarity index 100% rename from src/components/common/Icon/index.tsx rename to src/components/Icon/index.tsx diff --git a/src/components/common/Input.tsx b/src/components/Input.tsx similarity index 94% rename from src/components/common/Input.tsx rename to src/components/Input.tsx index 378528c..ab9f648 100644 --- a/src/components/common/Input.tsx +++ b/src/components/Input.tsx @@ -15,7 +15,7 @@ const FORMS = { export const Input = forwardRef( ( { form = 'LARGE', size, ...rest }: IProp, - ref?: ForwardedRef | undefined, + ref?: ForwardedRef, ) => (