Skip to content

Commit 185b249

Browse files
committed
feat: 앱 다운로드 기능 추가 및 관련 컴포넌트 수정
1 parent 2311e34 commit 185b249

4 files changed

Lines changed: 20 additions & 5 deletions

File tree

src/components/Page/Home/Banner/Banner.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import SnsBanner from '@assets/appDownload/banners/snsBanner.png';
77
import { BannerContainer, BannerItemContainer, BannerItemImage, BannerItemIndex } from './Banner.Style';
88

99
const HomeBanner = () => {
10-
const { navToAbout, openInstagram, openServiceCenter } = useRouter();
10+
const { navToAbout, openAppDownload, openInstagram, openServiceCenter } = useRouter();
1111

1212
const banners = [
1313
{
1414
image: InstallAppBanner,
1515
alt: '앱 다운로드 배너',
16-
onClick: openInstagram,
16+
onClick: openAppDownload,
1717
indexTone: 'light',
1818
},
1919
{

src/components/PopUp/AppInstallPopUp/AppInstallPopUp.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { useState } from 'react';
22
import useLocalStorageState from '@hooks/useLocalStorageState';
3+
import useRouter from '@router/useRouter';
34
import AlarmIcon from '@assets/appDownload/appDownloadAlarm.svg?react';
45
import LightningIcon from '@assets/appDownload/appDownloadLightning.svg?react';
56
import PhoneIcon from '@assets/appDownload/appDownloadPhone.svg?react';
@@ -26,6 +27,7 @@ interface AppInstallPopUpProps {
2627
}
2728

2829
const AppInstallPopUp = ({ onClose, onDownload }: AppInstallPopUpProps) => {
30+
const { openAppDownload } = useRouter();
2931
const [lastShown, setLastShown] = useLocalStorageState<string>('app_install_popup_last_shown');
3032
const [showPopUp, setShowPopUp] = useState(
3133
(() => {
@@ -52,8 +54,7 @@ const AppInstallPopUp = ({ onClose, onDownload }: AppInstallPopUpProps) => {
5254
const handleDownload = () => {
5355
setShowPopUp(false);
5456
onDownload?.();
55-
// TODO: 실제 앱 다운로드 링크로 이동
56-
// 예: window.location.href = 'https://apps.apple.com/...' 또는 'https://play.google.com/...'
57+
openAppDownload();
5758
};
5859

5960
const handleBackdropClick = () => {

src/layout/Mainlayout/Mainlayout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const Mainlayout = ({ children }: LayoutProps) => {
2929
</MainContent>
3030

3131
{visiblePWAInfoPopUp && isRootPage && !detectPWA() && <PWAInfoPopUp />}
32-
{visiblePWAInfoPopUp && isMobileDevice && isRootPage && !detectWebView() && <AppInstallPopUp />}
32+
{isMobileDevice && isRootPage && !detectWebView() && <AppInstallPopUp />}
3333
{isBottomNavigationVisible && <BottomNavigation />}
3434
</StyledMainlayout>
3535
);

src/router/useRouter.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { useNavigate } from 'react-router-dom';
22
import { StockCountryKey } from '@ts/StockCountry';
33
import { TermKey } from '@ts/Term';
4+
import { detectPlatform } from '@utils/Detector';
45
import { openExternalLink } from '@utils/openExternalLink';
56
import { webPath } from '.';
67

@@ -42,6 +43,18 @@ const useRouter = () => {
4243
const openInstagram = () => {
4344
openExternalLink('https://www.instagram.com/humanzipyo/');
4445
};
46+
const openAppDownload = () => {
47+
const platform = detectPlatform();
48+
49+
if (platform === 'Android') {
50+
openExternalLink('https://play.google.com/store/apps/details?id=com.durumi99.humanzipyoapp');
51+
return;
52+
}
53+
54+
if (platform === 'iOS') {
55+
openExternalLink('https://apps.apple.com/kr/app/%EC%9D%B8%EA%B0%84%EC%A7%80%ED%91%9C/id6752467487');
56+
}
57+
};
4558
const openLinkedIn = () => {
4659
openExternalLink('https://www.linkedin.com/company/humanzipyo');
4760
};
@@ -70,6 +83,7 @@ const useRouter = () => {
7083
openBusinessProposal,
7184
openServiceCenter,
7285
openInstagram,
86+
openAppDownload,
7387
openLinkedIn,
7488
openThreads,
7589
navToRegisterDone,

0 commit comments

Comments
 (0)