@react-native-kakao/user 0.5.1 → 0.7.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.
@@ -2,8 +2,23 @@ package net.mjstudio.rnkakao.user
2
2
 
3
3
  import com.facebook.react.bridge.Promise
4
4
  import com.facebook.react.bridge.ReactApplicationContext
5
+ import com.facebook.react.bridge.ReadableArray
6
+ import com.kakao.sdk.auth.AuthApiClient
7
+ import com.kakao.sdk.auth.model.OAuthToken
8
+ import com.kakao.sdk.auth.model.Prompt
9
+ import com.kakao.sdk.common.model.KakaoSdkError
5
10
  import com.kakao.sdk.user.UserApiClient
6
- import net.mjstudio.rnkakao.share.KakaoUserSpec
11
+ import net.mjstudio.rnkakao.core.util.RNCKakaoUtil
12
+ import net.mjstudio.rnkakao.core.util.argArr
13
+ import net.mjstudio.rnkakao.core.util.argMap
14
+ import net.mjstudio.rnkakao.core.util.filterIsInstance
15
+ import net.mjstudio.rnkakao.core.util.pushMapList
16
+ import net.mjstudio.rnkakao.core.util.pushStringList
17
+ import net.mjstudio.rnkakao.core.util.putBooleanIfNotNull
18
+ import net.mjstudio.rnkakao.core.util.putDoubleIfNotNull
19
+ import net.mjstudio.rnkakao.core.util.putIntIfNotNull
20
+ import net.mjstudio.rnkakao.core.util.rejectWith
21
+ import java.util.*
7
22
 
8
23
  class RNCKakaoUserModule internal constructor(context: ReactApplicationContext) :
9
24
  KakaoUserSpec(context) {
@@ -12,9 +27,253 @@ class RNCKakaoUserModule internal constructor(context: ReactApplicationContext)
12
27
  return NAME
13
28
  }
14
29
 
