Skip to content

Commit 64386e7

Browse files
committed
feat: 카카오 공유 기능 추가
- MemeShareSheet 컴포넌트에 카카오 공유 기능을 추가하여 사용자 경험을 개선함 - bridge.ts에 SHARE_KAKAO 명령어와 관련 데이터 타입을 정의함 - nativeBridge에 카카오 공유 메서드를 구현하여 공유 기능을 통합함
1 parent 5edfd92 commit 64386e7

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

apps/web/src/pages/MemeDetailPage/components/MemeShareSheet.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { useEffect, useState } from 'react';
22
import { AnimatePresence } from 'motion/react';
33
import { KakaoIcon, MoreInfo, LinkCopyIcon } from '@/assets/icons';
44
import * as S from './MemeShareSheet.styles';
5+
import { nativeBridge } from '@/utils/bridge';
56

67
interface MemeShareSheetProps {
78
isOpen: boolean;
@@ -35,8 +36,12 @@ const MemeShareSheet = ({
3536

3637
const handleKakaoShare = () => {
3738
if (isWebview) {
38-
const kakaoShareUrl = `kakaolink://send?text=${encodeURIComponent(title)}&image=${encodeURIComponent(imageUrl)}&url=${encodeURIComponent(window.location.href)}`;
39-
window.location.href = kakaoShareUrl;
39+
nativeBridge.shareKakao({
40+
title,
41+
image: imageUrl,
42+
});
43+
// const kakaoShareUrl = `kakaolink://send?text=${encodeURIComponent(title)}&image=${encodeURIComponent(imageUrl)}&url=${encodeURIComponent(window.location.href)}`;
44+
// window.location.href = kakaoShareUrl;
4045
return;
4146
}
4247

apps/web/src/types/bridge.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export const COMMAND_TYPE = {
44
WEB_ENTERED: 'WEB_ENTERED',
55
APP_ENTERED: 'APP_ENTERED',
66
SHOW_MORE_MEMES: 'SHOW_MORE_MEMES',
7+
SHARE_KAKAO: 'SHARE_KAKAO',
78
} as const;
89

910
export type CommandType = (typeof COMMAND_TYPE)[keyof typeof COMMAND_TYPE];
@@ -18,12 +19,18 @@ export interface CustomMemeData {
1819
image: string;
1920
}
2021

22+
export interface ShareKakaoData {
23+
title: string;
24+
image: string;
25+
}
26+
2127
export type CommandDataMap = {
2228
[COMMAND_TYPE.SHARE_MEME]: ShareMemeData;
2329
[COMMAND_TYPE.CUSTOM_MEME]: CustomMemeData;
2430
[COMMAND_TYPE.WEB_ENTERED]: null;
2531
[COMMAND_TYPE.APP_ENTERED]: null;
2632
[COMMAND_TYPE.SHOW_MORE_MEMES]: null;
33+
[COMMAND_TYPE.SHARE_KAKAO]: ShareKakaoData;
2734
};
2835

2936
export interface BridgeCommand<T extends CommandType> {

apps/web/src/utils/bridge.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
CommandDataMap,
55
CommandType,
66
CustomMemeData,
7+
ShareKakaoData,
78
ShareMemeData,
89
} from '../types/bridge';
910

@@ -80,6 +81,11 @@ class NativeBridge {
8081
showMoreMemes() {
8182
this.sendCommand(COMMAND_TYPE.SHOW_MORE_MEMES);
8283
}
84+
85+
// 카카오 공유
86+
shareKakao(data: ShareKakaoData) {
87+
this.sendCommand(COMMAND_TYPE.SHARE_KAKAO, data);
88+
}
8389
}
8490

8591
export const nativeBridge = NativeBridge.getInstance();

0 commit comments

Comments
 (0)