@react-native-kakao/share 2.2.3 → 2.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { NativeModules, Platform } from 'react-native';
2
+ import type { Double, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
2
3
 
3
4
  import type {
4
5
  KakaoCalendarTemplate,
@@ -16,6 +17,7 @@ import type {
16
17
  KakaoTextTemplate,
17
18
  Spec,
18
19
  } from './spec/NativeKakaoShare';
20
+ import { swapMobileExecutionParamsFieldValueIntoStringInIOS } from './util/swapMobileExecutionParamsFieldValueIntoStringInIOS';
19
21
 
20
22
  export type {
21
23
  KakaoTemplateSocial,
@@ -55,6 +57,33 @@ const Native: Spec = Module
55
57
  },
56
58
  );
57
59
 
60
+ function shareOrSendMeOrSendFriendOrWhatever(
61
+ /* share, send-me, send-friend */
62
+ sendType: string,
63
+ /* custom, feed, list, location, commerce, text, calendar */
64
+ templateType: string,
65
+ /* only for custom */
66
+ templateId: Double,
67
+ /* only for default templates */
68
+ templateJson: UnsafeObject,
69
+ /* only for pass friend uuid directly */
70
+ receiverUuids: ReadonlyArray<string>,
71
+ useWebBrowserIfKakaoTalkNotAvailable: boolean,
72
+ templateArgs: Readonly<{ [key: string]: string }>,
73
+ serverCallbackArgs: Readonly<{ [key: string]: string }>,
74
+ ): Promise<any> {
75
+ return Native.shareOrSendMeOrSendFriendOrWhatever(
76
+ sendType,
77
+ templateType,
78
+ templateId,
79
+ swapMobileExecutionParamsFieldValueIntoStringInIOS(templateJson),
80
+ receiverUuids,
81
+ useWebBrowserIfKakaoTalkNotAvailable,
82
+ templateArgs,
83
+ serverCallbackArgs,
84
+ );
85
+ }
86
+
58
87
  const SendTypes = { share: 'share', sendMe: 'send-me', sendFriend: 'send-friend' };
59
88
  const TemplateTypes = {
60
89
  custom: 'custom',
@@ -77,7 +106,7 @@ export function shareCustomTemplate({
77
106
  templateArgs?: Record<string, string>;
78
107
  serverCallbackArgs?: Record<string, string>;
79
108
  }) {
80
- return Native.shareOrSendMeOrSendFriendOrWhatever(
109
+ return shareOrSendMeOrSendFriendOrWhatever(
81
110
  SendTypes.share,
82
111
  TemplateTypes.custom,
83
112
  templateId,
@@ -96,7 +125,7 @@ export function sendCustomTemplateToMe({
96
125
  templateId: number;
97
126
  templateArgs?: Record<string, string>;
98
127
  }) {
99
- return Native.shareOrSendMeOrSendFriendOrWhatever(
128
+ return shareOrSendMeOrSendFriendOrWhatever(
100
129
  SendTypes.sendMe,
101
130
  TemplateTypes.custom,
102
131
  templateId,
@@ -117,7 +146,7 @@ export function sendCustomTemplateToFriends({
117
146
  templateArgs?: Record<string, string>;
118
147
  receiverUuids: string[];
119
148
  }): Promise<string[]> {
120
- return Native.shareOrSendMeOrSendFriendOrWhatever(
149
+ return shareOrSendMeOrSendFriendOrWhatever(
121
150
  SendTypes.sendFriend,
122
151
  TemplateTypes.custom,
123
152
  templateId,
@@ -138,7 +167,7 @@ export function shareFeedTemplate({
138
167
  useWebBrowserIfKakaoTalkNotAvailable?: boolean;
139
168
  serverCallbackArgs?: Record<string, string>;
140
169
  }) {
141
- return Native.shareOrSendMeOrSendFriendOrWhatever(
170
+ return shareOrSendMeOrSendFriendOrWhatever(
142
171
  SendTypes.share,
143
172
  TemplateTypes.feed,
144
173
  -1,
@@ -151,7 +180,7 @@ export function shareFeedTemplate({
151
180
  }
152
181
 
153
182
  export function sendFeedTemplateToMe({ template }: { template: KakaoFeedTemplate }) {
154
- return Native.shareOrSendMeOrSendFriendOrWhatever(
183
+ return shareOrSendMeOrSendFriendOrWhatever(
155
184
  SendTypes.sendMe,
156
185
  TemplateTypes.feed,
157
186
  -1,
@@ -170,7 +199,7 @@ export function sendFeedTemplateToFriends({
170
199
  template: KakaoFeedTemplate;
171
200
  receiverUuids: string[];
172
201
  }): Promise<string[]> {
173
- return Native.shareOrSendMeOrSendFriendOrWhatever(
202
+ return shareOrSendMeOrSendFriendOrWhatever(
174
203
  SendTypes.sendFriend,
175
204
  TemplateTypes.feed,
176
205
  -1,
@@ -191,7 +220,7 @@ export function shareListTemplate({
191
220
  useWebBrowserIfKakaoTalkNotAvailable?: boolean;
192
221
  serverCallbackArgs?: Record<string, string>;
193
222
  }) {
194
- return Native.shareOrSendMeOrSendFriendOrWhatever(
223
+ return shareOrSendMeOrSendFriendOrWhatever(
195
224
  SendTypes.share,
196
225
  TemplateTypes.list,
197
226
  -1,
@@ -204,7 +233,7 @@ export function shareListTemplate({
204
233
  }
205
234
 
206
235
  export function sendListTemplateToMe({ template }: { template: KakaoListTemplate }) {
207
- return Native.shareOrSendMeOrSendFriendOrWhatever(
236
+ return shareOrSendMeOrSendFriendOrWhatever(
208
237
  SendTypes.sendMe,
209
238
  TemplateTypes.list,
210
239
  -1,
@@ -223,7 +252,7 @@ export function sendListTemplateToFriends({
223
252
  template: KakaoListTemplate;
224
253
  receiverUuids: string[];
225
254
  }): Promise<string[]> {
226
- return Native.shareOrSendMeOrSendFriendOrWhatever(
255
+ return shareOrSendMeOrSendFriendOrWhatever(
227
256
  SendTypes.sendFriend,
228
257
  TemplateTypes.list,
229
258
  -1,
@@ -244,7 +273,7 @@ export function shareLocationTemplate({
244
273
  useWebBrowserIfKakaoTalkNotAvailable?: boolean;
245
274
  serverCallbackArgs?: Record<string, string>;
246
275
  }) {
247
- return Native.shareOrSendMeOrSendFriendOrWhatever(
276
+ return shareOrSendMeOrSendFriendOrWhatever(
248
277
  SendTypes.share,
249
278
  TemplateTypes.location,
250
279
  -1,
@@ -257,7 +286,7 @@ export function shareLocationTemplate({
257
286
  }
258
287
 
259
288
  export function sendLocationTemplateToMe({ template }: { template: KakaoLocationTemplate }) {
260
- return Native.shareOrSendMeOrSendFriendOrWhatever(
289
+ return shareOrSendMeOrSendFriendOrWhatever(
261
290
  SendTypes.sendMe,
262
291
  TemplateTypes.location,
263
292
  -1,
@@ -276,7 +305,7 @@ export function sendLocationTemplateToFriends({
276
305
  template: KakaoLocationTemplate;
277
306
  receiverUuids: string[];
278
307
  }): Promise<string[]> {
279
- return Native.shareOrSendMeOrSendFriendOrWhatever(
308
+ return shareOrSendMeOrSendFriendOrWhatever(
280
309
  SendTypes.sendFriend,
281
310
  TemplateTypes.location,
282
311
  -1,
@@ -297,7 +326,7 @@ export function shareCommerceTemplate({
297
326
  useWebBrowserIfKakaoTalkNotAvailable?: boolean;
298
327
  serverCallbackArgs?: Record<string, string>;
299
328
  }) {
300
- return Native.shareOrSendMeOrSendFriendOrWhatever(
329
+ return shareOrSendMeOrSendFriendOrWhatever(
301
330
  SendTypes.share,
302
331
  TemplateTypes.commerce,
303
332
  -1,
@@ -310,7 +339,7 @@ export function shareCommerceTemplate({
310
339
  }
311
340
 
312
341
  export function sendCommerceTemplateToMe({ template }: { template: KakaoCommerceTemplate }) {
313
- return Native.shareOrSendMeOrSendFriendOrWhatever(
342
+ return shareOrSendMeOrSendFriendOrWhatever(
314
343
  SendTypes.sendMe,
315
344
  TemplateTypes.commerce,
316
345
  -1,
@@ -329,7 +358,7 @@ export function sendCommerceTemplateToFriends({
329
358
  template: KakaoCommerceTemplate;
330
359
  receiverUuids: string[];
331
360
  }): Promise<string[]> {
332
- return Native.shareOrSendMeOrSendFriendOrWhatever(
361
+ return shareOrSendMeOrSendFriendOrWhatever(
333
362
  SendTypes.sendFriend,
334
363
  TemplateTypes.commerce,
335
364
  -1,
@@ -350,7 +379,7 @@ export function shareTextTemplate({
350
379
  useWebBrowserIfKakaoTalkNotAvailable?: boolean;
351
380
  serverCallbackArgs?: Record<string, string>;
352
381
  }) {
353
- return Native.shareOrSendMeOrSendFriendOrWhatever(
382
+ return shareOrSendMeOrSendFriendOrWhatever(
354
383
  SendTypes.share,
355
384
  TemplateTypes.text,
356
385
  -1,
@@ -363,7 +392,7 @@ export function shareTextTemplate({
363
392
  }
364
393
 
365
394
  export function sendTextTemplateToMe({ template }: { template: KakaoTextTemplate }) {
366
- return Native.shareOrSendMeOrSendFriendOrWhatever(
395
+ return shareOrSendMeOrSendFriendOrWhatever(
367
396
  SendTypes.sendMe,
368
397
  TemplateTypes.text,
369
398
  -1,
@@ -382,7 +411,7 @@ export function sendTextTemplateToFriends({
382
411
  template: KakaoTextTemplate;
383
412
  receiverUuids: string[];
384
413
  }): Promise<string[]> {
385
- return Native.shareOrSendMeOrSendFriendOrWhatever(
414
+ return shareOrSendMeOrSendFriendOrWhatever(
386
415
  SendTypes.sendFriend,
387
416
  TemplateTypes.text,
388
417
  -1,
@@ -403,7 +432,7 @@ export function shareCalendarTemplate({
403
432
  useWebBrowserIfKakaoTalkNotAvailable?: boolean;
404
433
  serverCallbackArgs?: Record<string, string>;
405
434
  }) {
406
- return Native.shareOrSendMeOrSendFriendOrWhatever(
435
+ return shareOrSendMeOrSendFriendOrWhatever(
407
436
  SendTypes.share,
408
437
  TemplateTypes.calendar,
409
438
  -1,
@@ -416,7 +445,7 @@ export function shareCalendarTemplate({
416
445
  }
417
446
 
418
447
  export function sendCalendarTemplateToMe({ template }: { template: KakaoCalendarTemplate }) {
419
- return Native.shareOrSendMeOrSendFriendOrWhatever(
448
+ return shareOrSendMeOrSendFriendOrWhatever(
420
449
  SendTypes.sendMe,
421
450
  TemplateTypes.calendar,
422
451
  -1,
@@ -435,7 +464,7 @@ export function sendCalendarTemplateToFriends({
435
464
  template: KakaoCalendarTemplate;
436
465
  receiverUuids: string[];
437
466
  }): Promise<string[]> {
438
- return Native.shareOrSendMeOrSendFriendOrWhatever(
467
+ return shareOrSendMeOrSendFriendOrWhatever(
439
468
  SendTypes.sendFriend,
440
469
  TemplateTypes.calendar,
441
470
  -1,
@@ -0,0 +1,23 @@
1
+ import { Platform } from 'react-native';
2
+ import { replaceJsonValuesRecursively } from '@mj-studio/js-util';
3
+
4
+ export function swapMobileExecutionParamsFieldValueIntoStringInIOS<T extends object>(
5
+ template: T,
6
+ ): T {
7
+ if (Platform.OS !== 'ios') {
8
+ return template;
9
+ }
10
+
11
+ return replaceJsonValuesRecursively(template, {
12
+ replacer: {
13
+ androidExecutionParams: (value: Record<string, string>) =>
14
+ Object.entries(value)
15
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
16
+ .join('&'),
17
+ iosExecutionParams: (value: Record<string, string>) =>
18
+ Object.entries(value)
19
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
20
+ .join('&'),
21
+ },
22
+ });
23
+ }