@react-native-kakao/share 0.9.1 → 1.0.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.
@@ -1,15 +1,74 @@
1
1
  package net.mjstudio.rnkakao.share
2
2
 
3
+ import android.content.ActivityNotFoundException
4
+ import com.facebook.react.bridge.Promise
3
5
  import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.bridge.ReactMethod
7
+ import com.facebook.react.bridge.ReadableMap
8
+ import com.kakao.sdk.common.util.KakaoCustomTabsClient
9
+ import com.kakao.sdk.share.ShareClient
10
+ import com.kakao.sdk.share.WebSharerClient
11
+ import net.mjstudio.rnkakao.core.util.rejectWith
4
12
 
5
13
  class RNCKakaoShareModule internal constructor(context: ReactApplicationContext) :
6
- KakaoShareSpec(context) {
14
+ KakaoShareSpec(context) {
7
15
 
8
- override fun getName(): String {
9
- return NAME
10
- }
16
+ override fun getName(): String {
17
+ return NAME
18
+ }
11
19
 
12
- companion object {
13
- const val NAME = "RNCKakaoShare"
14
- }
20
+ @ReactMethod
21
+ override fun shareCustom(
22
+ templateId: Double,
23
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
24
+ templateArgs: ReadableMap?,
25
+ serverCallbackArgs: ReadableMap?,
26
+ promise: Promise,
27
+ ) {
28
+ val context = currentActivity
29
+ if (context == null) {
30
+ promise.rejectWith(ActivityNotFoundException())
31
+ return
32
+ }
33
+ if (ShareClient.instance.isKakaoTalkSharingAvailable(context)) {
34
+ ShareClient.instance.shareCustom(context, templateId.toLong()) { sharingResult, error ->
35
+ if (error != null) {
36
+ promise.rejectWith(error)
37
+ } else if (sharingResult != null) {
38
+ context.startActivity(sharingResult.intent)
39
+ promise.resolve(42)
40
+ }
41
+ }
42
+ } else if (useWebBrowserIfKakaoTalkNotAvailable) {
43
+ val sharerUrl = WebSharerClient.instance.makeCustomUrl(templateId.toLong())
44
+
45
+ // CustomTabs으로 웹 브라우저 열기
46
+
47
+ // 1. CustomTabsServiceConnection 지원 브라우저 열기
48
+ // ex) Chrome, 삼성 인터넷, FireFox, 웨일 등
49
+ try {
50
+ KakaoCustomTabsClient.openWithDefault(context, sharerUrl)
51
+ promise.resolve(42)
52
+ return
53
+ } catch (e: UnsupportedOperationException) { // CustomTabsServiceConnection 지원 브라우저가 없을 때 예외처리
54
+ }
55
+
56
+ // 2. CustomTabsServiceConnection 미지원 브라우저 열기
57
+ // ex) 다음, 네이버 등
58
+ try {
59
+ KakaoCustomTabsClient.open(context, sharerUrl)
60
+ promise.resolve(42)
61
+ return
62
+ } catch (e: ActivityNotFoundException) { // 디바이스에 설치된 인터넷 브라우저가 없을 때 예외처리
63
+ }
64
+
65
+ promise.rejectWith("web url open failed $sharerUrl")
66
+ } else {
67
+ promise.rejectWith("kakaotalk not available")
68
+ }
69
+ }
70
+
71
+ companion object {
72
+ const val NAME = "RNCKakaoShare"
73
+ }
15
74
  }
@@ -1,7 +1,17 @@
1
1
  package net.mjstudio.rnkakao.share
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.ReadableMap
5
7
 
6
8
  abstract class KakaoShareSpec internal constructor(context: ReactApplicationContext) :
7
- ReactContextBaseJavaModule(context)
9
+ ReactContextBaseJavaModule(context) {
10
+ abstract fun shareCustom(
11
+ templateId: Double,
12
+ useWebBrowserIfKakaoTalkNotAvailable: Boolean,
13
+ templateArgs: ReadableMap?,
14
+ serverCallbackArgs: ReadableMap?,
15
+ promise: Promise,
16
+ )
17
+ }
@@ -9,14 +9,19 @@
9
9
 
10
10
  RCT_EXPORT_MODULE()
11
11
 
12
- RCT_EXPORT_METHOD(multiply
13
- : (double)a b
14
- : (double)b resolve
12
+ RCT_EXPORT_METHOD(shareCustom
13
+ : (double)templateId useWebBrwoserIfKakaoTalkNotAvailable
14
+ : (BOOL)useWebBrowserIfKakaoTalkNotAvailable templateArgs
15
+ : (NSDictionary*)templateArgs serverCallbackArgs
16
+ : (NSDictionary*)serverCallbackArgs resolve
15
17
  : (RCTPromiseResolveBlock)resolve reject
16
18
  : (RCTPromiseRejectBlock)reject) {
17
- NSNumber* result = @(a * b);
18
-
19
- resolve(result);
19
+ [[self manager] shareCustom:(NSInteger)templateId
20
+ useWebBrowserIfKakaoTalkNotAvailable:useWebBrowserIfKakaoTalkNotAvailable
21
+ templateArgs:templateArgs
22
+ serverCallbackArgs:serverCallbackArgs
23
+ resolve:resolve
24
+ reject:reject];
20
25
  }
21
26
 
22
27
  // Don't compile this code when we build for the old architecture.
@@ -1,41 +1,59 @@
1
1
  import Foundation
2
2
  import KakaoSDKShare
3
+ import React
4
+ import RNCKakaoCore
5
+ import SafariServices
3
6
 
4
7
  @objc public class RNCKakaoShareManager: NSObject {
5
8
  @objc public static let shared = RNCKakaoShareManager()
6
9
 
7
- @objc public func go() {
8
- // // 카카오톡 설치여부 확인
9
- // if ShareApi.isKakaoTalkSharingAvailable() {
10
- // // 카카오톡으로 카카오톡 공유 가능
11
- // ShareApi.shared.shareCustom(
12
- // templateId: templateId,
13
- // templateArgs: ["title": "제목입니다.", "description": "설명입니다."]
14
- // ) { sharingResult, error in
15
- // if let error {
16
- // print(error)
17
- // } else {
18
- // print("shareCustom() success.")
19
- // if let sharingResult {
20
- // UIApplication.shared.open(sharingResult.url, options: [:], completionHandler: nil)
21
- // }
22
- // }
23
- // }
24
- // } else {
25
- // // 카카오톡 미설치: 웹 공유 사용 권장
26
- // // Custom WebView 또는 디폴트 브라우져 사용 가능
27
- // // 웹 공유 예시 코드
28
- // if let url = ShareApi.shared.makeCustomUrl(
29
- // templateId: templateId,
30
- // templateArgs: ["title": "제목입니다.", "description": "설명입니다."]
31
- // ) {
32
- // safariViewController = SFSafariViewController(url: url)
33
- // safariViewController?.modalTransitionStyle = .crossDissolve
34
- // safariViewController?.modalPresentationStyle = .overCurrentContext
35
- // present(safariViewController!, animated: true) {
36
- // print("웹 present success")
37
- // }
38
- // }
39
- // }
10
+ @objc public func shareCustom(
11
+ _ templateId: Int64,
12
+ useWebBrowserIfKakaoTalkNotAvailable: Bool,
13
+ templateArgs: [String: String],
14
+ serverCallbackArgs: [String: String],
15
+ resolve: @escaping RCTPromiseResolveBlock,
16
+ reject: @escaping RCTPromiseRejectBlock
17
+ ) {
18
+ // 카카오톡 설치여부 확인
19
+ if ShareApi.isKakaoTalkSharingAvailable() {
20
+ // 카카오톡으로 카카오톡 공유 가능
21
+ ShareApi.shared.shareCustom(
22
+ templateId: templateId,
23
+ templateArgs: templateArgs,
24
+ serverCallbackArgs: serverCallbackArgs
25
+ ) { sharingResult, error in
26
+ if let error {
27
+ RNCKakaoUtil.reject(reject, error)
28
+ } else if let sharingResult {
29
+ UIApplication.shared.open(sharingResult.url, options: [:]) { success in
30
+ if success {
31
+ resolve(42)
32
+ } else {
33
+ RNCKakaoUtil.reject(reject, "sharingResult url open failed \(sharingResult.url)")
34
+ }
35
+ }
36
+ } else {
37
+ RNCKakaoUtil.reject(reject, "sharingResult url not found")
38
+ }
39
+ }
40
+ } else if useWebBrowserIfKakaoTalkNotAvailable {
41
+ if let url = ShareApi.shared.makeCustomUrl(
42
+ templateId: templateId,
43
+ templateArgs: templateArgs,
44
+ serverCallbackArgs: serverCallbackArgs
45
+ ) {
46
+ let safariViewController = SFSafariViewController(url: url)
47
+ safariViewController.modalTransitionStyle = .crossDissolve
48
+ safariViewController.modalPresentationStyle = .overCurrentContext
49
+ RNCKakaoUtil.presentViewController(safariViewController) {
50
+ resolve(42)
51
+ }
52
+ } else {
53
+ RNCKakaoUtil.reject(reject, "makeCustomUrl failed")
54
+ }
55
+ } else {
56
+ RNCKakaoUtil.reject(reject, "kakaotalk not available")
57
+ }
40
58
  }
41
59
  }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.noob = noob;
6
+ exports.shareCustom = shareCustom;
7
7
  var _reactNative = require("react-native");
8
8
  const LINKING_ERROR = "The package '@react-native-kakao/share' doesn't seem to be linked. Make sure: \n\n" + _reactNative.Platform.select({
9
9
  ios: "- You have run 'pod install'\n",
@@ -18,7 +18,12 @@ const Native = Module ? Module : new Proxy({}, {
18
18
  throw new Error(LINKING_ERROR);
19
19
  }
20
20
  });
21
- function noob() {
22
- console.log(Native);
21
+ function shareCustom({
22
+ templateId,
23
+ useWebBrowserIfKakaoTalkNotAvailable = true,
24
+ serverCallbackArgs = {},
25
+ templateArgs = {}
26
+ }) {
27
+ return Native.shareCustom(templateId, useWebBrowserIfKakaoTalkNotAvailable, templateArgs, serverCallbackArgs);
23
28
  }
24
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","Module","NativeModules","RNCKakaoShare","Native","Proxy","get","Error","noob","console","log"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GACjB,oFAAoF,GACpFC,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,yBAAyB,CAAC,CAACK,OAAO,GAC1CK,0BAAa,CAACC,aAAa;AAE/B,MAAMC,MAAM,GAAGH,MAAM,GACjBA,MAAM,GACN,IAAII,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACd,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEE,SAASe,IAAIA,CAAA,EAAG;EACrBC,OAAO,CAACC,GAAG,CAACN,MAAM,CAAC;AACrB","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","Module","NativeModules","RNCKakaoShare","Native","Proxy","get","Error","shareCustom","templateId","useWebBrowserIfKakaoTalkNotAvailable","serverCallbackArgs","templateArgs"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAIA,MAAMC,aAAa,GACjB,oFAAoF,GACpFC,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,yBAAyB,CAAC,CAACK,OAAO,GAC1CK,0BAAa,CAACC,aAAa;AAE/B,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;AAEE,SAASe,WAAWA,CAAC;EAC1BC,UAAU;EACVC,oCAAoC,GAAG,IAAI;EAC3CC,kBAAkB,GAAG,CAAC,CAAC;EACvBC,YAAY,GAAG,CAAC;AAMlB,CAAC,EAAE;EACD,OAAOR,MAAM,CAACI,WAAW,CACvBC,UAAU,EACVC,oCAAoC,EACpCE,YAAY,EACZD,kBACF,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["spec/NativeKakaoShare.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAIpCC,gCAAmB,CAACC,YAAY,CAAO,eAAe,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["spec/NativeKakaoShare.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAYpCC,gCAAmB,CAACC,YAAY,CAAO,eAAe,CAAC","ignoreList":[]}
@@ -12,7 +12,12 @@ const Native = Module ? Module : new Proxy({}, {
12
12
  throw new Error(LINKING_ERROR);
13
13
  }
14
14
  });
15
- export function noob() {
16
- console.log(Native);
15
+ export function shareCustom({
16
+ templateId,
17
+ useWebBrowserIfKakaoTalkNotAvailable = true,
18
+ serverCallbackArgs = {},
19
+ templateArgs = {}
20
+ }) {
21
+ return Native.shareCustom(templateId, useWebBrowserIfKakaoTalkNotAvailable, templateArgs, serverCallbackArgs);
17
22
  }
18
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","Module","require","RNCKakaoShare","Native","Proxy","get","Error","noob","console","log"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,oFAAoF,GACpFD,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,yBAAyB,CAAC,CAACL,OAAO,GAC1CL,aAAa,CAACW,aAAa;AAE/B,MAAMC,MAAM,GAAGH,MAAM,GACjBA,MAAM,GACN,IAAII,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACb,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,SAASc,IAAIA,CAAA,EAAG;EACrBC,OAAO,CAACC,GAAG,CAACN,MAAM,CAAC;AACrB","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","Module","require","RNCKakaoShare","Native","Proxy","get","Error","shareCustom","templateId","useWebBrowserIfKakaoTalkNotAvailable","serverCallbackArgs","templateArgs"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAItD,MAAMC,aAAa,GACjB,oFAAoF,GACpFD,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,yBAAyB,CAAC,CAACL,OAAO,GAC1CL,aAAa,CAACW,aAAa;AAE/B,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;AAEL,OAAO,SAASc,WAAWA,CAAC;EAC1BC,UAAU;EACVC,oCAAoC,GAAG,IAAI;EAC3CC,kBAAkB,GAAG,CAAC,CAAC;EACvBC,YAAY,GAAG,CAAC;AAMlB,CAAC,EAAE;EACD,OAAOR,MAAM,CAACI,WAAW,CACvBC,UAAU,EACVC,oCAAoC,EACpCE,YAAY,EACZD,kBACF,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["spec/NativeKakaoShare.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAIlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,eAAe,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["spec/NativeKakaoShare.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAYlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,eAAe,CAAC","ignoreList":[]}
@@ -1,2 +1,7 @@
1
- export declare function noob(): void;
1
+ export declare function shareCustom({ templateId, useWebBrowserIfKakaoTalkNotAvailable, serverCallbackArgs, templateArgs, }: {
2
+ templateId: number;
3
+ useWebBrowserIfKakaoTalkNotAvailable?: boolean;
4
+ templateArgs?: Record<string, string>;
5
+ serverCallbackArgs?: Record<string, string>;
6
+ }): Promise<void>;
2
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AA0BA,wBAAgB,IAAI,SAEnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AA4BA,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,oCAA2C,EAC3C,kBAAuB,EACvB,YAAiB,GAClB,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC,CAAC,EAAE,OAAO,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C,iBAOA"}
@@ -1,5 +1,7 @@
1
1
  import type { TurboModule } from 'react-native';
2
+ import type { Int32, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
2
3
  export interface Spec extends TurboModule {
4
+ shareCustom(templateId: Int32, useWebBrowserIfKakaoTalkNotAvailable: boolean, templateArgs: UnsafeObject, serverCallbackArgs: UnsafeObject): Promise<void>;
3
5
  }
4
6
  declare const _default: Spec;
5
7
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeKakaoShare.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoShare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;CAAG;;AAE5C,wBAAuE"}
1
+ {"version":3,"file":"NativeKakaoShare.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoShare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAErF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,WAAW,CACT,UAAU,EAAE,KAAK,EACjB,oCAAoC,EAAE,OAAO,EAC7C,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,YAAY,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;;AAED,wBAAuE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-native-kakao/share",
3
3
  "description": "React Native Kakao Share SDK",
4
- "version": "0.9.1",
4
+ "version": "1.0.1",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
7
7
  "types": "lib/typescript/src/index.d.ts",
@@ -58,7 +58,7 @@
58
58
  "access": "public"
59
59
  },
60
60
  "devDependencies": {
61
- "@react-native-kakao/core": "0.9.0",
61
+ "@react-native-kakao/core": "^1.0.0",
62
62
  "@types/jest": "^29.5.5",
63
63
  "@types/react": "^18.2.44",
64
64
  "del-cli": "^5.1.0",
@@ -69,7 +69,7 @@
69
69
  "typescript": "5.1.6"
70
70
  },
71
71
  "peerDependencies": {
72
- "@react-native-kakao/core": "0.9.0",
72
+ "@react-native-kakao/core": "^1.0.0",
73
73
  "react": "*",
74
74
  "react-native": "*"
75
75
  },
@@ -105,5 +105,5 @@
105
105
  "javaPackageName": "net.mjstudio.rnkakao.share"
106
106
  }
107
107
  },
108
- "gitHead": "5d5c4195e3ec45be6637a9026312d64979b0c6c3"
108
+ "gitHead": "e86bd142b21c52f7078ffcbf3edfc19a9c18f0d8"
109
109
  }
package/src/index.tsx CHANGED
@@ -1,5 +1,7 @@
1
1
  import { NativeModules, Platform } from 'react-native';
2
2
 
3
+ import type { Spec } from './spec/NativeKakaoShare';
4
+
3
5
  const LINKING_ERROR =
4
6
  "The package '@react-native-kakao/share' doesn't seem to be linked. Make sure: \n\n" +
5
7
  Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
@@ -13,7 +15,7 @@ const Module = isTurboModuleEnabled
13
15
  ? require('./spec/NativeKakaoShare').default
14
16
  : NativeModules.RNCKakaoShare;
15
17
 
16
- const Native = Module
18
+ const Native: Spec = Module
17
19
  ? Module
18
20
  : new Proxy(
19
21
  {},
@@ -24,6 +26,21 @@ const Native = Module
24
26
  },
25
27
  );
26
28
 
27
- export function noob() {
28
- console.log(Native);
29
+ export function shareCustom({
30
+ templateId,
31
+ useWebBrowserIfKakaoTalkNotAvailable = true,
32
+ serverCallbackArgs = {},
33
+ templateArgs = {},
34
+ }: {
35
+ templateId: number;
36
+ useWebBrowserIfKakaoTalkNotAvailable?: boolean;
37
+ templateArgs?: Record<string, string>;
38
+ serverCallbackArgs?: Record<string, string>;
39
+ }) {
40
+ return Native.shareCustom(
41
+ templateId,
42
+ useWebBrowserIfKakaoTalkNotAvailable,
43
+ templateArgs,
44
+ serverCallbackArgs,
45
+ );
29
46
  }
@@ -1,6 +1,14 @@
1
1
  import type { TurboModule } from 'react-native';
2
2
  import { TurboModuleRegistry } from 'react-native';
3
+ import type { Int32, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
4
 
4
- export interface Spec extends TurboModule {}
5
+ export interface Spec extends TurboModule {
6
+ shareCustom(
7
+ templateId: Int32,
8
+ useWebBrowserIfKakaoTalkNotAvailable: boolean,
9
+ templateArgs: UnsafeObject,
10
+ serverCallbackArgs: UnsafeObject,
11
+ ): Promise<void>;
12
+ }
5
13
 
6
14
  export default TurboModuleRegistry.getEnforcing<Spec>('RNCKakaoShare');