@react-native-kakao/share 2.2.4 → 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.
@@ -24,261 +24,260 @@ import net.mjstudio.rnkakao.core.util.pushStringList
24
24
  import net.mjstudio.rnkakao.core.util.rejectWith
25
25
  import net.mjstudio.rnkakao.core.util.toStringMap
26
26
 
27
- class RNCKakaoShareModule internal constructor(context: ReactApplicationContext) :
28
- KakaoShareSpec(context) {
29
- override fun getName(): String {
30
- return NAME
31
- }
27
+ class RNCKakaoShareModule internal constructor(
28
+ context: ReactApplicationContext,
29
+ ) : KakaoShareSpec(context) {
30
+ override fun getName(): String = NAME
32
31
 
33
- @ReactMethod
34
- override fun shareOrSendMeOrSendFriendOrWhatever(
35
- sendType: String,
36
- templateType: String,
37
- templateId: Double,
38
- templateJson: ReadableMap,
39
- receiverUuids: ReadableArray,
40
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
41
- templateArgs: ReadableMap,
42
- serverCallbackArgs: ReadableMap,
43
- promise: Promise,
44
- ) = onMain {
45
- if (templateType == "custom") {
46
- shareOrSendCustom(
47
- sendType,
48
- templateType,
49
- templateId,
50
- receiverUuids = receiverUuids.filterIsInstance<String>(),
51
- useWebBrowserIfKakaoTalkNotAvailable,
52
- templateArgs,
53
- serverCallbackArgs,
54
- promise,
55
- )
56
- } else {
57
- shareOrSendDefaultTemplate(
58
- sendType,
59
- templateType,
60
- templateJson,
61
- receiverUuids = receiverUuids.filterIsInstance<String>(),
62
- useWebBrowserIfKakaoTalkNotAvailable,
63
- serverCallbackArgs,
64
- promise,
65
- )
66
- }
32
+ @ReactMethod
33
+ override fun shareOrSendMeOrSendFriendOrWhatever(
34
+ sendType: String,
35
+ templateType: String,
36
+ templateId: Double,
37
+ templateJson: ReadableMap,
38
+ receiverUuids: ReadableArray,
39
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
40
+ templateArgs: ReadableMap,
41
+ serverCallbackArgs: ReadableMap,
42
+ promise: Promise,
43
+ ) = onMain {
44
+ if (templateType == "custom") {
45
+ shareOrSendCustom(
46
+ sendType,
47
+ templateType,
48
+ templateId,
49
+ receiverUuids = receiverUuids.filterIsInstance<String>(),
50
+ useWebBrowserIfKakaoTalkNotAvailable,
51
+ templateArgs,
52
+ serverCallbackArgs,
53
+ promise,
54
+ )
55
+ } else {
56
+ shareOrSendDefaultTemplate(
57
+ sendType,
58
+ templateType,
59
+ templateJson,
60
+ receiverUuids = receiverUuids.filterIsInstance<String>(),
61
+ useWebBrowserIfKakaoTalkNotAvailable,
62
+ serverCallbackArgs,
63
+ promise,
64
+ )
67
65
  }
66
+ }
68
67
 
69
- private fun shareOrSendCustom(
70
- sendType: String,
71
- templateType: String,
72
- templateId: Double,
73
- receiverUuids: List<String>,
74
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
75
- templateArgs: ReadableMap?,
76
- serverCallbackArgs: ReadableMap?,
77
- promise: Promise,
78
- ) = when (sendType) {
79
- "share" -> {
80
- runShare(
81
- templateType,
82
- templateId,
83
- null,
84
- useWebBrowserIfKakaoTalkNotAvailable,
85
- templateArgs,
86
- serverCallbackArgs,
87
- promise,
88
- )
89
- }
90
- "send-me" -> {
91
- runSendToMe(templateType, templateId, null, templateArgs, promise)
92
- }
93
- "send-friend" -> {
94
- runSendToFriends(templateType, receiverUuids, templateId, null, templateArgs, promise)
95
- }
96
- else -> {
97
- promise.rejectWith(RNCKakaoUnknownException("Unknown sendType: $sendType"))
98
- }
68
+ private fun shareOrSendCustom(
69
+ sendType: String,
70
+ templateType: String,
71
+ templateId: Double,
72
+ receiverUuids: List<String>,
73
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
74
+ templateArgs: ReadableMap?,
75
+ serverCallbackArgs: ReadableMap?,
76
+ promise: Promise,
77
+ ) = when (sendType) {
78
+ "share" -> {
79
+ runShare(
80
+ templateType,
81
+ templateId,
82
+ null,
83
+ useWebBrowserIfKakaoTalkNotAvailable,
84
+ templateArgs,
85
+ serverCallbackArgs,
86
+ promise,
87
+ )
88
+ }
89
+ "send-me" -> {
90
+ runSendToMe(templateType, templateId, null, templateArgs, promise)
91
+ }
92
+ "send-friend" -> {
93
+ runSendToFriends(templateType, receiverUuids, templateId, null, templateArgs, promise)
99
94
  }
95
+ else -> {
96
+ promise.rejectWith(RNCKakaoUnknownException("Unknown sendType: $sendType"))
97
+ }
98
+ }
100
99
 
101
- private fun shareOrSendDefaultTemplate(
102
- sendType: String,
103
- templateType: String,
104
- template: ReadableMap,
105
- receiverUuids: List<String>,
106
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
107
- serverCallbackArgs: ReadableMap?,
108
- promise: Promise,
109
- ) = when (sendType) {
110
- "share" -> {
111
- runShare(
112
- templateType,
113
- null,
114
- template,
115
- useWebBrowserIfKakaoTalkNotAvailable,
116
- argMap(),
117
- serverCallbackArgs,
118
- promise,
119
- )
120
- }
121
- "send-me" -> {
122
- runSendToMe(templateType, null, template, null, promise)
123
- }
124
- "send-friend" -> {
125
- runSendToFriends(templateType, receiverUuids, null, template, null, promise)
126
- }
127
- else -> {
128
- promise.rejectWith(RNCKakaoUnknownException("Unknown sendType: $sendType"))
129
- }
100
+ private fun shareOrSendDefaultTemplate(
101
+ sendType: String,
102
+ templateType: String,
103
+ template: ReadableMap,
104
+ receiverUuids: List<String>,
105
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
106
+ serverCallbackArgs: ReadableMap?,
107
+ promise: Promise,
108
+ ) = when (sendType) {
109
+ "share" -> {
110
+ runShare(
111
+ templateType,
112
+ null,
113
+ template,
114
+ useWebBrowserIfKakaoTalkNotAvailable,
115
+ argMap(),
116
+ serverCallbackArgs,
117
+ promise,
118
+ )
130
119
  }
120
+ "send-me" -> {
121
+ runSendToMe(templateType, null, template, null, promise)
122
+ }
123
+ "send-friend" -> {
124
+ runSendToFriends(templateType, receiverUuids, null, template, null, promise)
125
+ }
126
+ else -> {
127
+ promise.rejectWith(RNCKakaoUnknownException("Unknown sendType: $sendType"))
128
+ }
129
+ }
131
130
 
132
- private fun runSendToMe(
133
- templateType: String,
134
- templateId: Double? = null,
135
- defaultTemplate: ReadableMap? = null,
136
- templateArgs: ReadableMap? = null,
137
- promise: Promise,
138
- ) {
139
- val callback = { e: Throwable? ->
140
- if (e != null) {
141
- promise.rejectWith(e)
142
- } else {
143
- promise.resolve(42)
144
- }
145
- }
146
- if (templateId != null) {
147
- TalkApiClient.instance.sendCustomMemo(templateId.toLong(), templateArgs?.toStringMap(), callback)
148
- } else if (defaultTemplate != null) {
149
- runCatching {
150
- TalkApiClient.instance.sendDefaultMemo(
151
- RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
152
- callback,
153
- )
154
- }.onFailure { promise.rejectWith(it) }
131
+ private fun runSendToMe(
132
+ templateType: String,
133
+ templateId: Double? = null,
134
+ defaultTemplate: ReadableMap? = null,
135
+ templateArgs: ReadableMap? = null,
136
+ promise: Promise,
137
+ ) {
138
+ val callback = { e: Throwable? ->
139
+ if (e != null) {
140
+ promise.rejectWith(e)
155
141
  } else {
156
- promise.rejectWith(RNCKakaoUnknownException("one of templateId or defaultTemplate should exist"))
142
+ promise.resolve(42)
157
143
  }
158
144
  }
145
+ if (templateId != null) {
146
+ TalkApiClient.instance.sendCustomMemo(templateId.toLong(), templateArgs?.toStringMap(), callback)
147
+ } else if (defaultTemplate != null) {
148
+ runCatching {
149
+ TalkApiClient.instance.sendDefaultMemo(
150
+ RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
151
+ callback,
152
+ )
153
+ }.onFailure { promise.rejectWith(it) }
154
+ } else {
155
+ promise.rejectWith(RNCKakaoUnknownException("one of templateId or defaultTemplate should exist"))
156
+ }
157
+ }
159
158
 
160
- private fun runSendToFriends(
161
- templateType: String,
162
- receiverUuids: List<String>,
163
- templateId: Double? = null,
164
- defaultTemplate: ReadableMap? = null,
165
- templateArgs: ReadableMap? = null,
166
- promise: Promise,
167
- ) {
168
- val callback = { messageSendResult: MessageSendResult?, e: Throwable? ->
169
- if (e != null) {
170
- promise.rejectWith(e)
171
- } else if (messageSendResult == null) {
172
- promise.rejectWith(RNCKakaoResponseNotFoundException("messageSendResult"))
173
- } else {
174
- promise.resolve(argArr().pushStringList(messageSendResult.successfulReceiverUuids ?: listOf()))
175
- }
176
- }
177
- if (templateId != null) {
178
- TalkApiClient.instance.sendCustomMessage(receiverUuids, templateId.toLong(), templateArgs?.toStringMap(), callback)
179
- } else if (defaultTemplate != null) {
180
- runCatching {
181
- TalkApiClient.instance.sendDefaultMessage(
182
- receiverUuids,
183
- RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
184
- callback,
185
- )
186
- }.onFailure { promise.rejectWith(it) }
159
+ private fun runSendToFriends(
160
+ templateType: String,
161
+ receiverUuids: List<String>,
162
+ templateId: Double? = null,
163
+ defaultTemplate: ReadableMap? = null,
164
+ templateArgs: ReadableMap? = null,
165
+ promise: Promise,
166
+ ) {
167
+ val callback = { messageSendResult: MessageSendResult?, e: Throwable? ->
168
+ if (e != null) {
169
+ promise.rejectWith(e)
170
+ } else if (messageSendResult == null) {
171
+ promise.rejectWith(RNCKakaoResponseNotFoundException("messageSendResult"))
187
172
  } else {
188
- promise.rejectWith(RNCKakaoUnknownException("one of templateId or defaultTemplate should exist"))
173
+ promise.resolve(argArr().pushStringList(messageSendResult.successfulReceiverUuids ?: listOf()))
189
174
  }
190
175
  }
176
+ if (templateId != null) {
177
+ TalkApiClient.instance.sendCustomMessage(receiverUuids, templateId.toLong(), templateArgs?.toStringMap(), callback)
178
+ } else if (defaultTemplate != null) {
179
+ runCatching {
180
+ TalkApiClient.instance.sendDefaultMessage(
181
+ receiverUuids,
182
+ RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
183
+ callback,
184
+ )
185
+ }.onFailure { promise.rejectWith(it) }
186
+ } else {
187
+ promise.rejectWith(RNCKakaoUnknownException("one of templateId or defaultTemplate should exist"))
188
+ }
189
+ }
191
190
 
192
- private fun runShare(
193
- templateType: String,
194
- templateId: Double? = null,
195
- defaultTemplate: ReadableMap? = null,
196
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
197
- templateArgs: ReadableMap? = null,
198
- serverCallbackArgs: ReadableMap? = null,
199
- promise: Promise,
200
- ) {
201
- val context = currentActivity
202
- if (context == null) {
203
- promise.rejectWith(ActivityNotFoundException())
204
- return
205
- }
191
+ private fun runShare(
192
+ templateType: String,
193
+ templateId: Double? = null,
194
+ defaultTemplate: ReadableMap? = null,
195
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
196
+ templateArgs: ReadableMap? = null,
197
+ serverCallbackArgs: ReadableMap? = null,
198
+ promise: Promise,
199
+ ) {
200
+ val context = currentActivity
201
+ if (context == null) {
202
+ promise.rejectWith(ActivityNotFoundException())
203
+ return
204
+ }
206
205
 
207
- val callback = { sharingResult: SharingResult?, error: Throwable? ->
208
- if (error != null) {
209
- promise.rejectWith(error)
210
- } else if (sharingResult != null) {
211
- context.startActivity(sharingResult.intent)
212
- promise.resolve(42)
213
- } else {
214
- promise.resolve(42)
215
- }
206
+ val callback = { sharingResult: SharingResult?, error: Throwable? ->
207
+ if (error != null) {
208
+ promise.rejectWith(error)
209
+ } else if (sharingResult != null) {
210
+ context.startActivity(sharingResult.intent)
211
+ promise.resolve(42)
212
+ } else {
213
+ promise.resolve(42)
216
214
  }
215
+ }
217
216
 
218
- if (ShareClient.instance.isKakaoTalkSharingAvailable(context)) {
219
- if (templateId != null) {
220
- ShareClient.instance.shareCustom(
217
+ if (ShareClient.instance.isKakaoTalkSharingAvailable(context)) {
218
+ if (templateId != null) {
219
+ ShareClient.instance.shareCustom(
220
+ context,
221
+ templateId.toLong(),
222
+ templateArgs = templateArgs?.toStringMap(),
223
+ serverCallbackArgs = serverCallbackArgs?.toStringMap(),
224
+ callback = callback,
225
+ )
226
+ } else if (defaultTemplate != null) {
227
+ runCatching {
228
+ ShareClient.instance.shareDefault(
221
229
  context,
222
- templateId.toLong(),
223
- templateArgs = templateArgs?.toStringMap(),
230
+ RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
224
231
  serverCallbackArgs = serverCallbackArgs?.toStringMap(),
225
232
  callback = callback,
226
233
  )
227
- } else if (defaultTemplate != null) {
228
- runCatching {
229
- ShareClient.instance.shareDefault(
230
- context,
234
+ }.onFailure {
235
+ promise.rejectWith(it)
236
+ }
237
+ }
238
+ } else if (useWebBrowserIfKakaoTalkNotAvailable) {
239
+ runCatching {
240
+ val sharerUrl =
241
+ if (templateId != null) {
242
+ WebSharerClient.instance.makeCustomUrl(
243
+ templateId.toLong(),
244
+ templateArgs = templateArgs?.toStringMap(),
245
+ serverCallbackArgs = serverCallbackArgs?.toStringMap(),
246
+ )
247
+ } else if (defaultTemplate != null) {
248
+ WebSharerClient.instance.makeDefaultUrl(
231
249
  RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
232
250
  serverCallbackArgs = serverCallbackArgs?.toStringMap(),
233
- callback = callback,
234
251
  )
235
- }.onFailure {
236
- promise.rejectWith(it)
237
- }
238
- }
239
- } else if (useWebBrowserIfKakaoTalkNotAvailable) {
240
- runCatching {
241
- val sharerUrl =
242
- if (templateId != null) {
243
- WebSharerClient.instance.makeCustomUrl(
244
- templateId.toLong(),
245
- templateArgs = templateArgs?.toStringMap(),
246
- serverCallbackArgs = serverCallbackArgs?.toStringMap(),
247
- )
248
- } else if (defaultTemplate != null) {
249
- WebSharerClient.instance.makeDefaultUrl(
250
- RNCKakaoShareTemplates.createDefaultTemplate(defaultTemplate, templateType),
251
- serverCallbackArgs = serverCallbackArgs?.toStringMap(),
252
- )
253
- } else {
254
- run {
255
- promise.rejectWith(RNCKakaoUnknownException("one of templateId or template shouldn't be null"))
256
- return
257
- }
252
+ } else {
253
+ run {
254
+ promise.rejectWith(RNCKakaoUnknownException("one of templateId or template shouldn't be null"))
255
+ return
258
256
  }
259
- try {
260
- KakaoCustomTabsClient.openWithDefault(context, sharerUrl)
261
- promise.resolve(42)
262
- return
263
- } catch (_: UnsupportedOperationException) {
264
257
  }
265
- try {
266
- KakaoCustomTabsClient.open(context, sharerUrl)
267
- promise.resolve(42)
268
- return
269
- } catch (_: ActivityNotFoundException) {
270
- }
271
-
272
- promise.rejectWith(RNCKakaoUnknownException("web url open failed $sharerUrl"))
273
- }.onFailure {
274
- promise.rejectWith(it)
258
+ try {
259
+ KakaoCustomTabsClient.openWithDefault(context, sharerUrl)
260
+ promise.resolve(42)
261
+ return
262
+ } catch (_: UnsupportedOperationException) {
275
263
  }
276
- } else {
277
- promise.rejectWith(RNCKakaoAppNotAvailableException(TALK))
264
+ try {
265
+ KakaoCustomTabsClient.open(context, sharerUrl)
266
+ promise.resolve(42)
267
+ return
268
+ } catch (_: ActivityNotFoundException) {
269
+ }
270
+
271
+ promise.rejectWith(RNCKakaoUnknownException("web url open failed $sharerUrl"))
272
+ }.onFailure {
273
+ promise.rejectWith(it)
278
274
  }
275
+ } else {
276
+ promise.rejectWith(RNCKakaoAppNotAvailableException(TALK))
279
277
  }
278
+ }
280
279
 
281
- companion object {
282
- const val NAME = "RNCKakaoShare"
283
- }
280
+ companion object {
281
+ const val NAME = "RNCKakaoShare"
284
282
  }
283
+ }
@@ -11,16 +11,15 @@ class RNCKakaoSharePackage : TurboReactPackage() {
11
11
  override fun getModule(
12
12
  name: String,
13
13
  reactContext: ReactApplicationContext,
14
- ): NativeModule? {
15
- return if (name == RNCKakaoShareModule.NAME) {
14
+ ): NativeModule? =
15
+ if (name == RNCKakaoShareModule.NAME) {
16
16
  RNCKakaoShareModule(reactContext)
17
17
  } else {
18
18
  null
19
19
  }
20
- }
21
20
 
22
- override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
23
- return ReactModuleInfoProvider {
21
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider =
22
+ ReactModuleInfoProvider {
24
23
  val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
25
24
  val isTurboModule: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
26
25
  moduleInfos[RNCKakaoShareModule.NAME] =
@@ -34,5 +33,4 @@ class RNCKakaoSharePackage : TurboReactPackage() {
34
33
  )
35
34
  moduleInfos
36
35
  }
37
- }
38
36
  }
@@ -108,8 +108,8 @@ object RNCKakaoShareTemplates {
108
108
  buttonTitle = map.getString("buttonTitle"),
109
109
  )
110
110
 
111
- private fun createListTemplate(map: ReadableMap): ListTemplate {
112
- return ListTemplate(
111
+ private fun createListTemplate(map: ReadableMap): ListTemplate =
112
+ ListTemplate(
113
113
  headerTitle = map.getString("headerTitle") ?: "",
114
114
  headerLink = map.getMap("headerLink")?.toLink() ?: Link(),
115
115
  contents =
@@ -118,7 +118,6 @@ object RNCKakaoShareTemplates {
118
118
  buttons = map.getArray("buttons")?.filterIsReadableMap()?.map { it.toButton() },
119
119
  buttonTitle = map.getString("buttonTitle"),
120
120
  )
121
- }
122
121
 
123
122
  private fun createLocationTemplate(map: ReadableMap) =
124
123
  LocationTemplate(
@@ -2,5 +2,6 @@ package net.mjstudio.rnkakao.share
2
2
 
3
3
  import com.facebook.react.bridge.ReactApplicationContext
4
4
 
5
- abstract class KakaoShareSpec internal constructor(context: ReactApplicationContext) :
6
- NativeKakaoShareSpec(context)
5
+ abstract class KakaoShareSpec internal constructor(
6
+ context: ReactApplicationContext,
7
+ ) : NativeKakaoShareSpec(context)
@@ -6,17 +6,18 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule
6
6
  import com.facebook.react.bridge.ReadableArray
7
7
  import com.facebook.react.bridge.ReadableMap
8
8
 
9
- abstract class KakaoShareSpec internal constructor(context: ReactApplicationContext) :
10
- ReactContextBaseJavaModule(context) {
11
- abstract fun shareOrSendMeOrSendFriendOrWhatever(
12
- sendType: String,
13
- templateType: String,
14
- templateId: Double,
15
- templateJson: ReadableMap,
16
- receiverUuids: ReadableArray,
17
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
18
- templateArgs: ReadableMap,
19
- serverCallbackArgs: ReadableMap,
20
- promise: Promise,
21
- )
22
- }
9
+ abstract class KakaoShareSpec internal constructor(
10
+ context: ReactApplicationContext,
11
+ ) : ReactContextBaseJavaModule(context) {
12
+ abstract fun shareOrSendMeOrSendFriendOrWhatever(
13
+ sendType: String,
14
+ templateType: String,
15
+ templateId: Double,
16
+ templateJson: ReadableMap,
17
+ receiverUuids: ReadableArray,
18
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
19
+ templateArgs: ReadableMap,
20
+ serverCallbackArgs: ReadableMap,
21
+ promise: Promise,
22
+ )
23
+ }