@react-native-kakao/share 1.5.2 → 1.6.1

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.
@@ -49,6 +49,7 @@ Pod::Spec.new do |s|
49
49
  end
50
50
 
51
51
  s.dependency 'RNCKakaoCore'
52
+ s.dependency 'RNCKakaoSocial'
52
53
 
53
54
  # Kakao dependencies
54
55
  s.dependency 'KakaoSDKShare', sdk_version
@@ -1,13 +1,7 @@
1
1
  apply from: file('./../../core/android/package-json.gradle')
2
2
  def Versions = project.ext.RNCKakaoSdkVersions
3
- def coreProject
4
- if (findProject(':@react-native-kakao_core')) {
5
- coreProject = project(':@react-native-kakao_core')
6
- } else if (findProject(':react-native-kakao_core')) {
7
- coreProject = project(':react-native-kakao_core')
8
- } else {
9
- throw new GradleException('Could not find the react-native-kakao/core package, have you installed it?')
10
- }
3
+ Project coreProject = project.ext.getWorkspaceProject("core")
4
+ Project socialProject = project.ext.getWorkspaceProject("social")
11
5
 
12
6
  buildscript {
13
7
  // Buildscript is evaluated before everything else so we can't use getExtOrDefault
@@ -112,6 +106,7 @@ dependencies {
112
106
  implementation "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}"
113
107
 
114
108
  api coreProject
109
+ api socialProject
115
110
  implementation "com.kakao.sdk:v2-share:${Versions.share}"
116
111
  }
117
112
 
@@ -3,15 +3,23 @@ package net.mjstudio.rnkakao.share
3
3
  import android.content.ActivityNotFoundException
4
4
  import com.facebook.react.bridge.Promise
5
5
  import com.facebook.react.bridge.ReactApplicationContext
6
- import com.facebook.react.bridge.ReactMethod
6
+ import com.facebook.react.bridge.ReadableArray
7
7
  import com.facebook.react.bridge.ReadableMap
8
8
  import com.kakao.sdk.common.util.KakaoCustomTabsClient
9
9
  import com.kakao.sdk.share.ShareClient
10
10
  import com.kakao.sdk.share.WebSharerClient
11
11
  import com.kakao.sdk.share.model.SharingResult
12
- import com.kakao.sdk.template.model.DefaultTemplate
12
+ import com.kakao.sdk.talk.TalkApiClient
13
+ import com.kakao.sdk.talk.model.MessageSendResult
14
+ import net.mjstudio.rnkakao.core.util.KakaoApp.TALK
15
+ import net.mjstudio.rnkakao.core.util.RNCKakaoAppNotAvailableException
16
+ import net.mjstudio.rnkakao.core.util.RNCKakaoResponseNotFoundException
13
17
  import net.mjstudio.rnkakao.core.util.RNCKakaoUnknownException
18
+ import net.mjstudio.rnkakao.core.util.argArr
19
+ import net.mjstudio.rnkakao.core.util.argMap
20
+ import net.mjstudio.rnkakao.core.util.filterIsInstance
14
21
  import net.mjstudio.rnkakao.core.util.onMain
22
+ import net.mjstudio.rnkakao.core.util.pushStringList
15
23
  import net.mjstudio.rnkakao.core.util.rejectWith
16
24
  import net.mjstudio.rnkakao.core.util.toStringMap
17
25
 
@@ -21,116 +29,168 @@ class RNCKakaoShareModule internal constructor(context: ReactApplicationContext)
21
29
  return NAME
22
30
  }
23
31
 
