@react-native-kakao/share 1.0.4 → 1.1.0

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.
@@ -15,112 +15,199 @@ import net.mjstudio.rnkakao.core.util.rejectWith
15
15
  import net.mjstudio.rnkakao.core.util.toStringMap
16
16
 
17
17
  class RNCKakaoShareModule internal constructor(context: ReactApplicationContext) :
18
- KakaoShareSpec(context) {
19
-
18
+ KakaoShareSpec(context) {
20
19
  override fun getName(): String {
21
- return NAME
20
+ return NAME
22
21
  }
23
22
 
24
23
  @ReactMethod
25
24
  override fun shareCustom(
26
- templateId: Double,
27
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
28
- templateArgs: ReadableMap?,
29
- serverCallbackArgs: ReadableMap?,
30
- promise: Promise,
25
+ templateId: Double,
26
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
27
+ templateArgs: ReadableMap?,
28
+ serverCallbackArgs: ReadableMap?,
29
+ promise: Promise,
30
+ ) = onMain {
31
+ runShare(
32
+ templateId = templateId,
33
+ useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
34
+ templateArgs = templateArgs,
35
+ serverCallbackArgs = serverCallbackArgs,
36
+ promise = promise,
37
+ )
38
+ }
39
+
40
+ @ReactMethod
41
+ override fun shareFeedTemplate(
42
+ value: ReadableMap,
43
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
44
+ serverCallbackArgs: ReadableMap?,
45
+ promise: Promise,
46
+ ) = onMain {
47
+ runShare(
48
+ defaultTemplate = RNCKakaoShareTemplates.createFeedTemplate(value),
49
+ useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
50
+ serverCallbackArgs = serverCallbackArgs,
51
+ promise = promise,
52
+ )
53
+ }
54
+
55
+ @ReactMethod
56
+ override fun shareListTemplate(
57
+ value: ReadableMap,
58
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
59
+ serverCallbackArgs: ReadableMap?,
60
+ promise: Promise,
61
+ ) = onMain {
62
+ runShare(
63
+ defaultTemplate = RNCKakaoShareTemplates.createListTemplate(value),
64
+ useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
65
+ serverCallbackArgs = serverCallbackArgs,
66
+ promise = promise,
67
+ )
68
+ }
69
+
70
+ @ReactMethod
71
+ override fun shareLocationTemplate(
72
+ value: ReadableMap,
73
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
74
+ serverCallbackArgs: ReadableMap?,
75
+ promise: Promise,
76
+ ) = onMain {
77
+ runShare(
78
+ defaultTemplate = RNCKakaoShareTemplates.createLocationTemplate(value),
79
+ useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
80
+ serverCallbackArgs = serverCallbackArgs,
81
+ promise = promise,
82
+ )
83
+ }
84
+
85
+ @ReactMethod
86
+ override fun shareCommerceTemplate(
87
+ value: ReadableMap,
88
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
89
+ serverCallbackArgs: ReadableMap?,
90
+ promise: Promise,
91
+ ) = onMain {
92
+ runShare(
93
+ defaultTemplate = RNCKakaoShareTemplates.createCommerceTemplate(value),
94
+ useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
95
+ serverCallbackArgs = serverCallbackArgs,
96
+ promise = promise,
97
+ )
98
+ }
99
+
100
+ @ReactMethod
101
+ override fun shareTextTemplate(
102
+ value: ReadableMap,
103
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
104
+ serverCallbackArgs: ReadableMap?,
105
+ promise: Promise,
31
106
  ) = onMain {
32
- runShare(
33
- templateId = templateId,
34
- useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
35
- templateArgs = templateArgs,
36
- serverCallbackArgs = serverCallbackArgs,
37
- promise = promise,
38
- )
107
+ runShare(
108
+ defaultTemplate = RNCKakaoShareTemplates.createTextTemplate(value),
109
+ useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
110
+ serverCallbackArgs = serverCallbackArgs,
111
+ promise = promise,
112
+ )
39
113
  }
40
114
 
41
- // @ReactMethod
42
- // fun shareFeed(serverCallbackArgs: ReadableMap?, promise: Promise) {
43
- // val context = currentActivity
44
- // if (context == null) {
45
- // promise.rejectWith(ActivityNotFoundException())
46
- // return
47
- // }
48
- // ShareClient.instance.shareDefault(context, serverCallbackArgs = serverCallbackArgs) {
49
- //
50
- // }
51
- // }
115
+ @ReactMethod
116
+ override fun shareCalendarTemplate(
117
+ value: ReadableMap,
118
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
119
+ serverCallbackArgs: ReadableMap?,
120
+ promise: Promise,
121
+ ) = onMain {
122
+ runShare(
123
+ defaultTemplate = RNCKakaoShareTemplates.createCalendarTemplate(value),
124
+ useWebBrowserIfKakaoTalkNotAvailable = useWebBrowserIfKakaoTalkNotAvailable,
125
+ serverCallbackArgs = serverCallbackArgs,
126
+ promise = promise,
127
+ )
128
+ }
52
129
 
53
130
  private fun runShare(
54
- templateId: Double? = null,
55
- defaultTemplate: DefaultTemplate? = null,
56
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
57
- templateArgs: ReadableMap?,
58
- serverCallbackArgs: ReadableMap?,
59
- promise: Promise,
131
+ templateId: Double? = null,
132
+ defaultTemplate: DefaultTemplate? = null,
133
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
134
+ templateArgs: ReadableMap? = null,
135
+ serverCallbackArgs: ReadableMap? = null,
136
+ promise: Promise,
60
137
  ) {
61
- val context = currentActivity
62
- if (context == null) {
63
- promise.rejectWith(ActivityNotFoundException())
64
- return
65
- }
138
+ val context = currentActivity
139
+ if (context == null) {
140
+ promise.rejectWith(ActivityNotFoundException())
141
+ return
142
+ }
66
143
 
67
- if (ShareClient.instance.isKakaoTalkSharingAvailable(context)) {
68
- val callback = { sharingResult: SharingResult?, error: Throwable? ->
69
- if (error != null) {
70
- promise.rejectWith(error)
71
- } else if (sharingResult != null) {
72
- context.startActivity(sharingResult.intent)
73
- promise.resolve(42)
74
- }
75
- }
144
+ val callback = { sharingResult: SharingResult?, error: Throwable? ->
145
+ if (error != null) {
146
+ promise.rejectWith(error)
147
+ } else if (sharingResult != null) {
148
+ context.startActivity(sharingResult.intent)
149
+ promise.resolve(42)
150
+ } else {
151
+ promise.resolve(42)
152
+ }
153
+ }
76
154
 
77
- if (templateId != null) {
78
- ShareClient.instance.shareCustom(
79
- context,
80
- templateId.toLong(),
81
- templateArgs = templateArgs?.toStringMap(),
82
- serverCallbackArgs = serverCallbackArgs?.toStringMap(),
83
- callback = callback,
84
- )
85
- } else if (defaultTemplate != null) {
86
- ShareClient.instance.shareDefault(
87
- context,
88
- defaultTemplate,
89
- serverCallbackArgs = serverCallbackArgs?.toStringMap(),
90
- callback = callback,
91
- )
92
- }
93
- } else if (useWebBrowserIfKakaoTalkNotAvailable) {
94
- val sharerUrl = if (templateId != null) WebSharerClient.instance.makeCustomUrl(
95
- templateId.toLong(),
96
- templateArgs = templateArgs?.toStringMap(),
97
- serverCallbackArgs = serverCallbackArgs?.toStringMap()
98
- ) else if (defaultTemplate != null) WebSharerClient.instance.makeDefaultUrl(
99
- defaultTemplate, serverCallbackArgs = serverCallbackArgs?.toStringMap()
100
- ) else run {
101
- promise.rejectWith("one of templateId or template shouldn't be null")
102
- return
103
- }
104
- try {
105
- KakaoCustomTabsClient.openWithDefault(context, sharerUrl)
106
- promise.resolve(42)
107
- return
108
- } catch (_: UnsupportedOperationException) {
109
- }
110
- try {
111
- KakaoCustomTabsClient.open(context, sharerUrl)
112
- promise.resolve(42)
113
- return
114
- } catch (_: ActivityNotFoundException) {
155
+ if (ShareClient.instance.isKakaoTalkSharingAvailable(context)) {
156
+ if (templateId != null) {
157
+ ShareClient.instance.shareCustom(
158
+ context,
159
+ templateId.toLong(),
160
+ templateArgs = templateArgs?.toStringMap(),
161
+ serverCallbackArgs = serverCallbackArgs?.toStringMap(),
162
+ callback = callback,
163
+ )
164
+ } else if (defaultTemplate != null) {
165
+ ShareClient.instance.shareDefault(
166
+ context,
167
+ defaultTemplate,
168
+ serverCallbackArgs = serverCallbackArgs?.toStringMap(),
169
+ callback = callback,
170
+ )
171
+ }
172
+ } else if (useWebBrowserIfKakaoTalkNotAvailable) {
173
+ val sharerUrl =
174
+ if (templateId != null) {
175
+ WebSharerClient.instance.makeCustomUrl(
176
+ templateId.toLong(),
177
+ templateArgs = templateArgs?.toStringMap(),
178
+ serverCallbackArgs = serverCallbackArgs?.toStringMap(),
179
+ )
180
+ } else if (defaultTemplate != null) {
181
+ WebSharerClient.instance.makeDefaultUrl(
182
+ defaultTemplate,
183
+ serverCallbackArgs = serverCallbackArgs?.toStringMap(),
184
+ )
185
+ } else {
186
+ run {
187
+ promise.rejectWith("one of templateId or template shouldn't be null")
188
+ return
115
189
  }
116
-
117
- promise.rejectWith("web url open failed $sharerUrl")
118
- } else {
119
- promise.rejectWith("kakaotalk not available")
190
+ }
191
+ try {
192
+ KakaoCustomTabsClient.openWithDefault(context, sharerUrl)
193
+ promise.resolve(42)
194
+ return
195
+ } catch (_: UnsupportedOperationException) {
120
196
  }
197
+ try {
198
+ KakaoCustomTabsClient.open(context, sharerUrl)
199
+ promise.resolve(42)
200
+ return
201
+ } catch (_: ActivityNotFoundException) {
202
+ }
203
+
204
+ promise.rejectWith("web url open failed $sharerUrl")
205
+ } else {
206
+ promise.rejectWith("kakaotalk not available")
207
+ }
121
208
  }
122
209
 
123
210
  companion object {
124
- const val NAME = "RNCKakaoShare"
211
+ const val NAME = "RNCKakaoShare"
125
212
  }
126
- }
213
+ }
@@ -1,14 +1,17 @@
1
1
  package net.mjstudio.rnkakao.share
2
2
 
3
3
  import com.facebook.react.TurboReactPackage
4
- import com.facebook.react.bridge.ReactApplicationContext
5
4
  import com.facebook.react.bridge.NativeModule
6
- import com.facebook.react.module.model.ReactModuleInfoProvider
5
+ import com.facebook.react.bridge.ReactApplicationContext
7
6
  import com.facebook.react.module.model.ReactModuleInfo
7
+ import com.facebook.react.module.model.ReactModuleInfoProvider
8
8
  import java.util.HashMap
9
9
 
10
10
  class RNCKakaoSharePackage : TurboReactPackage() {
11
- override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
11
+ override fun getModule(
12
+ name: String,
13
+ reactContext: ReactApplicationContext,
14
+ ): NativeModule? {
12
15
  return if (name == RNCKakaoShareModule.NAME) {
13
16
  RNCKakaoShareModule(reactContext)
14
17
  } else {
@@ -20,15 +23,16 @@ class RNCKakaoSharePackage : TurboReactPackage() {
20
23
  return ReactModuleInfoProvider {
21
24
  val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
22
25
  val isTurboModule: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
23
- moduleInfos[RNCKakaoShareModule.NAME] = ReactModuleInfo(
24
- RNCKakaoShareModule.NAME,
25
- RNCKakaoShareModule.NAME,
26
- false, // canOverrideExistingModule
27
- false, // needsEagerInit
28
- true, // hasConstants
29
- false, // isCxxModule
30
- isTurboModule // isTurboModule
31
- )
26
+ moduleInfos[RNCKakaoShareModule.NAME] =
27
+ ReactModuleInfo(
28
+ RNCKakaoShareModule.NAME,
29
+ RNCKakaoShareModule.NAME,
30
+ false, // canOverrideExistingModule
31
+ false, // needsEagerInit
32
+ true, // hasConstants
33
+ false, // isCxxModule
34
+ isTurboModule, // isTurboModule
35
+ )
32
36
  moduleInfos
33
37
  }
34
38
  }
@@ -1,11 +1,140 @@
1
1
  package net.mjstudio.rnkakao.share
2
2
 
3
- object RNCKakaoShareTemplates { // fun createFeed() {
4
- // return FeedTemplate(
5
- // content = Content(),
6
- // itemContent = ItemContent(),
7
- // social = Social(),
8
- //
9
- // )
10
- // }
11
- }
3
+ import com.facebook.react.bridge.ReadableMap
4
+ import com.kakao.sdk.template.model.Button
5
+ import com.kakao.sdk.template.model.CalendarTemplate
6
+ import com.kakao.sdk.template.model.Commerce
7
+ import com.kakao.sdk.template.model.CommerceTemplate
8
+ import com.kakao.sdk.template.model.Content
9
+ import com.kakao.sdk.template.model.FeedTemplate
10
+ import com.kakao.sdk.template.model.IdType.CALENDAR
11
+ import com.kakao.sdk.template.model.IdType.EVENT
12
+ import com.kakao.sdk.template.model.ItemContent
13
+ import com.kakao.sdk.template.model.ItemInfo
14
+ import com.kakao.sdk.template.model.Link
15
+ import com.kakao.sdk.template.model.ListTemplate
16
+ import com.kakao.sdk.template.model.LocationTemplate
17
+ import com.kakao.sdk.template.model.Social
18
+ import com.kakao.sdk.template.model.TextTemplate
19
+ import net.mjstudio.rnkakao.core.util.filterIsReadableMap
20
+ import net.mjstudio.rnkakao.core.util.getIntElseNull
21
+ import net.mjstudio.rnkakao.core.util.toStringMap
22
+
23
+ object RNCKakaoShareTemplates {
24
+ private fun ReadableMap.toLink() =
25
+ Link(
26
+ webUrl = getString("webUrl"),
27
+ mobileWebUrl = getString("mobileWebUrl"),
28
+ androidExecutionParams = getMap("androidExecutionParams")?.toStringMap(),
29
+ iosExecutionParams = getMap("iosExecutionParams")?.toStringMap(),
30
+ )
31
+
32
+ private fun ReadableMap.toContent() =
33
+ Content(
34
+ title = getString("title"),
35
+ imageUrl = getString("imageUrl"),
36
+ link = getMap("link")?.toLink() ?: Link(),
37
+ description = getString("description"),
38
+ imageWidth = getIntElseNull("imageWidth"),
39
+ imageHeight = getIntElseNull("imageHeight"),
40
+ )
41
+
42
+ private fun ReadableMap.toItemInfo() =
43
+ ItemInfo(
44
+ item = getString("item") ?: "",
45
+ itemOp = getString("itemOp") ?: "",
46
+ )
47
+
48
+ private fun ReadableMap.toItemContent() =
49
+ ItemContent(
50
+ profileText = getString("profileText"),
51
+ profileImageUrl = getString("profileImageUrl"),
52
+ titleImageText = getString("titleImageText"),
53
+ titleImageUrl = getString("titleImageUrl"),
54
+ titleImageCategory = getString("titleImageCategory"),
55
+ items = getArray("items")?.filterIsReadableMap()?.map { it.toItemInfo() },
56
+ sum = getString("sum"),
57
+ sumOp = getString("sumOp"),
58
+ )
59
+
60
+ private fun ReadableMap.toSocial() =
61
+ Social(
62
+ likeCount = getIntElseNull("likeCount"),
63
+ commentCount = getIntElseNull("commentCount"),
64
+ sharedCount = getIntElseNull("sharedCount"),
65
+ viewCount = getIntElseNull("viewCount"),
66
+ subscriberCount = getIntElseNull("subscriberCount"),
67
+ )
68
+
69
+ private fun ReadableMap.toButton() =
70
+ Button(
71
+ title = getString("title") ?: "",
72
+ link = getMap("link")?.toLink() ?: Link(),
73
+ )
74
+
75
+ private fun ReadableMap.toCommerce() =
76
+ Commerce(
77
+ regularPrice = getIntElseNull("regularPrice") ?: 0,
78
+ discountPrice = getIntElseNull("discountPrice"),
79
+ fixedDiscountPrice = getIntElseNull("fixedDiscountPrice"),
80
+ discountRate = getIntElseNull("discountRate"),
81
+ productName = getString("productName"),
82
+ currencyUnit = getString("currencyUnit"),
83
+ currencyUnitPosition = getIntElseNull("currencyUnitPosition"),
84
+ )
85
+
86
+ fun createFeedTemplate(map: ReadableMap) =
87
+ FeedTemplate(
88
+ content = map.getMap("content")!!.toContent(),
89
+ itemContent = map.getMap("itemContent")?.toItemContent(),
90
+ social = map.getMap("social")?.toSocial(),
91
+ buttons = map.getArray("buttons")?.filterIsReadableMap()?.map { it.toButton() },
92
+ buttonTitle = map.getString("buttonTitle"),
93
+ )
94
+
95
+ fun createListTemplate(map: ReadableMap): ListTemplate {
96
+ return ListTemplate(
97
+ headerTitle = map.getString("headerTitle") ?: "",
98
+ headerLink = map.getMap("headerLink")?.toLink() ?: Link(),
99
+ contents =
100
+ map.getArray("contents")?.filterIsReadableMap()?.map { it.toContent() }
101
+ ?: listOf(),
102
+ buttons = map.getArray("buttons")?.filterIsReadableMap()?.map { it.toButton() },
103
+ buttonTitle = map.getString("buttonTitle"),
104
+ )
105
+ }
106
+
107
+ fun createLocationTemplate(map: ReadableMap) =
108
+ LocationTemplate(
109
+ address = map.getString("address") ?: "",
110
+ content = map.getMap("content")!!.toContent(),
111
+ addressTitle = map.getString("addressTitle"),
112
+ social = map.getMap("social")?.toSocial(),
113
+ buttons = map.getArray("buttons")?.filterIsReadableMap()?.map { it.toButton() },
114
+ buttonTitle = map.getString("buttonTitle"),
115
+ )
116
+
117
+ fun createCommerceTemplate(map: ReadableMap) =
118
+ CommerceTemplate(
119
+ content = map.getMap("content")!!.toContent(),
120
+ commerce = map.getMap("commerce")!!.toCommerce(),
121
+ buttons = map.getArray("buttons")?.filterIsReadableMap()?.map { it.toButton() },
122
+ buttonTitle = map.getString("buttonTitle"),
123
+ )
124
+
125
+ fun createTextTemplate(map: ReadableMap) =
126
+ TextTemplate(
127
+ text = map.getString("text") ?: "",
128
+ link = map.getMap("link")?.toLink() ?: Link(),
129
+ buttons = map.getArray("buttons")?.filterIsReadableMap()?.map { it.toButton() },
130
+ buttonTitle = map.getString("buttonTitle"),
131
+ )
132
+
133
+ fun createCalendarTemplate(map: ReadableMap) =
134
+ CalendarTemplate(
135
+ id = map.getString("id")!!,
136
+ idType = if (map.getString("id") == "event") EVENT else CALENDAR,
137
+ content = map.getMap("content")!!.toContent(),
138
+ buttons = map.getArray("buttons")?.filterIsReadableMap()?.map { it.toButton() },
139
+ )
140
+ }
@@ -6,12 +6,54 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule
6
6
  import com.facebook.react.bridge.ReadableMap
7
7
 
8
8
  abstract class KakaoShareSpec internal constructor(context: ReactApplicationContext) :
9
- ReactContextBaseJavaModule(context) {
9
+ ReactContextBaseJavaModule(context) {
10
10
  abstract fun shareCustom(
11
- templateId: Double,
12
- useWebBrowserIfKakaoTalkNotAvailable: Boolean,
13
- templateArgs: ReadableMap?,
14
- serverCallbackArgs: ReadableMap?,
15
- promise: Promise,
11
+ templateId: Double,
12
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
13
+ templateArgs: ReadableMap?,
14
+ serverCallbackArgs: ReadableMap?,
15
+ promise: Promise,
16
16
  )
17
- }
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?,
57
+ promise: Promise,
58
+ )
59
+ }
@@ -1,6 +1,21 @@
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
+
4
19
  @implementation RNCKakaoShare
5
20
 
6
21
  - (RNCKakaoShareManager*)manager {
@@ -24,6 +39,13 @@ RCT_EXPORT_METHOD(shareCustom
24
39
  reject:reject];
25
40
  }
26
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
+
27
49
  // Don't compile this code when we build for the old architecture.
28
50
  #ifdef RCT_NEW_ARCH_ENABLED
29
51
  - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule: