@react-native-kakao/navi 3.0.0 → 3.1.0-next.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.
- package/CHANGELOG.md +28 -0
- package/android/src/main/java/net/mjstudio/rnkakao/navi/RNCKakaoNaviModule.kt +27 -1
- package/ios/RNCKakaoNavi.mm +16 -0
- package/ios/RNCKakaoNaviManager.swift +48 -9
- package/lib/commonjs/index.js +24 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +30 -3
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/spec/NativeKakaoNavi.ts +13 -0
- package/lib/module/index.js +21 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +27 -3
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/spec/NativeKakaoNavi.ts +13 -0
- package/lib/typescript/src/index.d.ts +8 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/spec/NativeKakaoNavi.d.ts +7 -0
- package/lib/typescript/src/spec/NativeKakaoNavi.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +34 -3
- package/src/index.web.ts +37 -7
- package/src/spec/NativeKakaoNavi.ts +13 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 3.1.0-next.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- dabddfa: Expose native navigation and destination-sharing URL builders without launching Kakao Navi.
|
|
8
|
+
- 1efca29: Expose Kakao Talk sharing availability and Kakao Navi installation checks on Android and iOS, with explicit false results on web.
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Updated dependencies [d5c5fb8]
|
|
13
|
+
- Updated dependencies [3027207]
|
|
14
|
+
- Updated dependencies [dfd32ca]
|
|
15
|
+
- Updated dependencies [2b223bf]
|
|
16
|
+
- Updated dependencies [67cd4e2]
|
|
17
|
+
- Updated dependencies [d81f9b7]
|
|
18
|
+
- @react-native-kakao/core@3.1.0-next.1
|
|
19
|
+
|
|
20
|
+
## 3.1.0-next.0
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- 4772981: Use `reactApplicationContext.currentActivity` in the Android modules instead of the bare `currentActivity` getter, so they compile on React Native releases where `ReactContextBaseJavaModule` no longer exposes it to Kotlin subclasses.
|
|
25
|
+
- 71700aa: Align web SDK options, response shapes, timestamps, and session errors with native APIs.
|
|
26
|
+
- Updated dependencies [20c253b]
|
|
27
|
+
- Updated dependencies [3260517]
|
|
28
|
+
- Updated dependencies [71700aa]
|
|
29
|
+
- @react-native-kakao/core@3.1.0-next.0
|
|
30
|
+
|
|
3
31
|
## 3.0.0
|
|
4
32
|
|
|
5
33
|
### Major Changes
|
|
@@ -31,6 +31,32 @@ import net.mjstudio.rnkakao.core.util.rejectWith
|
|
|
31
31
|
class RNCKakaoNaviModule internal constructor(
|
|
32
32
|
context: ReactApplicationContext,
|
|
33
33
|
) : NativeKakaoNaviSpec(context) {
|
|
34
|
+
@ReactMethod
|
|
35
|
+
override fun isKakaoNaviInstalled(promise: Promise) =
|
|
36
|
+
onMain {
|
|
37
|
+
promise.resolve(NaviClient.instance.isKakaoNaviInstalled(reactApplicationContext))
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@ReactMethod
|
|
41
|
+
override fun makeNaviUrl(
|
|
42
|
+
destination: ReadableMap,
|
|
43
|
+
isShare: Boolean,
|
|
44
|
+
option: ReadableMap?,
|
|
45
|
+
viaList: ReadableArray?,
|
|
46
|
+
promise: Promise,
|
|
47
|
+
) = onMain {
|
|
48
|
+
runCatching {
|
|
49
|
+
val stops = viaList?.filterIsReadableMap()?.map { it.toLocation() }
|
|
50
|
+
val intent =
|
|
51
|
+
if (isShare) {
|
|
52
|
+
NaviClient.instance.shareDestinationIntent(destination.toLocation(), option?.toOption(), stops)
|
|
53
|
+
} else {
|
|
54
|
+
NaviClient.instance.navigateIntent(destination.toLocation(), option?.toOption(), stops)
|
|
55
|
+
}
|
|
56
|
+
checkNotNull(intent.dataString) { "Failed to create Navi URL" }
|
|
57
|
+
}.onSuccess { promise.resolve(it) }.onFailure { promise.rejectWith(it) }
|
|
58
|
+
}
|
|
59
|
+
|
|
34
60
|
@ReactMethod
|
|
35
61
|
override fun navigateOrShareTo(
|
|
36
62
|
destination: ReadableMap,
|
|
@@ -41,7 +67,7 @@ class RNCKakaoNaviModule internal constructor(
|
|
|
41
67
|
promise: Promise,
|
|
42
68
|
) = onMain {
|
|
43
69
|
val context =
|
|
44
|
-
currentActivity ?: run {
|
|
70
|
+
reactApplicationContext.currentActivity ?: run {
|
|
45
71
|
promise.rejectWith(ActivityNotFoundException())
|
|
46
72
|
return@onMain
|
|
47
73
|
}
|
package/ios/RNCKakaoNavi.mm
CHANGED
|
@@ -12,6 +12,22 @@
|
|
|
12
12
|
|
|
13
13
|
RCT_EXPORT_MODULE()
|
|
14
14
|
|
|
15
|
+
RCT_EXPORT_METHOD(isKakaoNaviInstalled : (RCTPromiseResolveBlock)
|
|
16
|
+
resolve reject : (RCTPromiseRejectBlock)reject) {
|
|
17
|
+
[[self manager] isKakaoNaviInstalled:resolve];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
RCT_EXPORT_METHOD(makeNaviUrl : (NSDictionary*)destination isShare : (BOOL)isShare option : (
|
|
21
|
+
NSDictionary*)option viaList : (NSArray*)viaList resolve : (RCTPromiseResolveBlock)
|
|
22
|
+
resolve reject : (RCTPromiseRejectBlock)reject) {
|
|
23
|
+
[[self manager] makeNaviUrl:destination
|
|
24
|
+
isShare:isShare
|
|
25
|
+
option:option
|
|
26
|
+
viaList:viaList
|
|
27
|
+
resolve:resolve
|
|
28
|
+
reject:reject];
|
|
29
|
+
}
|
|
30
|
+
|
|
15
31
|
RCT_EXPORT_METHOD(navigateOrShareTo : (NSDictionary*)destination option : (NSDictionary*)
|
|
16
32
|
option viaList : (NSArray*)viaList openWebInstallUrlIfNaviAppNotAvailable : (
|
|
17
33
|
NSNumber*)openWebInstallUrlIfNaviAppNotAvailable isShare : (NSNumber*)
|
|
@@ -2,10 +2,41 @@ import Foundation
|
|
|
2
2
|
import KakaoSDKNavi
|
|
3
3
|
import React
|
|
4
4
|
import RNCKakaoCore
|
|
5
|
+
import UIKit
|
|
6
|
+
|
|
7
|
+
private let naviUrlCreationErrorMessage = "Failed to create Navi URL"
|
|
5
8
|
|
|
6
9
|
@objc public class RNCKakaoNaviManager: NSObject {
|
|
7
10
|
@objc public static let shared = RNCKakaoNaviManager()
|
|
8
11
|
|
|
12
|
+
@objc public func isKakaoNaviInstalled(_ resolve: @escaping RCTPromiseResolveBlock) {
|
|
13
|
+
onMain {
|
|
14
|
+
resolve(UIApplication.shared.canOpenURL(URL(string: "kakaonavi-sdk://")!))
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@objc public func makeNaviUrl(
|
|
19
|
+
_ dest: [String: Any],
|
|
20
|
+
isShare: Bool,
|
|
21
|
+
option opts: [String: Any]?,
|
|
22
|
+
viaList via: [[String: Any]]?,
|
|
23
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
24
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
25
|
+
) {
|
|
26
|
+
onMain {
|
|
27
|
+
guard let url = createNaviUrl(
|
|
28
|
+
destination: dest,
|
|
29
|
+
option: opts,
|
|
30
|
+
viaList: via,
|
|
31
|
+
isShare: isShare
|
|
32
|
+
) else {
|
|
33
|
+
RNCKakaoUtil.reject(reject, RNCKakaoError.unknown(naviUrlCreationErrorMessage))
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
resolve(url.absoluteString)
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
9
40
|
@objc public func navigateOrShareTo(
|
|
10
41
|
_ dest: [String: Any],
|
|
11
42
|
option opts: [String: Any]?,
|
|
@@ -16,16 +47,10 @@ import RNCKakaoCore
|
|
|
16
47
|
reject: @escaping RCTPromiseRejectBlock
|
|
17
48
|
) {
|
|
18
49
|
onMain {
|
|
19
|
-
guard let navigateUrl =
|
|
20
|
-
destination:
|
|
21
|
-
option: createOption(options: opts),
|
|
22
|
-
viaList: via?.map { createLocation($0) }
|
|
23
|
-
) : NaviApi.shared.navigateUrl(
|
|
24
|
-
destination: createLocation(dest),
|
|
25
|
-
option: createOption(options: opts),
|
|
26
|
-
viaList: via?.map { createLocation($0) }
|
|
50
|
+
guard let navigateUrl = createNaviUrl(
|
|
51
|
+
destination: dest, option: opts, viaList: via, isShare: isShare
|
|
27
52
|
) else {
|
|
28
|
-
RNCKakaoUtil.reject(reject, RNCKakaoError.unknown(
|
|
53
|
+
RNCKakaoUtil.reject(reject, RNCKakaoError.unknown(naviUrlCreationErrorMessage))
|
|
29
54
|
return
|
|
30
55
|
}
|
|
31
56
|
|
|
@@ -55,6 +80,20 @@ import RNCKakaoCore
|
|
|
55
80
|
}
|
|
56
81
|
}
|
|
57
82
|
|
|
83
|
+
private func createNaviUrl(
|
|
84
|
+
destination: [String: Any],
|
|
85
|
+
option: [String: Any]?,
|
|
86
|
+
viaList: [[String: Any]]?,
|
|
87
|
+
isShare: Bool
|
|
88
|
+
) -> URL? {
|
|
89
|
+
let destination = createLocation(destination)
|
|
90
|
+
let option = createOption(options: option)
|
|
91
|
+
let viaList = viaList?.map { createLocation($0) }
|
|
92
|
+
return isShare
|
|
93
|
+
? NaviApi.shared.shareUrl(destination: destination, option: option, viaList: viaList)
|
|
94
|
+
: NaviApi.shared.navigateUrl(destination: destination, option: option, viaList: viaList)
|
|
95
|
+
}
|
|
96
|
+
|
|
58
97
|
private func createOption(options: [String: Any]?) -> NaviOption? {
|
|
59
98
|
guard let options else { return nil }
|
|
60
99
|
|
package/lib/commonjs/index.js
CHANGED
|
@@ -4,10 +4,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
exports.getNavigateUrl = getNavigateUrl;
|
|
8
|
+
exports.getShareUrl = getShareUrl;
|
|
9
|
+
exports.isKakaoNaviInstalled = isKakaoNaviInstalled;
|
|
7
10
|
exports.navigateTo = navigateTo;
|
|
8
11
|
exports.shareTo = shareTo;
|
|
12
|
+
var _core = require("@react-native-kakao/core");
|
|
9
13
|
var _NativeKakaoNavi = _interopRequireDefault(require("./spec/NativeKakaoNavi"));
|
|
10
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
function isKakaoNaviInstalled() {
|
|
16
|
+
return _NativeKakaoNavi.default.isKakaoNaviInstalled();
|
|
17
|
+
}
|
|
18
|
+
function getNavigateUrl(params) {
|
|
19
|
+
return makeNaviUrl(params, false);
|
|
20
|
+
}
|
|
21
|
+
function getShareUrl(params) {
|
|
22
|
+
return makeNaviUrl(params, true);
|
|
23
|
+
}
|
|
24
|
+
async function makeNaviUrl({
|
|
25
|
+
destination,
|
|
26
|
+
option,
|
|
27
|
+
viaList
|
|
28
|
+
}, isShare) {
|
|
29
|
+
(0, _core.kAssert)(viaList == null || viaList.length <= 3, 'viaList must contain at most 3 stops.');
|
|
30
|
+
return _NativeKakaoNavi.default.makeNaviUrl(destination, isShare, option, viaList);
|
|
31
|
+
}
|
|
11
32
|
function navigateTo({
|
|
12
33
|
destination,
|
|
13
34
|
option,
|
|
@@ -25,6 +46,9 @@ function shareTo({
|
|
|
25
46
|
return _NativeKakaoNavi.default.navigateOrShareTo(destination, option, viaList, openWebInstallUrlIfNaviAppNotAvailable ?? true, true);
|
|
26
47
|
}
|
|
27
48
|
const KakaoNavi = {
|
|
49
|
+
isKakaoNaviInstalled,
|
|
50
|
+
getNavigateUrl,
|
|
51
|
+
getShareUrl,
|
|
28
52
|
navigateTo,
|
|
29
53
|
shareTo
|
|
30
54
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_core","require","_NativeKakaoNavi","_interopRequireDefault","e","__esModule","default","isKakaoNaviInstalled","Native","getNavigateUrl","params","makeNaviUrl","getShareUrl","destination","option","viaList","isShare","kAssert","length","navigateTo","openWebInstallUrlIfNaviAppNotAvailable","navigateOrShareTo","shareTo","KakaoNavi","_default","exports"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAOA,IAAAC,gBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA4C,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQrC,SAASG,oBAAoBA,CAAA,EAAqB;EACvD,OAAOC,wBAAM,CAACD,oBAAoB,CAAC,CAAC;AACtC;AAEO,SAASE,cAAcA,CAACC,MAA4B,EAAmB;EAC5E,OAAOC,WAAW,CAACD,MAAM,EAAE,KAAK,CAAC;AACnC;AAEO,SAASE,WAAWA,CAACF,MAA4B,EAAmB;EACzE,OAAOC,WAAW,CAACD,MAAM,EAAE,IAAI,CAAC;AAClC;AAEA,eAAeC,WAAWA,CACxB;EAAEE,WAAW;EAAEC,MAAM;EAAEC;AAA8B,CAAC,EACtDC,OAAgB,EAChB;EACA,IAAAC,aAAO,EAACF,OAAO,IAAI,IAAI,IAAIA,OAAO,CAACG,MAAM,IAAI,CAAC,EAAE,uCAAuC,CAAC;EAExF,OAAOV,wBAAM,CAACG,WAAW,CAACE,WAAW,EAAEG,OAAO,EAAEF,MAAM,EAAEC,OAAO,CAAC;AAClE;AAEO,SAASI,UAAUA,CAAC;EACzBN,WAAW;EACXC,MAAM;EACNC,OAAO;EACPK;AAMF,CAAC,EAAoB;EACnB,OAAOZ,wBAAM,CAACa,iBAAiB,CAC7BR,WAAW,EACXC,MAAM,EACNC,OAAO,EACPK,sCAAsC,IAAI,IAAI,EAC9C,KACF,CAAC;AACH;AAEO,SAASE,OAAOA,CAAC;EACtBT,WAAW;EACXC,MAAM;EACNC,OAAO;EACPK;AAMF,CAAC,EAAoB;EACnB,OAAOZ,wBAAM,CAACa,iBAAiB,CAC7BR,WAAW,EACXC,MAAM,EACNC,OAAO,EACPK,sCAAsC,IAAI,IAAI,EAC9C,IACF,CAAC;AACH;AAEA,MAAMG,SAAS,GAAG;EAAEhB,oBAAoB;EAAEE,cAAc;EAAEG,WAAW;EAAEO,UAAU;EAAEG;AAAQ,CAAC;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAnB,OAAA,GAC9EiB,SAAS","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.shareTo = exports.navigateTo = exports.default = void 0;
|
|
6
|
+
exports.shareTo = exports.navigateTo = exports.isKakaoNaviInstalled = exports.getShareUrl = exports.getNavigateUrl = exports.default = void 0;
|
|
7
7
|
var _jsUtil = require("@mj-studio/js-util");
|
|
8
8
|
var _core = require("@react-native-kakao/core");
|
|
9
9
|
function getVehicleType(v) {
|
|
@@ -58,17 +58,24 @@ function getRpOption(v) {
|
|
|
58
58
|
return 100;
|
|
59
59
|
}
|
|
60
60
|
const KakaoNavi = {
|
|
61
|
+
isKakaoNaviInstalled: async () => false,
|
|
62
|
+
getNavigateUrl: unsupportedUrlBuilder,
|
|
63
|
+
getShareUrl: unsupportedUrlBuilder,
|
|
61
64
|
navigateTo: async ({
|
|
62
65
|
viaList,
|
|
63
66
|
destination,
|
|
64
67
|
option
|
|
65
68
|
}) => {
|
|
66
69
|
(0, _core.kAssert)(viaList ? viaList.length <= 3 : true, '[navigateTo] viaList length should equal or less then 3.');
|
|
70
|
+
if (!isMobileBrowser()) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
67
73
|
try {
|
|
68
74
|
Kakao.Navi.start((0, _jsUtil.filterNonNullishKeys)({
|
|
69
75
|
name: destination.name,
|
|
70
76
|
x: destination.x,
|
|
71
77
|
y: destination.y,
|
|
78
|
+
rpflag: destination.rpflag,
|
|
72
79
|
coordType: option?.coordType?.toLowerCase(),
|
|
73
80
|
vehicleType: option?.vehicleType ? getVehicleType(option.vehicleType) : undefined,
|
|
74
81
|
rpOption: option?.rpOption ? getRpOption(option.rpOption) : undefined,
|
|
@@ -77,10 +84,11 @@ const KakaoNavi = {
|
|
|
77
84
|
sY: option?.startY,
|
|
78
85
|
sAngle: option?.startAngle,
|
|
79
86
|
returnUri: option?.returnUri,
|
|
80
|
-
viaPoints: viaList?.map(v => ({
|
|
87
|
+
viaPoints: viaList?.map(v => (0, _jsUtil.filterNonNullishKeys)({
|
|
81
88
|
name: v.name,
|
|
82
89
|
x: v.x,
|
|
83
|
-
y: v.y
|
|
90
|
+
y: v.y,
|
|
91
|
+
rpflag: v.rpflag
|
|
84
92
|
}))
|
|
85
93
|
}));
|
|
86
94
|
return true;
|
|
@@ -92,11 +100,15 @@ const KakaoNavi = {
|
|
|
92
100
|
destination,
|
|
93
101
|
option
|
|
94
102
|
}) => {
|
|
103
|
+
if (!isMobileBrowser()) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
95
106
|
try {
|
|
96
107
|
Kakao.Navi.share((0, _jsUtil.filterNonNullishKeys)({
|
|
97
108
|
name: destination.name,
|
|
98
109
|
x: destination.x,
|
|
99
110
|
y: destination.y,
|
|
111
|
+
rpflag: destination.rpflag,
|
|
100
112
|
coordType: option?.coordType?.toLowerCase()
|
|
101
113
|
}));
|
|
102
114
|
return true;
|
|
@@ -105,11 +117,26 @@ const KakaoNavi = {
|
|
|
105
117
|
}
|
|
106
118
|
}
|
|
107
119
|
};
|
|
120
|
+
async function unsupportedUrlBuilder() {
|
|
121
|
+
(0, _core.kCreateWebError)({
|
|
122
|
+
code: 'Package-UnsupportedPlatform',
|
|
123
|
+
message: 'The Kakao JavaScript SDK does not provide Navi URL builders.'
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function isMobileBrowser() {
|
|
127
|
+
return /android|iphone|ipad|ipod/i.test(navigator.userAgent) || /macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;
|
|
128
|
+
}
|
|
108
129
|
const {
|
|
130
|
+
isKakaoNaviInstalled,
|
|
131
|
+
getNavigateUrl,
|
|
132
|
+
getShareUrl,
|
|
109
133
|
navigateTo,
|
|
110
134
|
shareTo
|
|
111
135
|
} = KakaoNavi;
|
|
112
136
|
exports.shareTo = shareTo;
|
|
113
137
|
exports.navigateTo = navigateTo;
|
|
138
|
+
exports.getShareUrl = getShareUrl;
|
|
139
|
+
exports.getNavigateUrl = getNavigateUrl;
|
|
140
|
+
exports.isKakaoNaviInstalled = isKakaoNaviInstalled;
|
|
114
141
|
var _default = exports.default = KakaoNavi;
|
|
115
142
|
//# sourceMappingURL=index.web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_jsUtil","require","_core","getVehicleType","v","getRpOption","KakaoNavi","navigateTo","viaList","destination","option","kAssert","length","Kakao","Navi","start","filterNonNullishKeys","name","x","y","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share","exports","_default","default"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAWA,SAASE,cAAcA,CAACC,CAAiC,EAAU;EACjE,IAAIA,CAAC,KAAK,OAAO,EAAE;IACjB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,QAAQ,EAAE;IAClB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,OAAO,EAAE;IACjB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,QAAQ,EAAE;IAClB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,OAAO,EAAE;IACjB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,OAAO,EAAE;IACjB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,UAAU,EAAE;IACpB,OAAO,CAAC;EACV;EAEA,OAAO,CAAC;AACV;AAEA,SAASC,WAAWA,CAACD,CAA8B,EAAU;EAC3D,IAAIA,CAAC,KAAK,MAAM,EAAE;IAChB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,MAAM,EAAE;IAChB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,UAAU,EAAE;IACpB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,QAAQ,EAAE;IAClB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,MAAM,EAAE;IAChB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,SAAS,EAAE;IACnB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,QAAQ,EAAE;IAClB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,aAAa,EAAE;IACvB,OAAO,GAAG;EACZ;EAEA,OAAO,GAAG;AACZ;AAEA,MAAME,SAAuB,GAAG;EAC9BC,UAAU,EAAE,MAAAA,CAAO;IAAEC,OAAO;IAAEC,WAAW;IAAEC;EAAO,CAAC,KAAK;IACtD,IAAAC,aAAO,EACLH,OAAO,GAAGA,OAAO,CAACI,MAAM,IAAI,CAAC,GAAG,IAAI,EACpC,0DACF,CAAC;IAED,IAAI;MACFC,KAAK,CAACC,IAAI,CAACC,KAAK,CACd,IAAAC,4BAAoB,EAAC;QACnBC,IAAI,
|
|
1
|
+
{"version":3,"names":["_jsUtil","require","_core","getVehicleType","v","getRpOption","KakaoNavi","isKakaoNaviInstalled","getNavigateUrl","unsupportedUrlBuilder","getShareUrl","navigateTo","viaList","destination","option","kAssert","length","isMobileBrowser","Kakao","Navi","start","filterNonNullishKeys","name","x","y","rpflag","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share","kCreateWebError","code","message","test","navigator","userAgent","maxTouchPoints","exports","_default","default"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,7 +27,20 @@ export interface KakaoNaviLocation {
|
|
|
27
27
|
rpflag?: string;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
export type KakaoNaviRouteParams = {
|
|
31
|
+
destination: KakaoNaviLocation;
|
|
32
|
+
option?: KakaoNaviOption;
|
|
33
|
+
viaList?: KakaoNaviLocation[];
|
|
34
|
+
};
|
|
35
|
+
|
|
30
36
|
export interface Spec extends TurboModule {
|
|
37
|
+
isKakaoNaviInstalled(): Promise<boolean>;
|
|
38
|
+
makeNaviUrl(
|
|
39
|
+
destination: UnsafeObject,
|
|
40
|
+
isShare: boolean,
|
|
41
|
+
option?: UnsafeObject,
|
|
42
|
+
viaList?: ReadonlyArray<UnsafeObject>,
|
|
43
|
+
): Promise<string>;
|
|
31
44
|
navigateOrShareTo(
|
|
32
45
|
destination: UnsafeObject,
|
|
33
46
|
option?: UnsafeObject,
|
package/lib/module/index.js
CHANGED
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { kAssert } from '@react-native-kakao/core';
|
|
3
4
|
import Native from './spec/NativeKakaoNavi';
|
|
5
|
+
export function isKakaoNaviInstalled() {
|
|
6
|
+
return Native.isKakaoNaviInstalled();
|
|
7
|
+
}
|
|
8
|
+
export function getNavigateUrl(params) {
|
|
9
|
+
return makeNaviUrl(params, false);
|
|
10
|
+
}
|
|
11
|
+
export function getShareUrl(params) {
|
|
12
|
+
return makeNaviUrl(params, true);
|
|
13
|
+
}
|
|
14
|
+
async function makeNaviUrl({
|
|
15
|
+
destination,
|
|
16
|
+
option,
|
|
17
|
+
viaList
|
|
18
|
+
}, isShare) {
|
|
19
|
+
kAssert(viaList == null || viaList.length <= 3, 'viaList must contain at most 3 stops.');
|
|
20
|
+
return Native.makeNaviUrl(destination, isShare, option, viaList);
|
|
21
|
+
}
|
|
4
22
|
export function navigateTo({
|
|
5
23
|
destination,
|
|
6
24
|
option,
|
|
@@ -18,6 +36,9 @@ export function shareTo({
|
|
|
18
36
|
return Native.navigateOrShareTo(destination, option, viaList, openWebInstallUrlIfNaviAppNotAvailable ?? true, true);
|
|
19
37
|
}
|
|
20
38
|
const KakaoNavi = {
|
|
39
|
+
isKakaoNaviInstalled,
|
|
40
|
+
getNavigateUrl,
|
|
41
|
+
getShareUrl,
|
|
21
42
|
navigateTo,
|
|
22
43
|
shareTo
|
|
23
44
|
};
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Native","
|
|
1
|
+
{"version":3,"names":["kAssert","Native","isKakaoNaviInstalled","getNavigateUrl","params","makeNaviUrl","getShareUrl","destination","option","viaList","isShare","length","navigateTo","openWebInstallUrlIfNaviAppNotAvailable","navigateOrShareTo","shareTo","KakaoNavi"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,0BAA0B;AAOlD,OAAOC,MAAM,MAAM,wBAAwB;AAQ3C,OAAO,SAASC,oBAAoBA,CAAA,EAAqB;EACvD,OAAOD,MAAM,CAACC,oBAAoB,CAAC,CAAC;AACtC;AAEA,OAAO,SAASC,cAAcA,CAACC,MAA4B,EAAmB;EAC5E,OAAOC,WAAW,CAACD,MAAM,EAAE,KAAK,CAAC;AACnC;AAEA,OAAO,SAASE,WAAWA,CAACF,MAA4B,EAAmB;EACzE,OAAOC,WAAW,CAACD,MAAM,EAAE,IAAI,CAAC;AAClC;AAEA,eAAeC,WAAWA,CACxB;EAAEE,WAAW;EAAEC,MAAM;EAAEC;AAA8B,CAAC,EACtDC,OAAgB,EAChB;EACAV,OAAO,CAACS,OAAO,IAAI,IAAI,IAAIA,OAAO,CAACE,MAAM,IAAI,CAAC,EAAE,uCAAuC,CAAC;EAExF,OAAOV,MAAM,CAACI,WAAW,CAACE,WAAW,EAAEG,OAAO,EAAEF,MAAM,EAAEC,OAAO,CAAC;AAClE;AAEA,OAAO,SAASG,UAAUA,CAAC;EACzBL,WAAW;EACXC,MAAM;EACNC,OAAO;EACPI;AAMF,CAAC,EAAoB;EACnB,OAAOZ,MAAM,CAACa,iBAAiB,CAC7BP,WAAW,EACXC,MAAM,EACNC,OAAO,EACPI,sCAAsC,IAAI,IAAI,EAC9C,KACF,CAAC;AACH;AAEA,OAAO,SAASE,OAAOA,CAAC;EACtBR,WAAW;EACXC,MAAM;EACNC,OAAO;EACPI;AAMF,CAAC,EAAoB;EACnB,OAAOZ,MAAM,CAACa,iBAAiB,CAC7BP,WAAW,EACXC,MAAM,EACNC,OAAO,EACPI,sCAAsC,IAAI,IAAI,EAC9C,IACF,CAAC;AACH;AAEA,MAAMG,SAAS,GAAG;EAAEd,oBAAoB;EAAEC,cAAc;EAAEG,WAAW;EAAEM,UAAU;EAAEG;AAAQ,CAAC;AAC5F,eAAeC,SAAS","ignoreList":[]}
|
package/lib/module/index.web.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { filterNonNullishKeys } from '@mj-studio/js-util';
|
|
4
|
-
import { kAssert } from '@react-native-kakao/core';
|
|
4
|
+
import { kAssert, kCreateWebError } from '@react-native-kakao/core';
|
|
5
5
|
function getVehicleType(v) {
|
|
6
6
|
if (v === 'First') {
|
|
7
7
|
return 1;
|
|
@@ -54,17 +54,24 @@ function getRpOption(v) {
|
|
|
54
54
|
return 100;
|
|
55
55
|
}
|
|
56
56
|
const KakaoNavi = {
|
|
57
|
+
isKakaoNaviInstalled: async () => false,
|
|
58
|
+
getNavigateUrl: unsupportedUrlBuilder,
|
|
59
|
+
getShareUrl: unsupportedUrlBuilder,
|
|
57
60
|
navigateTo: async ({
|
|
58
61
|
viaList,
|
|
59
62
|
destination,
|
|
60
63
|
option
|
|
61
64
|
}) => {
|
|
62
65
|
kAssert(viaList ? viaList.length <= 3 : true, '[navigateTo] viaList length should equal or less then 3.');
|
|
66
|
+
if (!isMobileBrowser()) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
63
69
|
try {
|
|
64
70
|
Kakao.Navi.start(filterNonNullishKeys({
|
|
65
71
|
name: destination.name,
|
|
66
72
|
x: destination.x,
|
|
67
73
|
y: destination.y,
|
|
74
|
+
rpflag: destination.rpflag,
|
|
68
75
|
coordType: option?.coordType?.toLowerCase(),
|
|
69
76
|
vehicleType: option?.vehicleType ? getVehicleType(option.vehicleType) : undefined,
|
|
70
77
|
rpOption: option?.rpOption ? getRpOption(option.rpOption) : undefined,
|
|
@@ -73,10 +80,11 @@ const KakaoNavi = {
|
|
|
73
80
|
sY: option?.startY,
|
|
74
81
|
sAngle: option?.startAngle,
|
|
75
82
|
returnUri: option?.returnUri,
|
|
76
|
-
viaPoints: viaList?.map(v => ({
|
|
83
|
+
viaPoints: viaList?.map(v => filterNonNullishKeys({
|
|
77
84
|
name: v.name,
|
|
78
85
|
x: v.x,
|
|
79
|
-
y: v.y
|
|
86
|
+
y: v.y,
|
|
87
|
+
rpflag: v.rpflag
|
|
80
88
|
}))
|
|
81
89
|
}));
|
|
82
90
|
return true;
|
|
@@ -88,11 +96,15 @@ const KakaoNavi = {
|
|
|
88
96
|
destination,
|
|
89
97
|
option
|
|
90
98
|
}) => {
|
|
99
|
+
if (!isMobileBrowser()) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
91
102
|
try {
|
|
92
103
|
Kakao.Navi.share(filterNonNullishKeys({
|
|
93
104
|
name: destination.name,
|
|
94
105
|
x: destination.x,
|
|
95
106
|
y: destination.y,
|
|
107
|
+
rpflag: destination.rpflag,
|
|
96
108
|
coordType: option?.coordType?.toLowerCase()
|
|
97
109
|
}));
|
|
98
110
|
return true;
|
|
@@ -101,7 +113,19 @@ const KakaoNavi = {
|
|
|
101
113
|
}
|
|
102
114
|
}
|
|
103
115
|
};
|
|
116
|
+
async function unsupportedUrlBuilder() {
|
|
117
|
+
kCreateWebError({
|
|
118
|
+
code: 'Package-UnsupportedPlatform',
|
|
119
|
+
message: 'The Kakao JavaScript SDK does not provide Navi URL builders.'
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function isMobileBrowser() {
|
|
123
|
+
return /android|iphone|ipad|ipod/i.test(navigator.userAgent) || /macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;
|
|
124
|
+
}
|
|
104
125
|
export const {
|
|
126
|
+
isKakaoNaviInstalled,
|
|
127
|
+
getNavigateUrl,
|
|
128
|
+
getShareUrl,
|
|
105
129
|
navigateTo,
|
|
106
130
|
shareTo
|
|
107
131
|
} = KakaoNavi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["filterNonNullishKeys","kAssert","getVehicleType","v","getRpOption","KakaoNavi","navigateTo","viaList","destination","option","length","Kakao","Navi","start","name","x","y","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;AAAA,SAASA,oBAAoB,QAAQ,oBAAoB;AACzD,SAASC,OAAO,QAAQ,0BAA0B;
|
|
1
|
+
{"version":3,"names":["filterNonNullishKeys","kAssert","kCreateWebError","getVehicleType","v","getRpOption","KakaoNavi","isKakaoNaviInstalled","getNavigateUrl","unsupportedUrlBuilder","getShareUrl","navigateTo","viaList","destination","option","length","isMobileBrowser","Kakao","Navi","start","name","x","y","rpflag","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share","code","message","test","navigator","userAgent","maxTouchPoints"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,7 +27,20 @@ export interface KakaoNaviLocation {
|
|
|
27
27
|
rpflag?: string;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
export type KakaoNaviRouteParams = {
|
|
31
|
+
destination: KakaoNaviLocation;
|
|
32
|
+
option?: KakaoNaviOption;
|
|
33
|
+
viaList?: KakaoNaviLocation[];
|
|
34
|
+
};
|
|
35
|
+
|
|
30
36
|
export interface Spec extends TurboModule {
|
|
37
|
+
isKakaoNaviInstalled(): Promise<boolean>;
|
|
38
|
+
makeNaviUrl(
|
|
39
|
+
destination: UnsafeObject,
|
|
40
|
+
isShare: boolean,
|
|
41
|
+
option?: UnsafeObject,
|
|
42
|
+
viaList?: ReadonlyArray<UnsafeObject>,
|
|
43
|
+
): Promise<string>;
|
|
31
44
|
navigateOrShareTo(
|
|
32
45
|
destination: UnsafeObject,
|
|
33
46
|
option?: UnsafeObject,
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import type { KakaoNaviLocation, KakaoNaviOption } from './spec/NativeKakaoNavi';
|
|
2
|
-
export type { KakaoNaviLocation, KakaoNaviOption } from './spec/NativeKakaoNavi';
|
|
1
|
+
import type { KakaoNaviLocation, KakaoNaviOption, KakaoNaviRouteParams } from './spec/NativeKakaoNavi';
|
|
2
|
+
export type { KakaoNaviLocation, KakaoNaviOption, KakaoNaviRouteParams, } from './spec/NativeKakaoNavi';
|
|
3
|
+
export declare function isKakaoNaviInstalled(): Promise<boolean>;
|
|
4
|
+
export declare function getNavigateUrl(params: KakaoNaviRouteParams): Promise<string>;
|
|
5
|
+
export declare function getShareUrl(params: KakaoNaviRouteParams): Promise<string>;
|
|
3
6
|
export declare function navigateTo({ destination, option, viaList, openWebInstallUrlIfNaviAppNotAvailable, }: {
|
|
4
7
|
destination: KakaoNaviLocation;
|
|
5
8
|
option?: KakaoNaviOption;
|
|
@@ -13,6 +16,9 @@ export declare function shareTo({ destination, option, viaList, openWebInstallUr
|
|
|
13
16
|
openWebInstallUrlIfNaviAppNotAvailable?: boolean;
|
|
14
17
|
}): Promise<boolean>;
|
|
15
18
|
declare const KakaoNavi: {
|
|
19
|
+
isKakaoNaviInstalled: typeof isKakaoNaviInstalled;
|
|
20
|
+
getNavigateUrl: typeof getNavigateUrl;
|
|
21
|
+
getShareUrl: typeof getShareUrl;
|
|
16
22
|
navigateTo: typeof navigateTo;
|
|
17
23
|
shareTo: typeof shareTo;
|
|
18
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzE;AAWD,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,MAAM,EACN,OAAO,EACP,sCAAsC,GACvC,EAAE;IACD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,sCAAsC,CAAC,EAAE,OAAO,CAAC;CAClD,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnB;AAED,wBAAgB,OAAO,CAAC,EACtB,WAAW,EACX,MAAM,EACN,OAAO,EACP,sCAAsC,GACvC,EAAE;IACD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,sCAAsC,CAAC,EAAE,OAAO,CAAC;CAClD,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnB;AAED,QAAA,MAAM,SAAS;;;;;;CAA6E,CAAC;AAC7F,eAAe,SAAS,CAAC;AACzB,MAAM,MAAM,YAAY,GAAG,OAAO,SAAS,CAAC"}
|
|
@@ -16,7 +16,14 @@ export interface KakaoNaviLocation {
|
|
|
16
16
|
y: Double;
|
|
17
17
|
rpflag?: string;
|
|
18
18
|
}
|
|
19
|
+
export type KakaoNaviRouteParams = {
|
|
20
|
+
destination: KakaoNaviLocation;
|
|
21
|
+
option?: KakaoNaviOption;
|
|
22
|
+
viaList?: KakaoNaviLocation[];
|
|
23
|
+
};
|
|
19
24
|
export interface Spec extends TurboModule {
|
|
25
|
+
isKakaoNaviInstalled(): Promise<boolean>;
|
|
26
|
+
makeNaviUrl(destination: UnsafeObject, isShare: boolean, option?: UnsafeObject, viaList?: ReadonlyArray<UnsafeObject>): Promise<string>;
|
|
20
27
|
navigateOrShareTo(destination: UnsafeObject, option?: UnsafeObject, viaList?: ReadonlyArray<UnsafeObject>, openWebInstallUrlIfNaviAppNotAvailable?: boolean, isShare?: boolean): Promise<boolean>;
|
|
21
28
|
}
|
|
22
29
|
declare const _default: Spec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeKakaoNavi.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoNavi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IACvF,QAAQ,CAAC,EACL,MAAM,GACN,MAAM,GACN,UAAU,GACV,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,GACR,aAAa,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,iBAAiB,CACf,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,sCAAsC,CAAC,EAAE,OAAO,EAChD,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;;AAED,wBAAsE"}
|
|
1
|
+
{"version":3,"file":"NativeKakaoNavi.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoNavi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IACvF,QAAQ,CAAC,EACL,MAAM,GACN,MAAM,GACN,UAAU,GACV,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,GACR,aAAa,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,WAAW,CACT,WAAW,EAAE,YAAY,EACzB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,GACpC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,iBAAiB,CACf,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,sCAAsC,CAAC,EAAE,OAAO,EAChD,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;;AAED,wBAAsE"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-native-kakao/navi",
|
|
3
3
|
"description": "React Native Kakao Navi SDK",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.1.0-next.1",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
7
7
|
"types": "lib/typescript/src/index.d.ts",
|
|
@@ -57,17 +57,17 @@
|
|
|
57
57
|
"access": "public"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@react-native-kakao/core": "3.0.
|
|
60
|
+
"@react-native-kakao/core": "3.1.0-next.1",
|
|
61
61
|
"@types/invariant": "^2",
|
|
62
62
|
"@types/react": "~19.2.2",
|
|
63
63
|
"del-cli": "^5.1.0",
|
|
64
|
-
"react": "19.
|
|
65
|
-
"react-native": "0.
|
|
64
|
+
"react": "19.3.0",
|
|
65
|
+
"react-native": "0.88.0",
|
|
66
66
|
"react-native-builder-bob": "0.40.7",
|
|
67
67
|
"typescript": "~6.0.3"
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
70
|
-
"@react-native-kakao/core": "3.0.
|
|
70
|
+
"@react-native-kakao/core": "3.1.0-next.1",
|
|
71
71
|
"react": "*",
|
|
72
72
|
"react-native": ">=0.76.0"
|
|
73
73
|
},
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,38 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { kAssert } from '@react-native-kakao/core';
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
KakaoNaviLocation,
|
|
5
|
+
KakaoNaviOption,
|
|
6
|
+
KakaoNaviRouteParams,
|
|
7
|
+
} from './spec/NativeKakaoNavi';
|
|
2
8
|
import Native from './spec/NativeKakaoNavi';
|
|
3
9
|
|
|
4
|
-
export type {
|
|
10
|
+
export type {
|
|
11
|
+
KakaoNaviLocation,
|
|
12
|
+
KakaoNaviOption,
|
|
13
|
+
KakaoNaviRouteParams,
|
|
14
|
+
} from './spec/NativeKakaoNavi';
|
|
15
|
+
|
|
16
|
+
export function isKakaoNaviInstalled(): Promise<boolean> {
|
|
17
|
+
return Native.isKakaoNaviInstalled();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function getNavigateUrl(params: KakaoNaviRouteParams): Promise<string> {
|
|
21
|
+
return makeNaviUrl(params, false);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function getShareUrl(params: KakaoNaviRouteParams): Promise<string> {
|
|
25
|
+
return makeNaviUrl(params, true);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async function makeNaviUrl(
|
|
29
|
+
{ destination, option, viaList }: KakaoNaviRouteParams,
|
|
30
|
+
isShare: boolean,
|
|
31
|
+
) {
|
|
32
|
+
kAssert(viaList == null || viaList.length <= 3, 'viaList must contain at most 3 stops.');
|
|
33
|
+
|
|
34
|
+
return Native.makeNaviUrl(destination, isShare, option, viaList);
|
|
35
|
+
}
|
|
5
36
|
|
|
6
37
|
export function navigateTo({
|
|
7
38
|
destination,
|
|
@@ -43,6 +74,6 @@ export function shareTo({
|
|
|
43
74
|
);
|
|
44
75
|
}
|
|
45
76
|
|
|
46
|
-
const KakaoNavi = { navigateTo, shareTo };
|
|
77
|
+
const KakaoNavi = { isKakaoNaviInstalled, getNavigateUrl, getShareUrl, navigateTo, shareTo };
|
|
47
78
|
export default KakaoNavi;
|
|
48
79
|
export type KakaoNaviAPI = typeof KakaoNavi;
|
package/src/index.web.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { filterNonNullishKeys } from '@mj-studio/js-util';
|
|
2
|
-
import { kAssert } from '@react-native-kakao/core';
|
|
2
|
+
import { kAssert, kCreateWebError } from '@react-native-kakao/core';
|
|
3
3
|
|
|
4
4
|
import type { KakaoNaviAPI, KakaoNaviOption } from './index';
|
|
5
5
|
|
|
@@ -79,18 +79,26 @@ function getRpOption(v: KakaoNaviOption['rpOption']): number {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
const KakaoNavi: KakaoNaviAPI = {
|
|
82
|
+
isKakaoNaviInstalled: async () => false,
|
|
83
|
+
getNavigateUrl: unsupportedUrlBuilder,
|
|
84
|
+
getShareUrl: unsupportedUrlBuilder,
|
|
82
85
|
navigateTo: async ({ viaList, destination, option }) => {
|
|
83
86
|
kAssert(
|
|
84
87
|
viaList ? viaList.length <= 3 : true,
|
|
85
88
|
'[navigateTo] viaList length should equal or less then 3.',
|
|
86
89
|
);
|
|
87
90
|
|
|
91
|
+
if (!isMobileBrowser()) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
|
|
88
95
|
try {
|
|
89
96
|
Kakao.Navi.start(
|
|
90
97
|
filterNonNullishKeys({
|
|
91
98
|
name: destination.name,
|
|
92
99
|
x: destination.x,
|
|
93
100
|
y: destination.y,
|
|
101
|
+
rpflag: destination.rpflag,
|
|
94
102
|
coordType: option?.coordType?.toLowerCase(),
|
|
95
103
|
vehicleType: option?.vehicleType ? getVehicleType(option.vehicleType) : undefined,
|
|
96
104
|
rpOption: option?.rpOption ? getRpOption(option.rpOption) : undefined,
|
|
@@ -99,11 +107,14 @@ const KakaoNavi: KakaoNaviAPI = {
|
|
|
99
107
|
sY: option?.startY,
|
|
100
108
|
sAngle: option?.startAngle,
|
|
101
109
|
returnUri: option?.returnUri,
|
|
102
|
-
viaPoints: viaList?.map((v) =>
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
viaPoints: viaList?.map((v) =>
|
|
111
|
+
filterNonNullishKeys({
|
|
112
|
+
name: v.name,
|
|
113
|
+
x: v.x,
|
|
114
|
+
y: v.y,
|
|
115
|
+
rpflag: v.rpflag,
|
|
116
|
+
}),
|
|
117
|
+
),
|
|
107
118
|
}),
|
|
108
119
|
);
|
|
109
120
|
|
|
@@ -113,12 +124,17 @@ const KakaoNavi: KakaoNaviAPI = {
|
|
|
113
124
|
}
|
|
114
125
|
},
|
|
115
126
|
shareTo: async ({ destination, option }) => {
|
|
127
|
+
if (!isMobileBrowser()) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
|
|
116
131
|
try {
|
|
117
132
|
Kakao.Navi.share(
|
|
118
133
|
filterNonNullishKeys({
|
|
119
134
|
name: destination.name,
|
|
120
135
|
x: destination.x,
|
|
121
136
|
y: destination.y,
|
|
137
|
+
rpflag: destination.rpflag,
|
|
122
138
|
coordType: option?.coordType?.toLowerCase(),
|
|
123
139
|
}),
|
|
124
140
|
);
|
|
@@ -130,5 +146,19 @@ const KakaoNavi: KakaoNaviAPI = {
|
|
|
130
146
|
},
|
|
131
147
|
};
|
|
132
148
|
|
|
133
|
-
|
|
149
|
+
async function unsupportedUrlBuilder(): Promise<never> {
|
|
150
|
+
kCreateWebError({
|
|
151
|
+
code: 'Package-UnsupportedPlatform',
|
|
152
|
+
message: 'The Kakao JavaScript SDK does not provide Navi URL builders.',
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function isMobileBrowser() {
|
|
157
|
+
return (
|
|
158
|
+
/android|iphone|ipad|ipod/i.test(navigator.userAgent) ||
|
|
159
|
+
(/macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1)
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export const { isKakaoNaviInstalled, getNavigateUrl, getShareUrl, navigateTo, shareTo } = KakaoNavi;
|
|
134
164
|
export default KakaoNavi;
|
|
@@ -27,7 +27,20 @@ export interface KakaoNaviLocation {
|
|
|
27
27
|
rpflag?: string;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
export type KakaoNaviRouteParams = {
|
|
31
|
+
destination: KakaoNaviLocation;
|
|
32
|
+
option?: KakaoNaviOption;
|
|
33
|
+
viaList?: KakaoNaviLocation[];
|
|
34
|
+
};
|
|
35
|
+
|
|
30
36
|
export interface Spec extends TurboModule {
|
|
37
|
+
isKakaoNaviInstalled(): Promise<boolean>;
|
|
38
|
+
makeNaviUrl(
|
|
39
|
+
destination: UnsafeObject,
|
|
40
|
+
isShare: boolean,
|
|
41
|
+
option?: UnsafeObject,
|
|
42
|
+
viaList?: ReadonlyArray<UnsafeObject>,
|
|
43
|
+
): Promise<string>;
|
|
31
44
|
navigateOrShareTo(
|
|
32
45
|
destination: UnsafeObject,
|
|
33
46
|
option?: UnsafeObject,
|