24
- @ReactMethod
25
- override fun shareCustom(
32
+ override fun shareOrSendMeOrSendFriendOrWhatever(
33
+ sendType: String,
34
+ templateType: String,
26
35
  templateId: Double,
36
+ templateJson: ReadableMap,
37
+ receiverUuids: ReadableArray,
27
38
  useWebBrowserIfKakaoTalkNotAvailable: Boolean,
28
- templateArgs: ReadableMap?,
29
- serverCallbackArgs: ReadableMap?,
30
- promise: Promise,
31
- ) = onMain {
32
- runShare(
33
- templateId = templateId,
34
- useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
35
- templateArgs = templateArgs,
36
- serverCallbackArgs = serverCallbackArgs,
37
- promise = promise,
38
- )
39
- }
40
-
41
- @ReactMethod
42
- override fun shareFeedTemplate(
43
- value: ReadableMap,
44
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
45
- serverCallbackArgs: ReadableMap?,
46
- promise: Promise,
47
- ) = onMain {
48
- runShare(
49
- defaultTemplate = RNCKakaoShareTemplates.createFeedTemplate(value),
50
- useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
51
- serverCallbackArgs = serverCallbackArgs,
52
- promise = promise,
53
- )
54
- }
55
-
56
- @ReactMethod
57
- override fun shareListTemplate(
58
- value: ReadableMap,
59
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
60
- serverCallbackArgs: ReadableMap?,
39
+ templateArgs: ReadableMap,
40
+ serverCallbackArgs: ReadableMap,
61
41
  promise: Promise,
62
42
  ) = onMain {
63
- runShare(
64
- defaultTemplate = RNCKakaoShareTemplates.createListTemplate(value),
65
- useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
66
- serverCallbackArgs = serverCallbackArgs,
67
- promise = promise,
68
- )
43
+ if (templateType == "custom") {
44
+ shareOrSendCustom(
45
+ sendType,
46
+ templateType,
47
+ templateId,
48
+ receiverUuids = receiverUuids.filterIsInstance<String>(),
49
+ useWebBrowserIfKakaoTalkNotAvailable,
50
+ templateArgs,
51
+ serverCallbackArgs,
52
+ promise,
53
+ )
54
+ } else {
55
+ shareOrSendDefaultTemplate(
56
+ sendType,
57
+ templateType,
58
+ templateJson,
59
+ receiverUuids = receiverUuids.filterIsInstance<String>(),
60
+ useWebBrowserIfKakaoTalkNotAvailable,
61
+ serverCallbackArgs,
62
+ promise,
63
+ )
64
+ }
69
65
  }
70
66
 
71
- @ReactMethod
72
- override fun shareLocationTemplate(
73
- value: ReadableMap,
67
+ private fun shareOrSendCustom(
68
+ sendType: String,
69
+ templateType: String,
70
+ templateId: Double,
71
+ receiverUuids: List<String>,
74
72
  useWebBrowserIfKakaoTalkNotAvailable: Boolean,
73
+ templateArgs: ReadableMap?,
75
74
  serverCallbackArgs: ReadableMap?,
76
75
  promise: Promise,
77
- ) = onMain {
78
- runShare(
79
- defaultTemplate = RNCKakaoShareTemplates.createLocationTemplate(value),
80
- useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
81
- serverCallbackArgs = serverCallbackArgs,
82
- promise = promise,
83
- )
76
+ ) = when (sendType) {
77
+ "share" -> {
78
+ runShare(
79
+ templateType,
80
+ templateId,
81
+ null,
82
+ useWebBrowserIfKakaoTalkNotAvailable,
83
+ templateArgs,
84
+ serverCallbackArgs,
85
+ promise,
86
+ )
87
+ }
88
+ "send-me" -> {
89
+ runSendToMe(templateType, templateId, null, templateArgs, promise)
90
+ }
91
+ "send-friend" -> {
92
+ runSendToFriends(templateType, receiverUuids, templateId, null, templateArgs, promise)
93
+ }
94
+ else -> {
95
+ promise.rejectWith(RNCKakaoUnknownException("Unknown sendType: $sendType"))
96
+ }
84
97
  }
85
98
 
86
- @ReactMethod
87
- override fun shareCommerceTemplate(
88
- value: ReadableMap,
99
+ private fun shareOrSendDefaultTemplate(
100
+ sendType: String,
101
+ templateType: String,
102
+ template: ReadableMap,
103
+ receiverUuids: List<String>,
89
104
  useWebBrowserIfKakaoTalkNotAvailable: Boolean,
90
105
  serverCallbackArgs: ReadableMap?,
91
106
  promise: Promise,
92
- ) = onMain {
93
- runShare(
94
- defaultTemplate = RNCKakaoShareTemplates.createCommerceTemplate(value),
95
- useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
96
- serverCallbackArgs = serverCallbackArgs,
97
- promise = promise,
98
- )
107
+ ) = when (sendType) {
108
+ "share" -> {
109
+ runShare(
110
+ templateType,
111
+ null,
112
+ template,
113
+ useWebBrowserIfKakaoTalkNotAvailable,
114
+ argMap(),
115
+ serverCallbackArgs,
116
+ promise,
117
+ )
118
+ }
119
+ "send-me" -> {
120
+ runSendToMe(templateType, null, template, null, promise)
121
+ }
122
+ "send-friend" -> {
123
+ runSendToFriends(templateType, receiverUuids, null, template, null, promise)
124
+ }
125
+ else -> {
126
+ promise.rejectWith(RNCKakaoUnknownException("Unknown sendType: $sendType"))
127
+ }
99
128
  }
100
129
 
101
- @ReactMethod
102
- override fun shareTextTemplate(
103
- value: ReadableMap,
104
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
105
- serverCallbackArgs: ReadableMap?,
130
+ private fun runSendToMe(
131
+ templateType: String,
132
+ templateId: Double? = null,
133
+ defaultTemplate: ReadableMap? = null,
134
+ templateArgs: ReadableMap? = null,
106
135
  promise: Promise,
107
- ) = onMain {
108
- runShare(
109
- defaultTemplate = RNCKakaoShareTemplates.createTextTemplate(value),
110
- useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
111
- serverCallbackArgs = serverCallbackArgs,
112
- promise = promise,
113
- )
136
+ ) {
137
+ val callback = { e: Throwable? ->
138
+ if (e != null) {
139
+ promise.rejectWith(e)
140
+ } else {
141
+ promise.resolve(42)
142
+ }
143
+ }
144
+ if (templateId != null) {
145
+ TalkApiClient.instance.sendCustomMemo(templateId.toLong(), templateArgs?.toStringMap(), callback)
146
+ } else if (defaultTemplate != null) {
147
+ runCatching {
148
+ TalkApiClient.instance.sendDefaultMemo(
149
+ RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
150
+ callback,
151
+ )
152
+ }.onFailure { promise.rejectWith(it) }
153
+ } else {
154
+ promise.rejectWith(RNCKakaoUnknownException("one of templateId or defaultTemplate should exist"))
155
+ }
114
156
  }
115
157
 
116
- @ReactMethod
117
- override fun shareCalendarTemplate(
118
- value: ReadableMap,
119
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
120
- serverCallbackArgs: ReadableMap?,
158
+ private fun runSendToFriends(
159
+ templateType: String,
160
+ receiverUuids: List<String>,
161
+ templateId: Double? = null,
162
+ defaultTemplate: ReadableMap? = null,
163
+ templateArgs: ReadableMap? = null,
121
164
  promise: Promise,
122
- ) = onMain {
123
- runShare(
124
- defaultTemplate = RNCKakaoShareTemplates.createCalendarTemplate(value),
125
- useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
126
- serverCallbackArgs = serverCallbackArgs,
127
- promise = promise,
128
- )
165
+ ) {
166
+ val callback = { messageSendResult: MessageSendResult?, e: Throwable? ->
167
+ if (e != null) {
168
+ promise.rejectWith(e)
169
+ } else if (messageSendResult == null) {
170
+ promise.rejectWith(RNCKakaoResponseNotFoundException("messageSendResult"))
171
+ } else {
172
+ promise.resolve(argArr().pushStringList(messageSendResult.successfulReceiverUuids ?: listOf()))
173
+ }
174
+ }
175
+ if (templateId != null) {
176
+ TalkApiClient.instance.sendCustomMessage(receiverUuids, templateId.toLong(), templateArgs?.toStringMap(), callback)
177
+ } else if (defaultTemplate != null) {
178
+ runCatching {
179
+ TalkApiClient.instance.sendDefaultMessage(
180
+ receiverUuids,
181
+ RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
182
+ callback,
183
+ )
184
+ }.onFailure { promise.rejectWith(it) }
185
+ } else {
186
+ promise.rejectWith(RNCKakaoUnknownException("one of templateId or defaultTemplate should exist"))
187
+ }
129
188
  }
130
189
 
131
190
  private fun runShare(
191
+ templateType: String,
132
192
  templateId: Double? = null,
133
- defaultTemplate: DefaultTemplate? = null,
193
+ defaultTemplate: ReadableMap? = null,
134
194
  useWebBrowserIfKakaoTalkNotAvailable: Boolean,
135
195
  templateArgs: ReadableMap? = null,
136
196
  serverCallbackArgs: ReadableMap? = null,
@@ -163,48 +223,56 @@ class RNCKakaoShareModule internal constructor(context: ReactApplicationContext)
163
223
  callback = callback,
164
224
  )
165
225
  } else if (defaultTemplate != null) {
166
- ShareClient.instance.shareDefault(
167
- context,
168
- defaultTemplate,
169
- serverCallbackArgs = serverCallbackArgs?.toStringMap(),
170
- callback = callback,
171
- )
172
- }
173
- } else if (useWebBrowserIfKakaoTalkNotAvailable) {
174
- val sharerUrl =
175
- if (templateId != null) {
176
- WebSharerClient.instance.makeCustomUrl(
177
- templateId.toLong(),
178
- templateArgs = templateArgs?.toStringMap(),
179
- serverCallbackArgs = serverCallbackArgs?.toStringMap(),
180
- )
181
- } else if (defaultTemplate != null) {
182
- WebSharerClient.instance.makeDefaultUrl(
183
- defaultTemplate,
226
+ runCatching {
227
+ ShareClient.instance.shareDefault(
228
+ context,
229
+ RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
184
230
  serverCallbackArgs = serverCallbackArgs?.toStringMap(),
231
+ callback = callback,
185
232
  )
186
- } else {
187
- run {
188
- promise.rejectWith(RNCKakaoUnknownException("one of templateId or template shouldn't be null"))
189
- return
190
- }
233
+ }.onFailure {
234
+ promise.rejectWith(it)
191
235
  }
192
- try {
193
- KakaoCustomTabsClient.openWithDefault(context, sharerUrl)
194
- promise.resolve(42)
195
- return
196
- } catch (_: UnsupportedOperationException) {
197
- }
198
- try {
199
- KakaoCustomTabsClient.open(context, sharerUrl)
200
- promise.resolve(42)
201
- return
202
- } catch (_: ActivityNotFoundException) {
203
236
  }
237
+ } else if (useWebBrowserIfKakaoTalkNotAvailable) {
238
+ runCatching {
239
+ val sharerUrl =
240
+ if (templateId != null) {
241
+ WebSharerClient.instance.makeCustomUrl(
242
+ templateId.toLong(),
243
+ templateArgs = templateArgs?.toStringMap(),
244
+ serverCallbackArgs = serverCallbackArgs?.toStringMap(),
245
+ )
246
+ } else if (defaultTemplate != null) {
247
+ WebSharerClient.instance.makeDefaultUrl(
248
+ RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
249
+ serverCallbackArgs = serverCallbackArgs?.toStringMap(),
250
+ )
251
+ } else {
252
+ run {
253
+ promise.rejectWith(RNCKakaoUnknownException("one of templateId or template shouldn't be null"))
254
+ return
255
+ }
256
+ }
257
+ try {
258
+ KakaoCustomTabsClient.openWithDefault(context, sharerUrl)
259
+ promise.resolve(42)
260
+ return
261
+ } catch (_: UnsupportedOperationException) {
262
+ }
263
+ try {
264
+ KakaoCustomTabsClient.open(context, sharerUrl)
265
+ promise.resolve(42)
266
+ return
267
+ } catch (_: ActivityNotFoundException) {
268
+ }
204
269
 
205
- promise.rejectWith(RNCKakaoUnknownException("web url open failed $sharerUrl"))
270
+ promise.rejectWith(RNCKakaoUnknownException("web url open failed $sharerUrl"))
271
+ }.onFailure {
272
+ promise.rejectWith(it)
273
+ }
206
274
  } else {
207
- promise.rejectWith(RNCKakaoUnknownException("kakaotalk not available"))
275
+ promise.rejectWith(RNCKakaoAppNotAvailableException(TALK))
208
276
  }
209
277
  }
210
278
 
@@ -6,6 +6,7 @@ import com.kakao.sdk.template.model.CalendarTemplate
6
6
  import com.kakao.sdk.template.model.Commerce
7
7
  import com.kakao.sdk.template.model.CommerceTemplate
8
8
  import com.kakao.sdk.template.model.Content
9
+ import com.kakao.sdk.template.model.DefaultTemplate
9
10
  import com.kakao.sdk.template.model.FeedTemplate
10
11
  import com.kakao.sdk.template.model.IdType.CALENDAR
11
12
  import com.kakao.sdk.template.model.IdType.EVENT
@@ -16,11 +17,26 @@ import com.kakao.sdk.template.model.ListTemplate
16
17
  import com.kakao.sdk.template.model.LocationTemplate
17
18
  import com.kakao.sdk.template.model.Social
18
19
  import com.kakao.sdk.template.model.TextTemplate
20
+ import net.mjstudio.rnkakao.core.util.RNCKakaoUnknownException
19
21
  import net.mjstudio.rnkakao.core.util.filterIsReadableMap
20
22
  import net.mjstudio.rnkakao.core.util.getIntElseNull
21
23
  import net.mjstudio.rnkakao.core.util.toStringMap
22
24
 
23
25
  object RNCKakaoShareTemplates {
26
+ fun createDefaultTemplate(
27
+ template: ReadableMap,
28
+ templateType: String,
29
+ ): DefaultTemplate =
30
+ when (templateType) {
31
+ "feed" -> createFeedTemplate(template)
32
+ "list" -> createListTemplate(template)
33
+ "location" -> createLocationTemplate(template)
34
+ "commerce" -> createCommerceTemplate(template)
35
+ "text" -> createTextTemplate(template)
36
+ "calendar" -> createCalendarTemplate(template)
37
+ else -> throw RNCKakaoUnknownException("Unknown templateType: $templateType")
38
+ }
39
+
24
40
  private fun ReadableMap.toLink() =
25
41
  Link(
26
42
  webUrl = getString("webUrl"),
@@ -83,7 +99,7 @@ object RNCKakaoShareTemplates {
83
99
  currencyUnitPosition = getIntElseNull("currencyUnitPosition"),
84
100
  )
85
101
 
86
- fun createFeedTemplate(map: ReadableMap) =
102
+ private fun createFeedTemplate(map: ReadableMap) =
87
103
  FeedTemplate(
88
104
  content = map.getMap("content")!!.toContent(),
89
105
  itemContent = map.getMap("itemContent")?.toItemContent(),
@@ -92,7 +108,7 @@ object RNCKakaoShareTemplates {
92
108
  buttonTitle = map.getString("buttonTitle"),
93
109
  )
94
110
 
95
- fun createListTemplate(map: ReadableMap): ListTemplate {
111
+ private fun createListTemplate(map: ReadableMap): ListTemplate {
96
112
  return ListTemplate(
97
113
  headerTitle = map.getString("headerTitle") ?: "",
98
114
  headerLink = map.getMap("headerLink")?.toLink() ?: Link(),
@@ -104,7 +120,7 @@ object RNCKakaoShareTemplates {
104
120
  )
105
121
  }
106
122
 
107
- fun createLocationTemplate(map: ReadableMap) =
123
+ private fun createLocationTemplate(map: ReadableMap) =
108
124
  LocationTemplate(
109
125
  address = map.getString("address") ?: "",
110
126
  content = map.getMap("content")!!.toContent(),
@@ -114,7 +130,7 @@ object RNCKakaoShareTemplates {
114
130
  buttonTitle = map.getString("buttonTitle"),
115
131
  )
116
132
 
117
- fun createCommerceTemplate(map: ReadableMap) =
133
+ private fun createCommerceTemplate(map: ReadableMap) =
118
134
  CommerceTemplate(
119
135
  content = map.getMap("content")!!.toContent(),
120
136
  commerce = map.getMap("commerce")!!.toCommerce(),
@@ -122,7 +138,7 @@ object RNCKakaoShareTemplates {
122
138
  buttonTitle = map.getString("buttonTitle"),
123
139
  )
124
140
 
125
- fun createTextTemplate(map: ReadableMap) =
141
+ private fun createTextTemplate(map: ReadableMap) =
126
142
  TextTemplate(
127
143
  text = map.getString("text") ?: "",
128
144
  link = map.getMap("link")?.toLink() ?: Link(),
@@ -130,7 +146,7 @@ object RNCKakaoShareTemplates {
130
146
  buttonTitle = map.getString("buttonTitle"),
131
147
  )
132
148
 
133
- fun createCalendarTemplate(map: ReadableMap) =
149
+ private fun createCalendarTemplate(map: ReadableMap) =
134
150
  CalendarTemplate(
135
151
  id = map.getString("id")!!,
136
152
  idType = if (map.getString("id") == "event") EVENT else CALENDAR,
@@ -3,57 +3,20 @@ package net.mjstudio.rnkakao.share
3
3
  import com.facebook.react.bridge.Promise
4
4
  import com.facebook.react.bridge.ReactApplicationContext
5
5
  import com.facebook.react.bridge.ReactContextBaseJavaModule
6
+ import com.facebook.react.bridge.ReadableArray
6
7
  import com.facebook.react.bridge.ReadableMap
7
8
 
8
9
  abstract class KakaoShareSpec internal constructor(context: ReactApplicationContext) :
9
10
  ReactContextBaseJavaModule(context) {
10
- abstract fun shareCustom(
11
+ abstract fun shareOrSendMeOrSendFriendOrWhatever(
12
+ sendType: String,
13
+ templateType: String,
11
14
  templateId: Double,
15
+ templateJson: ReadableMap,
16
+ receiverUuids: ReadableArray,
12
17
  useWebBrowserIfKakaoTalkNotAvailable: Boolean,
13
- templateArgs: ReadableMap?,
14
- serverCallbackArgs: ReadableMap?,
15
- promise: Promise,
16
- )
17
-
18
- abstract fun shareFeedTemplate(
19
- value: ReadableMap,
20
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
21
- serverCallbackArgs: ReadableMap?,
22
- promise: Promise,
23
- )
24
-
25
- abstract fun shareListTemplate(
26
- value: ReadableMap,
27
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
28
- serverCallbackArgs: ReadableMap?,
29
- promise: Promise,
30
- )
31
-
32
- abstract fun shareLocationTemplate(
33
- value: ReadableMap,
34
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
35
- serverCallbackArgs: ReadableMap?,
36
- promise: Promise,
37
- )
38
-
39
- abstract fun shareCommerceTemplate(
40
- value: ReadableMap,
41
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
42
- serverCallbackArgs: ReadableMap?,
43
- promise: Promise,
44
- )
45
-
46
- abstract fun shareTextTemplate(
47
- value: ReadableMap,
48
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
49
- serverCallbackArgs: ReadableMap?,
50
- promise: Promise,
51
- )
52
-
53
- abstract fun shareCalendarTemplate(
54
- value: ReadableMap,
55
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
56
- serverCallbackArgs: ReadableMap?,
18
+ templateArgs: ReadableMap,
19
+ serverCallbackArgs: ReadableMap,
57
20
  promise: Promise,
58
21
  )
59
22
  }
@@ -1,21 +1,6 @@
1
1
  #import "RNCKakaoShare.h"
2
2
  #import "RNCKakaoShare-Swift.h"
3
3
 
4
- #define RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(name, type_name) \
5
- RCT_EXPORT_METHOD(name \
6
- : (NSDictionary*)value useWebBrowserIfKakaoTalkNotAvailable \
7
- : (BOOL)useWebBrowserIfKakaoTalkNotAvailable serverCallbackArgs \
8
- : (NSDictionary*)serverCallbackArgs resolve \
9
- : (RCTPromiseResolveBlock)resolve reject \
10
- : (RCTPromiseRejectBlock)reject) { \
11
- [[self manager] shareDefaultTemplate:value \
12
- type:@ #type_name \
13
- useWebBrowserIfKakaoTalkNotAvailable:useWebBrowserIfKakaoTalkNotAvailable \
14
- serverCallbackArgs:serverCallbackArgs \
15
- resolve:resolve \
16
- reject:reject]; \
17
- }
18
-
19
4
  @implementation RNCKakaoShare
20
5
 
21
6
  - (RNCKakaoShareManager*)manager {
@@ -24,28 +9,36 @@
24
9
 
25
10
  RCT_EXPORT_MODULE()
26
11
 
27
- RCT_EXPORT_METHOD(shareCustom
28
- : (double)templateId useWebBrowserIfKakaoTalkNotAvailable
12
+ // RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareFeedTemplate, feed)
13
+ // RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareListTemplate, list)
14
+ // RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareLocationTemplate, location)
15
+ // RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareCommerceTemplate, commerce)
16
+ // RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareTextTemplate, text)
17
+ // RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareCalendarTemplate, calendar)
18
+
19
+ RCT_EXPORT_METHOD(shareOrSendMeOrSendFriendOrWhatever
20
+ : (NSString*)sendType templateType
21
+ : (NSString*)templateType templateId
22
+ : (double)templateId templateJson
23
+ : (NSDictionary*)templateJson receiverUuids
24
+ : (NSArray*)receiverUuids useWebBrowserIfKakaoTalkNotAvailable
29
25
  : (BOOL)useWebBrowserIfKakaoTalkNotAvailable templateArgs
30
26
  : (NSDictionary*)templateArgs serverCallbackArgs
31
27
  : (NSDictionary*)serverCallbackArgs resolve
32
28
  : (RCTPromiseResolveBlock)resolve reject
33
29
  : (RCTPromiseRejectBlock)reject) {
34
- [[self manager] shareCustom:(NSInteger)templateId
35
- useWebBrowserIfKakaoTalkNotAvailable:useWebBrowserIfKakaoTalkNotAvailable
36
- templateArgs:templateArgs
37
- serverCallbackArgs:serverCallbackArgs
38
- resolve:resolve
39
- reject:reject];
30
+ [[self manager] shareOrSendMeOrSendFriendOrWhatever:sendType
31
+ templateType:templateType
32
+ templateId:templateId
33
+ templateJson:templateJson
34
+ receiverUuids:receiverUuids
35
+ useWebBrowserIfKakaoTalkNotAvailable:useWebBrowserIfKakaoTalkNotAvailable
36
+ templateArgs:templateArgs
37
+ serverCallbackArgs:serverCallbackArgs
38
+ resolve:resolve
39
+ reject:reject];
40
40
  }
41
41
 
42
- RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareFeedTemplate, feed)
43
- RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareListTemplate, list)
44
- RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareLocationTemplate, location)
45
- RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareCommerceTemplate, commerce)
46
- RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareTextTemplate, text)
47
- RNC_KAKAO_SHARE_EXPORT_DEFAULT_TEMPLATE(shareCalendarTemplate, calendar)
48
-
49
42
  // Don't compile this code when we build for the old architecture.
50
43
  #ifdef RCT_NEW_ARCH_ENABLED
51
44
  - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule: