Skip to content

Commit 6138fc7

Browse files
authored
Merge pull request #109 from Devminjeong-eum/fix/DEV-168
[DEV-168] 메인 로고 클릭시 트렌딩 페이지로 이동되도록 수정
2 parents 44fbaab + 84e5a5e commit 6138fc7

File tree

4 files changed

+39
-24
lines changed

4 files changed

+39
-24
lines changed

public/sw.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/pages/home/index.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import HomeToggleZone from './HomeToggleZone';
44
import AllPosts from './all-posts';
55
import useGetAllPosts from '@/hooks/query/useGetAllPosts';
66
import TrendingPosts from './trending-posts';
7-
import useSyncURLWithState from '@/hooks/useSyncURLWithState';
7+
import useSyncURLHomeRouteState from '@/hooks/useSyncURLHomeRouteState';
88
import { useCallback } from 'react';
99

1010
export type TrendingType = 'trend' | 'all';
1111

1212
const HomeClientPage = () => {
1313
const { currentPage, setCurrentPage, isTrending, setIsTrending } =
14-
useSyncURLWithState();
14+
useSyncURLHomeRouteState();
1515
const { data: allPostsData } = useGetAllPosts(currentPage).data;
1616

1717
const handleToggle = useCallback(
@@ -24,7 +24,6 @@ const HomeClientPage = () => {
2424
return (
2525
<main className="py-5 rounded-[24px] bg-[#FBFCFE] min-h-screen -mt-[20px] z-50 flex flex-col gap-[8px] px-5">
2626
<HomeToggleZone handleToggle={handleToggle} isTrending={isTrending} />
27-
2827
{isTrending === 'trend' ? (
2928
<TrendingPosts />
3029
) : (

src/hooks/useSyncURLHomeRouteState.ts

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { type TrendingType } from '@/components/pages/home';
2+
import { useRouter, useSearchParams } from 'next/navigation';
3+
import { useEffect, useState } from 'react';
4+
5+
const isTrendingType = (value: unknown): value is TrendingType => {
6+
return value === 'trend' || value === 'all';
7+
};
8+
9+
export default function useSyncURLHomeRouteState() {
10+
const router = useRouter();
11+
const searchParams = useSearchParams();
12+
const page = searchParams.get('page');
13+
const view = searchParams.get('view');
14+
15+
const [currentPage, setCurrentPage] = useState(() => {
16+
return page ? Number(page) : 1;
17+
});
18+
19+
const [isTrending, setIsTrending] = useState<TrendingType>(() => {
20+
return isTrendingType(view) ? view : 'trend';
21+
});
22+
23+
useEffect(() => {
24+
router.push(`/home?view=${isTrending}&page=${currentPage}`);
25+
}, [currentPage, isTrending, router]);
26+
27+
useEffect(() => {
28+
const nextPage = page ? Number(page) : 1;
29+
const nextView: TrendingType = isTrendingType(view) ? view : 'trend';
30+
31+
setCurrentPage(nextPage);
32+
setIsTrending(nextView);
33+
}, [page, view]);
34+
35+
return { currentPage, setCurrentPage, isTrending, setIsTrending };
36+
}

src/hooks/useSyncURLWithState.ts

-20
This file was deleted.

0 commit comments

Comments
 (0)