Skip to content

Commit 20fbd31

Browse files
committed
feat: 후원사 표시 기능 추가 및 App 컴포넌트 구조 개선
1 parent 8474a8f commit 20fbd31

File tree

2 files changed

+38
-22
lines changed

2 files changed

+38
-22
lines changed

apps/pyconkr/src/App.tsx

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,39 @@
11
import * as Common from "@frontend/common";
22
import React from "react";
3-
import { BrowserRouter, Route, Routes } from "react-router-dom";
3+
import { BrowserRouter, Route, Routes, useLocation } from "react-router-dom";
44
import { SponsorProvider } from "./contexts/SponsorContext";
55

66
import MainLayout from "./components/layout";
77
import { Test } from "./components/pages/test";
88
import { IS_DEBUG_ENV } from "./consts/index.ts";
99

10-
export const App: React.FC = () => {
10+
// 스폰서를 표시할 페이지 경로 설정
11+
const SPONSOR_VISIBLE_PATHS = ["/"];
12+
13+
const AppContent = () => {
14+
const location = useLocation();
15+
const shouldShowSponsor = SPONSOR_VISIBLE_PATHS.includes(location.pathname);
16+
1117
return (
12-
<SponsorProvider>
13-
<BrowserRouter>
14-
<Routes>
15-
<Route element={<MainLayout />}>
16-
{IS_DEBUG_ENV && <Route path="/debug" element={<Test />} />}
17-
<Route
18-
path="/pages/:id"
19-
element={<Common.Components.PageIdParamRenderer />}
20-
/>
21-
<Route path="*" element={<Common.Components.RouteRenderer />} />
22-
</Route>
23-
</Routes>
24-
</BrowserRouter>
18+
<SponsorProvider initialVisibility={shouldShowSponsor}>
19+
<Routes>
20+
<Route element={<MainLayout />}>
21+
{IS_DEBUG_ENV && <Route path="/debug" element={<Test />} />}
22+
<Route
23+
path="/pages/:id"
24+
element={<Common.Components.PageIdParamRenderer />}
25+
/>
26+
<Route path="*" element={<Common.Components.RouteRenderer />} />
27+
</Route>
28+
</Routes>
2529
</SponsorProvider>
2630
);
2731
};
32+
33+
export const App: React.FC = () => {
34+
return (
35+
<BrowserRouter>
36+
<AppContent />
37+
</BrowserRouter>
38+
);
39+
};

apps/pyconkr/src/contexts/SponsorContext.tsx

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,24 @@ import { createContext, useContext, useState, ReactNode } from "react";
22

33
interface SponsorContextType {
44
isVisible: boolean;
5-
toggleVisibility: () => void;
5+
setIsVisible: (value: boolean) => void;
66
}
77

88
const SponsorContext = createContext<SponsorContextType | undefined>(undefined);
99

10-
export function SponsorProvider({ children }: { children: ReactNode }) {
11-
const [isVisible, setIsVisible] = useState(true);
10+
interface SponsorProviderProps {
11+
children: ReactNode;
12+
initialVisibility?: boolean;
13+
}
1214

13-
const toggleVisibility = () => {
14-
setIsVisible((prev) => !prev);
15-
};
15+
export function SponsorProvider({
16+
children,
17+
initialVisibility = false,
18+
}: SponsorProviderProps) {
19+
const [isVisible, setIsVisible] = useState(initialVisibility);
1620

1721
return (
18-
<SponsorContext.Provider value={{ isVisible, toggleVisibility }}>
22+
<SponsorContext.Provider value={{ isVisible, setIsVisible }}>
1923
{children}
2024
</SponsorContext.Provider>
2125
);

0 commit comments

Comments
 (0)