1+ import { filterNonNullishKeys , snakeCaseObject } from '@mj-studio/js-util' ;
12import { kRunWebAPI } from '@react-native-kakao/core' ;
23
34import type { KakaoShareAPI } from './index' ;
@@ -10,7 +11,63 @@ declare const Kakao: {
1011 API : { request : ( args : any ) => Promise < any > } ;
1112} ;
1213
13- // @ts -ignore
14+ function createShareDefault ( {
15+ serverCallbackArgs,
16+ template,
17+ objectType,
18+ } : {
19+ objectType : string ;
20+ template : any ;
21+ serverCallbackArgs ?: Record < string , string > ;
22+ } ) {
23+ return kRunWebAPI ( ( ) =>
24+ Kakao . Share . sendDefault ( {
25+ objectType,
26+ ...template ,
27+ serverCallbackArgs,
28+ } ) ,
29+ ) ;
30+ }
31+
32+ function createSendDefaultMe ( { template, objectType } : { objectType : string ; template : any } ) {
33+ return kRunWebAPI ( ( ) =>
34+ Kakao . API . request ( {
35+ url : '/v2/api/talk/memo/default/send' ,
36+ data : {
37+ template_object : snakeCaseObject ( {
38+ objectType,
39+ ...template ,
40+ } ) ,
41+ } ,
42+ } ) ,
43+ ) ;
44+ }
45+
46+ function createSendDefaultFriends ( {
47+ objectType,
48+ template,
49+ receiverUuids,
50+ } : {
51+ template : any ;
52+ objectType : any ;
53+ receiverUuids : string [ ] ;
54+ } ) {
55+ return kRunWebAPI ( ( ) =>
56+ Kakao . API . request ( {
57+ url : '/v1/api/talk/friends/message/default/send' ,
58+ data : {
59+ template_object : snakeCaseObject (
60+ filterNonNullishKeys ( {
61+ objectType,
62+ ...template ,
63+ } ) ,
64+ ) ,
65+ receiver_uuids : receiverUuids ,
66+ } ,
67+ } ) ,
68+ ) ;
69+ }
70+
1471const KakaoShare : KakaoShareAPI = {
1572 shareCustomTemplate : ( { templateArgs, templateId, serverCallbackArgs } ) =>
1673 kRunWebAPI ( ( ) =>
@@ -38,6 +95,39 @@ const KakaoShare: KakaoShareAPI = {
3895 } ,
3996 } ) ,
4097 ) ,
98+ shareFeedTemplate : ( { template, serverCallbackArgs } ) =>
99+ createShareDefault ( { template, serverCallbackArgs, objectType : 'feed' } ) ,
100+ sendFeedTemplateToMe : ( { template } ) => createSendDefaultMe ( { template, objectType : 'feed' } ) ,
101+ sendFeedTemplateToFriends : ( { template, receiverUuids } ) =>
102+ createSendDefaultFriends ( { template, receiverUuids, objectType : 'feed' } ) ,
103+ shareListTemplate : ( { template, serverCallbackArgs } ) =>
104+ createShareDefault ( { template, serverCallbackArgs, objectType : 'list' } ) ,
105+ sendListTemplateToMe : ( { template } ) => createSendDefaultMe ( { template, objectType : 'list' } ) ,
106+ sendListTemplateToFriends : ( { template, receiverUuids } ) =>
107+ createSendDefaultFriends ( { template, receiverUuids, objectType : 'list' } ) ,
108+ shareLocationTemplate : ( { template, serverCallbackArgs } ) =>
109+ createShareDefault ( { template, serverCallbackArgs, objectType : 'location' } ) ,
110+ sendLocationTemplateToMe : ( { template } ) =>
111+ createSendDefaultMe ( { template, objectType : 'location' } ) ,
112+ sendLocationTemplateToFriends : ( { template, receiverUuids } ) =>
113+ createSendDefaultFriends ( { template, receiverUuids, objectType : 'location' } ) ,
114+ shareCommerceTemplate : ( { template, serverCallbackArgs } ) =>
115+ createShareDefault ( { template, serverCallbackArgs, objectType : 'commerce' } ) ,
116+ sendCommerceTemplateToMe : ( { template } ) =>
117+ createSendDefaultMe ( { template, objectType : 'commerce' } ) ,
118+ sendCommerceTemplateToFriends : ( { template, receiverUuids } ) =>
119+ createSendDefaultFriends ( { template, receiverUuids, objectType : 'commerce' } ) ,
120+ shareTextTemplate : ( { template, serverCallbackArgs } ) =>
121+ createShareDefault ( { template, serverCallbackArgs, objectType : 'text' } ) ,
122+ sendTextTemplateToMe : ( { template } ) => createSendDefaultMe ( { template, objectType : 'text' } ) ,
123+ sendTextTemplateToFriends : ( { template, receiverUuids } ) =>
124+ createSendDefaultFriends ( { template, receiverUuids, objectType : 'text' } ) ,
125+ shareCalendarTemplate : ( { template, serverCallbackArgs } ) =>
126+ createShareDefault ( { template, serverCallbackArgs, objectType : 'calendar' } ) ,
127+ sendCalendarTemplateToMe : ( { template } ) =>
128+ createSendDefaultMe ( { template, objectType : 'calendar' } ) ,
129+ sendCalendarTemplateToFriends : ( { template, receiverUuids } ) =>
130+ createSendDefaultFriends ( { template, receiverUuids, objectType : 'calendar' } ) ,
41131} ;
42132export const {
43133 sendCalendarTemplateToFriends,
0 commit comments