15
- override fun loginWithKakaoTalk(promise: Promise) {
16
- UserApiClient.instance.loginWithKakaoTalk(reactApplicationContext) { token, error ->
17
-
30
+ override fun login(
31
+ serviceTerms: ReadableArray?,
32
+ prompts: ReadableArray?,
33
+ useKakaoAccountLogin: Boolean,
34
+ promise: Promise
35
+ ) {
36
+ val callback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
37
+ if (error != null) {
38
+ promise.rejectWith(error)
39
+ } else if (token == null) {
40
+ promise.rejectWith("token not found")
41
+ } else {
42
+ promise.resolve(argMap().apply {
43
+ putString("accessToken", token.accessToken)
44
+ putString("refreshToken", token.refreshToken)
45
+ putString("tokenType", null)
46
+ putString("idToken", token.idToken)
47
+ putDouble(
48
+ "accessTokenExpiresAt", token.accessTokenExpiresAt.time.toDouble()
49
+ )
50
+ putDouble(
51
+ "refreshTokenExpiresAt", token.refreshTokenExpiresAt.time.toDouble()
52
+ )
53
+ putDouble(
54
+ "accessTokenExpiresIn",
55
+ RNCKakaoUtil.diffSec(token.accessTokenExpiresAt, Date()).toDouble()
56
+ )
57
+ putDouble(
58
+ "refreshTokenExpiresIn",
59
+ RNCKakaoUtil.diffSec(token.refreshTokenExpiresAt, Date()).toDouble()
60
+ )
61
+ putArray("scopes", argArr().apply {
62
+ pushStringList(token.scopes ?: listOf())
63
+ })
64
+ })
65
+ }
66
+ }
67
+
68
+ if (UserApiClient.instance.isKakaoTalkLoginAvailable(reactApplicationContext) && !useKakaoAccountLogin) {
69
+ UserApiClient.instance.loginWithKakaoTalk(
70
+ reactApplicationContext,
71
+ serviceTerms = serviceTerms?.filterIsInstance<String>(),
72
+ callback = callback
73
+ )
74
+ } else {
75
+ UserApiClient.instance.loginWithKakaoAccount(
76
+ reactApplicationContext,
77
+ prompts = prompts?.filterIsInstance<String>()?.map {
78
+ when (it) {
79
+ "Login" -> Prompt.LOGIN
80
+ "Create" -> Prompt.CREATE
81
+ "Cert" -> Prompt.CERT
82
+ "UnifyDaum" -> Prompt.UNIFY_DAUM
83
+ "SelectAccount" -> Prompt.SELECT_ACCOUNT
84
+ else -> null
85
+ }
86
+ }?.filterNotNull(),
87
+ serviceTerms = serviceTerms?.filterIsInstance<String>(),
88
+ callback = callback
89
+ )
90
+ }
91
+ }
92
+
93
+ override fun isKakaoTalkLoginAvailable(promise: Promise) {
94
+ promise.resolve(UserApiClient.instance.isKakaoTalkLoginAvailable(reactApplicationContext))
95
+ }
96
+
97
+ override fun logout(promise: Promise) {
98
+ UserApiClient.instance.logout {
99
+ if (it != null) {
100
+ promise.rejectWith(it)
101
+ } else {
102
+ promise.resolve(42)
103
+ }
104
+ }
105
+ }
106
+
107
+ override fun unlink(promise: Promise) {
108
+ UserApiClient.instance.unlink {
109
+ if (it != null) {
110
+ promise.rejectWith(it)
111
+ } else {
112
+ promise.resolve(42)
113
+ }
114
+ }
115
+ }
116
+
117
+ override fun isLogined(promise: Promise) {
118
+ if (AuthApiClient.instance.hasToken()) {
119
+ UserApiClient.instance.accessTokenInfo { _, error ->
120
+ if (error != null) {
121
+ if (error is KakaoSdkError && error.isInvalidTokenError()) {
122
+ promise.resolve(false)
123
+ } else {
124
+ promise.rejectWith(error)
125
+ }
126
+ } else {
127
+ promise.resolve(true)
128
+ }
129
+ }
130
+ } else {
131
+ promise.resolve(false)
132
+ }
133
+ }
134
+
135
+ override fun scopes(scopes: ReadableArray?, promise: Promise) {
136
+ UserApiClient.instance.scopes { scopeInfo, error ->
137
+ if (error != null) {
138
+ promise.rejectWith(error)
139
+ } else if (scopeInfo?.scopes == null) {
140
+ promise.rejectWith("scopes not found")
141
+ } else {
142
+ promise.resolve(argArr().also { arr ->
143
+ scopeInfo.scopes!!.forEach { scope ->
144
+ arr.pushMap(argMap().also { map ->
145
+ map.putString("id", scope.id)
146
+ map.putString("displayName", scope.displayName)
147
+ map.putString("type", scope.type.name)
148
+ map.putBoolean("using", scope.using)
149
+ map.putBooleanIfNotNull("delegated", scope.delegated)
150
+ map.putBoolean("agreed", scope.agreed)
151
+ map.putBooleanIfNotNull("revocable", scope.revocable)
152
+ })
153
+ }
154
+ })
155
+ }
156
+ }
157
+ }
158
+
159
+ override fun revokeScopes(scopes: ReadableArray, promise: Promise) {
160
+ UserApiClient.instance.revokeScopes(
161
+ scopes = scopes.filterIsInstance<String>() ?: listOf()
162
+ ) { scopeInfo, error ->
163
+ if (error != null) {
164
+ promise.rejectWith(error)
165
+ } else if (scopeInfo == null) {
166
+ promise.rejectWith("scopeInfo not found")
167
+ } else {
168
+ promise.resolve(42)
169
+ }
170
+ }
171
+ }
172
+
173
+ override fun serviceTerms(promise: Promise) {
174
+ UserApiClient.instance.serviceTerms { serviceTerms, error ->
175
+ if (error != null) {
176
+ promise.rejectWith(error)
177
+ } else if (serviceTerms?.serviceTerms == null) {
178
+ promise.rejectWith("serviceTerms not found")
179
+ } else {
180
+ promise.resolve(argMap().apply {
181
+ putArray("allowedServiceTerms", argArr().apply {
182
+ serviceTerms.serviceTerms?.forEach { term ->
183
+ pushMap(argMap().apply {
184
+ putString("tag", term.tag)
185
+ putDoubleIfNotNull("agreedAt", term.agreedAt?.time?.toDouble())
186
+ })
187
+ }
188
+ })
189
+ })
190
+ }
191
+ }
192
+ }
193
+
194
+ override fun shippingAddresses(promise: Promise) {
195
+ UserApiClient.instance.shippingAddresses { addrs, error ->
196
+ if (error != null) {
197
+ promise.rejectWith(error)
198
+ } else if (addrs == null) {
199
+ promise.rejectWith("shipping addresses not found")
200
+ } else {
201
+ promise.resolve(argMap().apply {
202
+ putIntIfNotNull("userId", addrs.userId?.toInt())
203
+ putBooleanIfNotNull("needsAgreement", addrs.needsAgreement)
204
+ putArray("shippingAddresses", argArr().apply {
205
+ pushMapList(addrs.shippingAddresses?.map { addr ->
206
+ argMap().apply {
207
+ putInt("id", addr.id.toInt())
208
+ putString("name", addr.name)
209
+ putBoolean("isDefault", addr.isDefault)
210
+ putDoubleIfNotNull("updatedAt", addr.updatedAt?.time?.toDouble())
211
+ putString("type", addr.type?.name)
212
+ putString("baseAddress", addr.baseAddress)
213
+ putString("detailAddress", addr.detailAddress)
214
+ putString("receiverName", addr.receiverName)
215
+ putString("receiverPhoneNumber1", addr.receiverPhoneNumber1)
216
+ putString("receiverPhoneNumber2", addr.receiverPhoneNumber2)
217
+ putString("zoneNumber", addr.zoneNumber)
218
+ putString("zipCode", addr.zipCode)
219
+ }
220
+ } ?: listOf())
221
+ })
222
+ })
223
+ }
224
+ }
225
+ }
226
+
227
+ override fun me(promise: Promise) {
228
+ UserApiClient.instance.me { user, error ->
229
+ if (error != null) {
230
+ promise.rejectWith(error)
231
+ } else if (user == null) {
232
+ promise.rejectWith("user not found")
233
+ } else {
234
+ promise.resolve(argMap().apply {
235
+ putIntIfNotNull("id", user.id?.toInt())
236
+ putString("name", user.kakaoAccount?.name)
237
+
238
+ putString("email", user.kakaoAccount?.email)
239
+ putString("nickname", user.kakaoAccount?.profile?.nickname)
240
+ putString("profileImageUrl", user.kakaoAccount?.profile?.profileImageUrl)
241
+ putString("thumbnailImageUrl", user.kakaoAccount?.profile?.thumbnailImageUrl)
242
+ putString("phoneNumber", user.kakaoAccount?.phoneNumber)
243
+ putString("ageRange", user.kakaoAccount?.ageRange?.name)
244
+ putString("birthday", user.kakaoAccount?.birthday)
245
+ putString("birthdayType", user.kakaoAccount?.birthdayType?.name)
246
+ putString("birthyear", user.kakaoAccount?.birthyear)
247
+ putString("gender", user.kakaoAccount?.gender?.name)
248
+ putBooleanIfNotNull("isEmailValid", user.kakaoAccount?.isEmailValid)
249
+ putBooleanIfNotNull("isEmailVerified", user.kakaoAccount?.isEmailVerified)
250
+ putBooleanIfNotNull("isKorean", user.kakaoAccount?.isKorean)
251
+ putBooleanIfNotNull(
252
+ "ageRangeNeedsAgreement", user.kakaoAccount?.ageRangeNeedsAgreement
253
+ )
254
+ putBooleanIfNotNull(
255
+ "birthdayNeedsAgreement", user.kakaoAccount?.birthdayNeedsAgreement
256
+ )
257
+ putBooleanIfNotNull(
258
+ "birthyearNeedsAgreement", user.kakaoAccount?.birthyearNeedsAgreement
259
+ )
260
+ putBooleanIfNotNull(
261
+ "emailNeedsAgreement", user.kakaoAccount?.emailNeedsAgreement
262
+ )
263
+ putBooleanIfNotNull(
264
+ "genderNeedsAgreement", user.kakaoAccount?.genderNeedsAgreement
265
+ )
266
+ putBooleanIfNotNull(
267
+ "isKoreanNeedsAgreement", user.kakaoAccount?.isKoreanNeedsAgreement
268
+ )
269
+ putBooleanIfNotNull(
270
+ "phoneNumberNeedsAgreement", user.kakaoAccount?.phoneNumberNeedsAgreement
271
+ )
272
+ putBooleanIfNotNull(
273
+ "profileNeedsAgreement", user.kakaoAccount?.profileNeedsAgreement
274
+ )
275
+ })
276
+ }
18
277
  }
19
278
  }
20
279
 
@@ -1,4 +1,4 @@
1
- package net.mjstudio.rnkakao.share
1
+ package net.mjstudio.rnkakao.user
2
2
 
3
3
  import com.facebook.react.bridge.ReactApplicationContext
4
4
  import net.mjstudio.rnkakao.user.NativeKakaoUserSpec
@@ -1,7 +1,34 @@
1
- package net.mjstudio.rnkakao.share
1
+ package net.mjstudio.rnkakao.user
2
2
 
3
+ import com.facebook.react.bridge.Promise
3
4
  import com.facebook.react.bridge.ReactApplicationContext
4
5
  import com.facebook.react.bridge.ReactContextBaseJavaModule
6
+ import com.facebook.react.bridge.ReadableArray
5
7
 
6
8
  abstract class KakaoUserSpec internal constructor(context: ReactApplicationContext) :
7
- ReactContextBaseJavaModule(context)
9
+ ReactContextBaseJavaModule(context) {
10
+ abstract fun login(
11
+ serviceTerms: ReadableArray?,
12
+ prompts: ReadableArray?,
13
+ useKakaoAccountLogin: Boolean,
14
+ promise: Promise
15
+ )
16
+
17
+ abstract fun isKakaoTalkLoginAvailable(promise: Promise)
18
+
19
+ abstract fun logout(promise: Promise)
20
+
21
+ abstract fun unlink(promise: Promise)
22
+
23
+ abstract fun isLogined(promise: Promise)
24
+
25
+ abstract fun scopes(scopes: ReadableArray?, promise: Promise)
26
+
27
+ abstract fun revokeScopes(scopes: ReadableArray, promise: Promise)
28
+
29
+ abstract fun serviceTerms(promise: Promise)
30
+
31
+ abstract fun shippingAddresses(promise: Promise)
32
+
33
+ abstract fun me(promise: Promise)
34
+ }
@@ -18,14 +18,14 @@ RCT_EXPORT_METHOD(isKakaoTalkLoginAvailable
18
18
  RCT_EXPORT_METHOD(login
19
19
  : (NSArray*)serviceTerms prompts
20
20
  : (NSArray*)prompts useKakaoAccountLoginIos
21
- : (BOOL)useKakaoAccountLoginIos resolve
21
+ : (BOOL)useKakaoAccountLogin resolve
22
22
  : (RCTPromiseResolveBlock)resolve reject
23
23
  : (RCTPromiseRejectBlock)reject) {
24
24
  [[self manager] login:serviceTerms
25
- prompts:prompts
26
- useKakaoAccountLoginIos:useKakaoAccountLoginIos
27
- resolve:resolve
28
- reject:reject];
25
+ prompts:prompts
26
+ useKakaoAccountLogin:useKakaoAccountLogin
27
+ resolve:resolve
28
+ reject:reject];
29
29
  }
30
30
 
31
31
  RCT_EXPORT_METHOD(logout : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject) {
@@ -42,6 +42,36 @@ RCT_EXPORT_METHOD(isLogined
42
42
  [[self manager] isLogined:resolve reject:reject];
43
43
  }
44
44
 
45
+ RCT_EXPORT_METHOD(scopes
46
+ : (NSArray*)scopes resolve
47
+ : (RCTPromiseResolveBlock)resolve reject
48
+ : (RCTPromiseRejectBlock)reject) {
49
+ [[self manager] scopes:scopes resolve:resolve reject:reject];
50
+ }
51
+
52
+ RCT_EXPORT_METHOD(revokeScopes
53
+ : (NSArray*)scopes resolve
54
+ : (RCTPromiseResolveBlock)resolve reject
55
+ : (RCTPromiseRejectBlock)reject) {
56
+ [[self manager] revokeScopes:scopes resolve:resolve reject:reject];
57
+ }
58
+
59
+ RCT_EXPORT_METHOD(serviceTerms
60
+ : (RCTPromiseResolveBlock)resolve reject
61
+ : (RCTPromiseRejectBlock)reject) {
62
+ [[self manager] serviceTerms:resolve reject:reject];
63
+ }
64
+
65
+ RCT_EXPORT_METHOD(shippingAddresses
66
+ : (RCTPromiseResolveBlock)resolve reject
67
+ : (RCTPromiseRejectBlock)reject) {
68
+ [[self manager] shippingAddresses:resolve reject:reject];
69
+ }
70
+
71
+ RCT_EXPORT_METHOD(me : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject) {
72
+ [[self manager] me:resolve reject:reject];
73
+ }
74
+
45
75
  // Don't compile this code when we build for the old architecture.
46
76
  #ifdef RCT_NEW_ARCH_ENABLED
47
77
  - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
@@ -28,7 +28,7 @@ import RNCKakaoCore
28
28
  @objc public func login(
29
29
  _ serviceTerms: [String],
30
30
  prompts: [String],
31
- useKakaoAccountLoginIos: Bool,
31
+ useKakaoAccountLogin: Bool,
32
32
  resolve: @escaping RCTPromiseResolveBlock,
33
33
  reject: @escaping RCTPromiseRejectBlock
34
34
  ) {
@@ -36,7 +36,7 @@ import RNCKakaoCore
36
36
  RNCKakaoUtil.reject(reject, "KakaoSdk is not initialized")
37
37
  return
38
38
  }
39
- if UserApi.isKakaoTalkLoginAvailable(), !useKakaoAccountLoginIos {
39
+ if UserApi.isKakaoTalkLoginAvailable(), !useKakaoAccountLogin {
40
40
  UserApi.shared
41
41
  .loginWithKakaoTalk(serviceTerms: emptyArrayToNil(serviceTerms)) { token, error in
42
42
  if let error {
@@ -166,6 +166,152 @@ import RNCKakaoCore
166
166
  }
167
167
  }
168
168
 
169
+ @objc public func scopes(
170
+ _ scopes: [String]? = nil,
171
+ resolve: @escaping RCTPromiseResolveBlock,
172
+ reject: @escaping RCTPromiseRejectBlock
173
+ ) {
174
+ UserApi.shared.scopes(scopes: emptyArrayToNil(scopes)) { scopeInfo, error in
175
+ if let error {
176
+ RNCKakaoUtil.reject(reject, error)
177
+ } else if let scopes = scopeInfo?.scopes {
178
+ resolve(scopes.map { s in
179
+ [
180
+ "id": s.id,
181
+ "displayName": s.displayName,
182
+ "type": s.type.rawValue,
183
+ "using": s.using,
184
+ "delegated": s.delegated as Any,
185
+ "agreed": s.agreed,
186
+ "revocable": s.revocable as Any
187
+ ]
188
+ })
189
+ } else {
190
+ RNCKakaoUtil.reject(reject, "scopes not found")
191
+ }
192
+ }
193
+ }
194
+
195
+ @objc public func revokeScopes(
196
+ _ scopes: [String],
197
+ resolve: @escaping RCTPromiseResolveBlock,
198
+ reject: @escaping RCTPromiseRejectBlock
199
+ ) {
200
+ UserApi.shared.revokeScopes(scopes: scopes) { info, error in
201
+ if let error {
202
+ RNCKakaoUtil.reject(reject, error)
203
+ } else if info != nil {
204
+ resolve(42)
205
+ } else {
206
+ RNCKakaoUtil.reject(reject, "scopeInfo not found")
207
+ }
208
+ }
209
+ }
210
+
211
+ @objc public func serviceTerms(
212
+ _ resolve: @escaping RCTPromiseResolveBlock,
213
+ reject: @escaping RCTPromiseRejectBlock
214
+ ) {
215
+ UserApi.shared.serviceTerms { serviceTerms, error in
216
+ if let error {
217
+ RNCKakaoUtil.reject(reject, error)
218
+ } else if let serviceTerms {
219
+ resolve(
220
+ [
221
+ "allowedServiceTerms": serviceTerms.allowedServiceTerms?.map {
222
+ [
223
+ "tag": $0.tag,
224
+ "agreedAt": $0.agreedAt.timeIntervalSince1970
225
+ ]
226
+ },
227
+ "appServiceTerms": serviceTerms.appServiceTerms?.map {
228
+ [
229
+ "tag": $0.tag,
230
+ "createdAt": $0.createdAt.timeIntervalSince1970,
231
+ "updatedAt": $0.updatedAt.timeIntervalSince1970
232
+ ]
233
+ }
234
+ ]
235
+ )
236
+ } else {
237
+ RNCKakaoUtil.reject(reject, "serviceTerms not found")
238
+ }
239
+ }
240
+ }
241
+
242
+ @objc public func shippingAddresses(
243
+ _ resolve: @escaping RCTPromiseResolveBlock,
244
+ reject: @escaping RCTPromiseRejectBlock
245
+ ) {
246
+ UserApi.shared.shippingAddresses { s, error in
247
+ if let error {
248
+ RNCKakaoUtil.reject(reject, error)
249
+ } else if let s {
250
+ resolve([
251
+ "userId": s.userId as Any,
252
+ "needsAgreement": s.needsAgreement as Any,
253
+ "shippingAddresses": s.shippingAddresses?.map {
254
+ [
255
+ "id": $0.id,
256
+ "name": $0.name as Any,
257
+ "isDefault": $0.isDefault,
258
+ "updatedAt": $0.updatedAt?.timeIntervalSince1970 as Any,
259
+ "type": $0.type?.rawValue as Any,
260
+ "baseAddress": $0.baseAddress as Any,
261
+ "detailAddress": $0.detailAddress as Any,
262
+ "receiverName": $0.receiverName as Any,
263
+ "receiverPhoneNumber1": $0.receiverPhoneNumber1 as Any,
264
+ "receiverPhoneNumber2": $0.receiverPhoneNumber2 as Any,
265
+ "zoneNumber": $0.zoneNumber as Any,
266
+ "zipCode": $0.zipCode as Any
267
+ ]
268
+ } ?? []
269
+ ])
270
+ } else {
271
+ RNCKakaoUtil.reject(reject, "shipping addresses not found")
272
+ }
273
+ }
274
+ }
275
+
276
+ @objc public func me(
277
+ _ resolve: @escaping RCTPromiseResolveBlock,
278
+ reject: @escaping RCTPromiseRejectBlock
279
+ ) {
280
+ UserApi.shared.me { user, error in
281
+ if let error {
282
+ RNCKakaoUtil.reject(reject, error)
283
+ } else if let user {
284
+ resolve([
285
+ "id": user.id as Any,
286
+ "name": user.kakaoAccount?.name as Any,
287
+ "email": user.kakaoAccount?.email as Any,
288
+ "nickname": user.kakaoAccount?.profile?.nickname as Any,
289
+ "profileImageUrl": user.kakaoAccount?.profile?.profileImageUrl?.absoluteString as Any,
290
+ "thumbnailImageUrl": user.kakaoAccount?.profile?.thumbnailImageUrl?.absoluteString as Any,
291
+ "phoneNumber": user.kakaoAccount?.phoneNumber as Any,
292
+ "ageRange": user.kakaoAccount?.ageRange?.rawValue as Any,
293
+ "birthday": user.kakaoAccount?.birthday as Any,
294
+ "birthdayType": user.kakaoAccount?.birthdayType as Any,
295
+ "birthyear": user.kakaoAccount?.birthyear as Any,
296
+ "gender": user.kakaoAccount?.gender?.rawValue as Any,
297
+ "isEmailValid": user.kakaoAccount?.isEmailValid as Any,
298
+ "isEmailVerified": user.kakaoAccount?.isEmailVerified as Any,
299
+ "isKorean": user.kakaoAccount?.isKorean as Any,
300
+ "ageRangeNeedsAgreement": user.kakaoAccount?.ageRangeNeedsAgreement as Any,
301
+ "birthdayNeedsAgreement": user.kakaoAccount?.birthdayNeedsAgreement as Any,
302
+ "birthyearNeedsAgreement": user.kakaoAccount?.birthyearNeedsAgreement as Any,
303
+ "emailNeedsAgreement": user.kakaoAccount?.emailNeedsAgreement as Any,
304
+ "genderNeedsAgreement": user.kakaoAccount?.genderNeedsAgreement as Any,
305
+ "isKoreanNeedsAgreement": user.kakaoAccount?.isKoreanNeedsAgreement as Any,
306
+ "phoneNumberNeedsAgreement": user.kakaoAccount?.phoneNumberNeedsAgreement as Any,
307
+ "profileNeedsAgreement": user.kakaoAccount?.profileNeedsAgreement as Any
308
+ ])
309
+ } else {
310
+ RNCKakaoUtil.reject(reject, "user not found")
311
+ }
312
+ }
313
+ }
314
+
169
315
  private func emptyArrayToNil<T>(_ arr: [T]?) -> [T]? {
170
316
  if arr == nil || arr?.isEmpty == true { return nil }
171
317
  return arr
@@ -7,6 +7,11 @@ exports.isKakaoTalkLoginAvailable = isKakaoTalkLoginAvailable;
7
7
  exports.isLogined = isLogined;
8
8
  exports.login = login;
9
9
  exports.logout = logout;
10
+ exports.me = me;
11
+ exports.revokeScopes = revokeScopes;
12
+ exports.scopes = scopes;
13
+ exports.serviceTerms = serviceTerms;
14
+ exports.shippingAddresses = shippingAddresses;
10
15
  exports.unlink = unlink;
11
16
  var _reactNative = require("react-native");
12
17
  const LINKING_ERROR = "The package '@react-native-kakao/user' doesn't seem to be linked. Make sure: \n\n" + _reactNative.Platform.select({
@@ -16,7 +21,8 @@ const LINKING_ERROR = "The package '@react-native-kakao/user' doesn't seem to be
16
21
 
17
22
  // @ts-expect-error
18
23
  const isTurboModuleEnabled = global.__turboModuleProxy != null;
19
- const Module = isTurboModuleEnabled ? require('./spec/NativeKakaoUser').default : _reactNative.NativeModules.KakaoShare;
24
+ const Module = isTurboModuleEnabled ? require('./spec/NativeKakaoUser').default : _reactNative.NativeModules.RNCKakaoUser;
25
+ console.log(_reactNative.NativeModules.RNCKakaoUser);
20
26
  const Native = Module ? Module : new Proxy({}, {
21
27
  get() {
22
28
  throw new Error(LINKING_ERROR);
@@ -25,9 +31,9 @@ const Native = Module ? Module : new Proxy({}, {
25
31
  function login({
26
32
  serviceTerms,
27
33
  prompts,
28
- useKakaoAccountLoginIos
34
+ useKakaoAccountLogin
29
35
  } = {}) {
30
- return Native.login(serviceTerms ?? [], prompts ?? [], useKakaoAccountLoginIos ?? false);
36
+ return Native.login(serviceTerms ?? [], prompts ?? [], useKakaoAccountLogin ?? false);
31
37
  }
32
38
  function logout() {
33
39
  return Native.logout();
@@ -41,4 +47,19 @@ function isLogined() {
41
47
  function isKakaoTalkLoginAvailable() {
42
48
  return Native.isKakaoTalkLoginAvailable();
43
49
  }
50
+ function scopes(scopes) {
51
+ return Native.scopes(scopes);
52
+ }
53
+ function revokeScopes(scopes) {
54
+ return Native.revokeScopes(scopes);
55
+ }
56
+ function serviceTerms() {
57
+ return Native.serviceTerms();
58
+ }
59
+ function shippingAddresses() {
60
+ return Native.shippingAddresses();
61
+ }
62
+ function me() {
63
+ return Native.me();
64
+ }
44
65
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","Module","NativeModules","KakaoShare","Native","Proxy","get","Error","login","serviceTerms","prompts","useKakaoAccountLoginIos","logout","unlink","isLogined","isKakaoTalkLoginAvailable"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAIA,MAAMC,aAAa,GACjB,mFAAmF,GACnFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMC,oBAAoB,GAAGC,MAAM,CAACC,kBAAkB,IAAI,IAAI;AAE9D,MAAMC,MAAM,GAAGH,oBAAoB,GAC/BN,OAAO,CAAC,wBAAwB,CAAC,CAACK,OAAO,GACzCK,0BAAa,CAACC,UAAU;AAE5B,MAAMC,MAAY,GAAGH,MAAM,GACvBA,MAAM,GACN,IAAII,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACd,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAaE,SAASe,KAAKA,CAAC;EACpBC,YAAY;EACZC,OAAO;EACPC;AAKF,CAAC,GAAG,CAAC,CAAC,EAA4B;EAChC,OAAOP,MAAM,CAACI,KAAK,CAACC,YAAY,IAAI,EAAE,EAAEC,OAAO,IAAI,EAAE,EAAEC,uBAAuB,IAAI,KAAK,CAAC;AAC1F;AAEO,SAASC,MAAMA,CAAA,EAAG;EACvB,OAAOR,MAAM,CAACQ,MAAM,CAAC,CAAC;AACxB;AAEO,SAASC,MAAMA,CAAA,EAAG;EACvB,OAAOT,MAAM,CAACS,MAAM,CAAC,CAAC;AACxB;AAEO,SAASC,SAASA,CAAA,EAAG;EAC1B,OAAOV,MAAM,CAACU,SAAS,CAAC,CAAC;AAC3B;AAEO,SAASC,yBAAyBA,CAAA,EAAqB;EAC5D,OAAOX,MAAM,CAACW,yBAAyB,CAAC,CAAC;AAC3C","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","Module","NativeModules","RNCKakaoUser","console","log","Native","Proxy","get","Error","login","serviceTerms","prompts","useKakaoAccountLogin","logout","unlink","isLogined","isKakaoTalkLoginAvailable","scopes","revokeScopes","shippingAddresses","me"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAIA,MAAMC,aAAa,GACjB,mFAAmF,GACnFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMC,oBAAoB,GAAGC,MAAM,CAACC,kBAAkB,IAAI,IAAI;AAE9D,MAAMC,MAAM,GAAGH,oBAAoB,GAC/BN,OAAO,CAAC,wBAAwB,CAAC,CAACK,OAAO,GACzCK,0BAAa,CAACC,YAAY;AAC9BC,OAAO,CAACC,GAAG,CAACH,0BAAa,CAACC,YAAY,CAAC;AAEvC,MAAMG,MAAY,GAAGL,MAAM,GACvBA,MAAM,GACN,IAAIM,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAAChB,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AA2EE,SAASiB,KAAKA,CAAC;EACpBC,YAAY;EACZC,OAAO;EACPC;AAKF,CAAC,GAAG,CAAC,CAAC,EAA4B;EAChC,OAAOP,MAAM,CAACI,KAAK,CAACC,YAAY,IAAI,EAAE,EAAEC,OAAO,IAAI,EAAE,EAAEC,oBAAoB,IAAI,KAAK,CAAC;AACvF;AAEO,SAASC,MAAMA,CAAA,EAAG;EACvB,OAAOR,MAAM,CAACQ,MAAM,CAAC,CAAC;AACxB;AAEO,SAASC,MAAMA,CAAA,EAAG;EACvB,OAAOT,MAAM,CAACS,MAAM,CAAC,CAAC;AACxB;AAEO,SAASC,SAASA,CAAA,EAAG;EAC1B,OAAOV,MAAM,CAACU,SAAS,CAAC,CAAC;AAC3B;AAEO,SAASC,yBAAyBA,CAAA,EAAqB;EAC5D,OAAOX,MAAM,CAACW,yBAAyB,CAAC,CAAC;AAC3C;AAEO,SAASC,MAAMA,CAACA,MAAiB,EAA6B;EACnE,OAAOZ,MAAM,CAACY,MAAM,CAACA,MAAM,CAAC;AAC9B;AAEO,SAASC,YAAYA,CAACD,MAAgB,EAAiB;EAC5D,OAAOZ,MAAM,CAACa,YAAY,CAACD,MAAM,CAAC;AACpC;AAEO,SAASP,YAAYA,CAAA,EAGzB;EACD,OAAOL,MAAM,CAACK,YAAY,CAAC,CAAC;AAC9B;AAEO,SAASS,iBAAiBA,CAAA,EAAwC;EACvE,OAAOd,MAAM,CAACc,iBAAiB,CAAC,CAAC;AACnC;AAEO,SAASC,EAAEA,CAAA,EAAuB;EACvC,OAAOf,MAAM,CAACe,EAAE,CAAC,CAAC;AACpB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["spec/NativeKakaoUser.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAgBpCC,gCAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["spec/NativeKakaoUser.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA+BpCC,gCAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
@@ -6,7 +6,8 @@ const LINKING_ERROR = "The package '@react-native-kakao/user' doesn't seem to be
6
6
 
7
7
  // @ts-expect-error
8
8
  const isTurboModuleEnabled = global.__turboModuleProxy != null;
9
- const Module = isTurboModuleEnabled ? require('./spec/NativeKakaoUser').default : NativeModules.KakaoShare;
9
+ const Module = isTurboModuleEnabled ? require('./spec/NativeKakaoUser').default : NativeModules.RNCKakaoUser;
10
+ console.log(NativeModules.RNCKakaoUser);
10
11
  const Native = Module ? Module : new Proxy({}, {
11
12
  get() {
12
13
  throw new Error(LINKING_ERROR);
@@ -15,9 +16,9 @@ const Native = Module ? Module : new Proxy({}, {
15
16
  export function login({
16
17
  serviceTerms,
17
18
  prompts,
18
- useKakaoAccountLoginIos
19
+ useKakaoAccountLogin
19
20
  } = {}) {
20
- return Native.login(serviceTerms ?? [], prompts ?? [], useKakaoAccountLoginIos ?? false);
21
+ return Native.login(serviceTerms ?? [], prompts ?? [], useKakaoAccountLogin ?? false);
21
22
  }
22
23
  export function logout() {
23
24
  return Native.logout();
@@ -31,4 +32,19 @@ export function isLogined() {
31
32
  export function isKakaoTalkLoginAvailable() {
32
33
  return Native.isKakaoTalkLoginAvailable();
33
34
  }
35
+ export function scopes(scopes) {
36
+ return Native.scopes(scopes);
37
+ }
38
+ export function revokeScopes(scopes) {
39
+ return Native.revokeScopes(scopes);
40
+ }
41
+ export function serviceTerms() {
42
+ return Native.serviceTerms();
43
+ }
44
+ export function shippingAddresses() {
45
+ return Native.shippingAddresses();
46
+ }
47
+ export function me() {
48
+ return Native.me();
49
+ }
34
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","Module","require","KakaoShare","Native","Proxy","get","Error","login","serviceTerms","prompts","useKakaoAccountLoginIos","logout","unlink","isLogined","isKakaoTalkLoginAvailable"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAItD,MAAMC,aAAa,GACjB,mFAAmF,GACnFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMC,oBAAoB,GAAGC,MAAM,CAACC,kBAAkB,IAAI,IAAI;AAE9D,MAAMC,MAAM,GAAGH,oBAAoB,GAC/BI,OAAO,CAAC,wBAAwB,CAAC,CAACL,OAAO,GACzCL,aAAa,CAACW,UAAU;AAE5B,MAAMC,MAAY,GAAGH,MAAM,GACvBA,MAAM,GACN,IAAII,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACb,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAaL,OAAO,SAASc,KAAKA,CAAC;EACpBC,YAAY;EACZC,OAAO;EACPC;AAKF,CAAC,GAAG,CAAC,CAAC,EAA4B;EAChC,OAAOP,MAAM,CAACI,KAAK,CAACC,YAAY,IAAI,EAAE,EAAEC,OAAO,IAAI,EAAE,EAAEC,uBAAuB,IAAI,KAAK,CAAC;AAC1F;AAEA,OAAO,SAASC,MAAMA,CAAA,EAAG;EACvB,OAAOR,MAAM,CAACQ,MAAM,CAAC,CAAC;AACxB;AAEA,OAAO,SAASC,MAAMA,CAAA,EAAG;EACvB,OAAOT,MAAM,CAACS,MAAM,CAAC,CAAC;AACxB;AAEA,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,OAAOV,MAAM,CAACU,SAAS,CAAC,CAAC;AAC3B;AAEA,OAAO,SAASC,yBAAyBA,CAAA,EAAqB;EAC5D,OAAOX,MAAM,CAACW,yBAAyB,CAAC,CAAC;AAC3C","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","Module","require","RNCKakaoUser","console","log","Native","Proxy","get","Error","login","serviceTerms","prompts","useKakaoAccountLogin","logout","unlink","isLogined","isKakaoTalkLoginAvailable","scopes","revokeScopes","shippingAddresses","me"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAItD,MAAMC,aAAa,GACjB,mFAAmF,GACnFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMC,oBAAoB,GAAGC,MAAM,CAACC,kBAAkB,IAAI,IAAI;AAE9D,MAAMC,MAAM,GAAGH,oBAAoB,GAC/BI,OAAO,CAAC,wBAAwB,CAAC,CAACL,OAAO,GACzCL,aAAa,CAACW,YAAY;AAC9BC,OAAO,CAACC,GAAG,CAACb,aAAa,CAACW,YAAY,CAAC;AAEvC,MAAMG,MAAY,GAAGL,MAAM,GACvBA,MAAM,GACN,IAAIM,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACf,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AA2EL,OAAO,SAASgB,KAAKA,CAAC;EACpBC,YAAY;EACZC,OAAO;EACPC;AAKF,CAAC,GAAG,CAAC,CAAC,EAA4B;EAChC,OAAOP,MAAM,CAACI,KAAK,CAACC,YAAY,IAAI,EAAE,EAAEC,OAAO,IAAI,EAAE,EAAEC,oBAAoB,IAAI,KAAK,CAAC;AACvF;AAEA,OAAO,SAASC,MAAMA,CAAA,EAAG;EACvB,OAAOR,MAAM,CAACQ,MAAM,CAAC,CAAC;AACxB;AAEA,OAAO,SAASC,MAAMA,CAAA,EAAG;EACvB,OAAOT,MAAM,CAACS,MAAM,CAAC,CAAC;AACxB;AAEA,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,OAAOV,MAAM,CAACU,SAAS,CAAC,CAAC;AAC3B;AAEA,OAAO,SAASC,yBAAyBA,CAAA,EAAqB;EAC5D,OAAOX,MAAM,CAACW,yBAAyB,CAAC,CAAC;AAC3C;AAEA,OAAO,SAASC,MAAMA,CAACA,MAAiB,EAA6B;EACnE,OAAOZ,MAAM,CAACY,MAAM,CAACA,MAAM,CAAC;AAC9B;AAEA,OAAO,SAASC,YAAYA,CAACD,MAAgB,EAAiB;EAC5D,OAAOZ,MAAM,CAACa,YAAY,CAACD,MAAM,CAAC;AACpC;AAEA,OAAO,SAASP,YAAYA,CAAA,EAGzB;EACD,OAAOL,MAAM,CAACK,YAAY,CAAC,CAAC;AAC9B;AAEA,OAAO,SAASS,iBAAiBA,CAAA,EAAwC;EACvE,OAAOd,MAAM,CAACc,iBAAiB,CAAC,CAAC;AACnC;AAEA,OAAO,SAASC,EAAEA,CAAA,EAAuB;EACvC,OAAOf,MAAM,CAACe,EAAE,CAAC,CAAC;AACpB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["spec/NativeKakaoUser.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAgBlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["spec/NativeKakaoUser.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+BlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  export type KakaoLoginToken = {
2
2
  accessToken: string;
3
3
  refreshToken: string;
4
- tokenType: string;
4
+ tokenType?: string;
5
5
  idToken?: string;
6
6
  accessTokenExpiresAt: number;
7
7
  refreshTokenExpiresAt: number;
@@ -9,13 +9,83 @@ export type KakaoLoginToken = {
9
9
  refreshTokenExpiresIn: number;
10
10
  scopes: string[];
11
11
  };
12
- export declare function login({ serviceTerms, prompts, useKakaoAccountLoginIos, }?: {
12
+ export type KakaoScopeInfo = {
13
+ id: string;
14
+ agreed: boolean;
15
+ displayName: string;
16
+ revocable?: boolean;
17
+ using: boolean;
18
+ delegated?: boolean;
19
+ type: string;
20
+ };
21
+ export type KakaoServiceTerms = {
22
+ tag: string;
23
+ agreedAt: number;
24
+ };
25
+ export type KakaoAppServiceTerms = {
26
+ tag: string;
27
+ createdAt: number;
28
+ updatedAt: number;
29
+ };
30
+ export type KakaoShippingAddressResult = {
31
+ userId?: number;
32
+ needsAgreement?: boolean;
33
+ shippingAddresses: KakaoShippingAddress[];
34
+ };
35
+ export type KakaoShippingAddress = {
36
+ id: number;
37
+ name?: string;
38
+ isDefault: boolean;
39
+ updatedAt?: number;
40
+ type?: string;
41
+ baseAddress?: string;
42
+ detailAddress?: string;
43
+ receiverName?: string;
44
+ receiverPhoneNumber1?: string;
45
+ receiverPhoneNumber2?: string;
46
+ zoneNumber?: string;
47
+ zipCode?: string;
48
+ };
49
+ export type KakaoUser = {
50
+ id: number;
51
+ email: string;
52
+ name: string;
53
+ nickname: string;
54
+ profileImageUrl: string;
55
+ thumbnailImageUrl: string;
56
+ phoneNumber: string;
57
+ ageRange: string;
58
+ birthday: string;
59
+ birthdayType: string;
60
+ birthyear: string;
61
+ gender: string;
62
+ isEmailValid: boolean;
63
+ isEmailVerified: boolean;
64
+ isKorean: boolean;
65
+ ageRangeNeedsAgreement?: boolean;
66
+ birthdayNeedsAgreement?: boolean;
67
+ birthyearNeedsAgreement?: boolean;
68
+ emailNeedsAgreement?: boolean;
69
+ genderNeedsAgreement?: boolean;
70
+ isKoreanNeedsAgreement?: boolean;
71
+ phoneNumberNeedsAgreement?: boolean;
72
+ profileNeedsAgreement?: boolean;
73
+ };
74
+ export declare function login({ serviceTerms, prompts, useKakaoAccountLogin, }?: {
13
75
  serviceTerms?: string[];
14
- prompts?: string[];
15
- useKakaoAccountLoginIos?: boolean;
76
+ prompts?: ('Loign' | 'Create' | 'Cert' | 'UnifyDaum' | 'SelectAccount')[];
77
+ useKakaoAccountLogin?: boolean;
16
78
  }): Promise<KakaoLoginToken>;
17
79
  export declare function logout(): Promise<void>;
18
80
  export declare function unlink(): Promise<void>;
19
81
  export declare function isLogined(): Promise<boolean>;
20
82
  export declare function isKakaoTalkLoginAvailable(): Promise<boolean>;
83
+ export declare function scopes(scopes?: string[]): Promise<KakaoScopeInfo[]>;
84
+ export declare function revokeScopes(scopes: string[]): Promise<void>;
85
+ export declare function serviceTerms(): Promise<{
86
+ allowedServiceTerms?: KakaoServiceTerms[];
87
+ appServiceTerms?: KakaoAppServiceTerms[];
88
+ }>;
89
+ export declare function shippingAddresses(): Promise<KakaoShippingAddressResult>;
90
+ export declare function me(): Promise<KakaoUser>;
21
91
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AA4BA,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AACF,wBAAgB,KAAK,CAAC,EACpB,YAAY,EACZ,OAAO,EACP,uBAAuB,GACxB,GAAE;IACD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,OAAO,CAAC,eAAe,CAAC,CAEhC;AAED,wBAAgB,MAAM,kBAErB;AAED,wBAAgB,MAAM,kBAErB;AAED,wBAAgB,SAAS,qBAExB;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,19 @@
1
1
  import type { TurboModule } from 'react-native';
2
- import type { KakaoLoginToken } from '..';
2
+ import type { KakaoAppServiceTerms, KakaoLoginToken, KakaoScopeInfo, KakaoServiceTerms, KakaoShippingAddressResult, KakaoUser } from '..';
3
3
  export interface Spec extends TurboModule {
4
4
  isKakaoTalkLoginAvailable(): Promise<boolean>;
5
- login(serviceTerms: string[], prompts: string[], useKakaoAccountLoginIos: boolean): Promise<KakaoLoginToken>;
5
+ login(serviceTerms: string[], prompts: string[], useKakaoAccountLogin: boolean): Promise<KakaoLoginToken>;
6
6
  logout(): Promise<void>;
7
7
  unlink(): Promise<void>;
8
8
  isLogined(): Promise<boolean>;
9
+ scopes(scopes?: string[]): Promise<KakaoScopeInfo[]>;
10
+ revokeScopes(scopes: string[]): Promise<void>;
11
+ serviceTerms(): Promise<{
12
+ allowedServiceTerms?: KakaoServiceTerms[];
13
+ appServiceTerms?: KakaoAppServiceTerms[];
14
+ }>;
15
+ shippingAddresses(): Promise<KakaoShippingAddressResult>;
16
+ me(): Promise<KakaoUser>;
9
17
  }
10
18
  declare const _default: Spec;
11
19
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeKakaoUser.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoUser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAE1C,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CACH,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,uBAAuB,EAAE,OAAO,GAC/B,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B;;AAED,wBAAsE"}
1
+ {"version":3,"file":"NativeKakaoUser.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoUser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,0BAA0B,EAC1B,SAAS,EACV,MAAM,IAAI,CAAC;AAEZ,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CACH,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,oBAAoB,EAAE,OAAO,GAC5B,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACrD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,YAAY,IAAI,OAAO,CAAC;QACtB,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,CAAC;QAC1C,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,iBAAiB,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACzD,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;CAC1B;;AAED,wBAAsE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-native-kakao/user",
3
3
  "description": "React Native Kakao User SDK",
4
- "version": "0.5.1",
4
+ "version": "0.7.0",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
7
7
  "types": "lib/typescript/src/index.d.ts",
@@ -107,5 +107,5 @@
107
107
  "javaPackageName": "net.mjstudio.rnkakao.user"
108
108
  }
109
109
  },
110
- "gitHead": "fdde4feb0d2c64dda2c30077a3e3e68fdab739c7"
110
+ "gitHead": "ae9db1ab7ed278e9c72b1ab451c5b4154b7e4e7d"
111
111
  }
package/src/index.tsx CHANGED
@@ -13,7 +13,8 @@ const isTurboModuleEnabled = global.__turboModuleProxy != null;
13
13
 
14
14
  const Module = isTurboModuleEnabled
15
15
  ? require('./spec/NativeKakaoUser').default
16
- : NativeModules.KakaoShare;
16
+ : NativeModules.RNCKakaoUser;
17
+ console.log(NativeModules.RNCKakaoUser);
17
18
 
18
19
  const Native: Spec = Module
19
20
  ? Module
@@ -29,7 +30,7 @@ const Native: Spec = Module
29
30
  export type KakaoLoginToken = {
30
31
  accessToken: string;
31
32
  refreshToken: string;
32
- tokenType: string;
33
+ tokenType?: string;
33
34
  idToken?: string;
34
35
  accessTokenExpiresAt: number;
35
36
  refreshTokenExpiresAt: number;
@@ -37,16 +38,78 @@ export type KakaoLoginToken = {
37
38
  refreshTokenExpiresIn: number;
38
39
  scopes: string[];
39
40
  };
41
+ export type KakaoScopeInfo = {
42
+ id: string;
43
+ agreed: boolean;
44
+ displayName: string;
45
+ revocable?: boolean;
46
+ using: boolean;
47
+ delegated?: boolean;
48
+ type: string;
49
+ };
50
+ export type KakaoServiceTerms = {
51
+ tag: string;
52
+ agreedAt: number;
53
+ };
54
+ export type KakaoAppServiceTerms = {
55
+ tag: string;
56
+ createdAt: number;
57
+ updatedAt: number;
58
+ };
59
+ export type KakaoShippingAddressResult = {
60
+ userId?: number;
61
+ needsAgreement?: boolean;
62
+ shippingAddresses: KakaoShippingAddress[];
63
+ };
64
+ export type KakaoShippingAddress = {
65
+ id: number;
66
+ name?: string;
67
+ isDefault: boolean;
68
+ updatedAt?: number;
69
+ type?: string;
70
+ baseAddress?: string;
71
+ detailAddress?: string;
72
+ receiverName?: string;
73
+ receiverPhoneNumber1?: string;
74
+ receiverPhoneNumber2?: string;
75
+ zoneNumber?: string;
76
+ zipCode?: string;
77
+ };
78
+ export type KakaoUser = {
79
+ id: number;
80
+ email: string;
81
+ name: string;
82
+ nickname: string;
83
+ profileImageUrl: string;
84
+ thumbnailImageUrl: string;
85
+ phoneNumber: string;
86
+ ageRange: string;
87
+ birthday: string;
88
+ birthdayType: string;
89
+ birthyear: string;
90
+ gender: string;
91
+ isEmailValid: boolean;
92
+ isEmailVerified: boolean;
93
+ isKorean: boolean;
94
+ ageRangeNeedsAgreement?: boolean;
95
+ birthdayNeedsAgreement?: boolean;
96
+ birthyearNeedsAgreement?: boolean;
97
+ emailNeedsAgreement?: boolean;
98
+ genderNeedsAgreement?: boolean;
99
+ isKoreanNeedsAgreement?: boolean;
100
+ phoneNumberNeedsAgreement?: boolean;
101
+ profileNeedsAgreement?: boolean;
102
+ };
40
103
  export function login({
41
104
  serviceTerms,
42
105
  prompts,
43
- useKakaoAccountLoginIos,
106
+ useKakaoAccountLogin,
44
107
  }: {
45
108
  serviceTerms?: string[];
46
- prompts?: string[];
47
- useKakaoAccountLoginIos?: boolean;
109
+ prompts?: ('Loign' | 'Create' | 'Cert' | 'UnifyDaum' | 'SelectAccount')[];
110
+ useKakaoAccountLogin?: boolean;
48
111
  } = {}): Promise<KakaoLoginToken> {
49
- return Native.login(serviceTerms ?? [], prompts ?? [], useKakaoAccountLoginIos ?? false);
112
+ return Native.login(serviceTerms ?? [], prompts ?? [], useKakaoAccountLogin ?? false);
50
113
  }
51
114
 
52
115
  export function logout() {
@@ -64,3 +127,26 @@ export function isLogined() {
64
127
  export function isKakaoTalkLoginAvailable(): Promise<boolean> {
65
128
  return Native.isKakaoTalkLoginAvailable();
66
129
  }
130
+
131
+ export function scopes(scopes?: string[]): Promise<KakaoScopeInfo[]> {
132
+ return Native.scopes(scopes);
133
+ }
134
+
135
+ export function revokeScopes(scopes: string[]): Promise<void> {
136
+ return Native.revokeScopes(scopes);
137
+ }
138
+
139
+ export function serviceTerms(): Promise<{
140
+ allowedServiceTerms?: KakaoServiceTerms[];
141
+ appServiceTerms?: KakaoAppServiceTerms[];
142
+ }> {
143
+ return Native.serviceTerms();
144
+ }
145
+
146
+ export function shippingAddresses(): Promise<KakaoShippingAddressResult> {
147
+ return Native.shippingAddresses();
148
+ }
149
+
150
+ export function me(): Promise<KakaoUser> {
151
+ return Native.me();
152
+ }
@@ -1,18 +1,33 @@
1
1
  import type { TurboModule } from 'react-native';
2
2
  import { TurboModuleRegistry } from 'react-native';
3
3
 
4
- import type { KakaoLoginToken } from '..';
4
+ import type {
5
+ KakaoAppServiceTerms,
6
+ KakaoLoginToken,
7
+ KakaoScopeInfo,
8
+ KakaoServiceTerms,
9
+ KakaoShippingAddressResult,
10
+ KakaoUser,
11
+ } from '..';
5
12
 
6
13
  export interface Spec extends TurboModule {
7
14
  isKakaoTalkLoginAvailable(): Promise<boolean>;
8
15
  login(
9
16
  serviceTerms: string[],
10
17
  prompts: string[],
11
- useKakaoAccountLoginIos: boolean,
18
+ useKakaoAccountLogin: boolean,
12
19
  ): Promise<KakaoLoginToken>;
13
20
  logout(): Promise<void>;
14
21
  unlink(): Promise<void>;
15
22
  isLogined(): Promise<boolean>;
23
+ scopes(scopes?: string[]): Promise<KakaoScopeInfo[]>;
24
+ revokeScopes(scopes: string[]): Promise<void>;
25
+ serviceTerms(): Promise<{
26
+ allowedServiceTerms?: KakaoServiceTerms[];
27
+ appServiceTerms?: KakaoAppServiceTerms[];
28
+ }>;
29
+ shippingAddresses(): Promise<KakaoShippingAddressResult>;
30
+ me(): Promise<KakaoUser>;
16
31
  }
17
32
 
18
33
  export default TurboModuleRegistry.getEnforcing<Spec>('RNCKakaoUser');