@react-native-kakao/navi
Version:
React Native Kakao Navi SDK
73 lines (63 loc) • 1.82 kB
text/typescript
import { NativeModules, Platform } from 'react-native';
import type { KakaoNaviLocation, KakaoNaviOption, Spec } from './spec/NativeKakaoNavi';
const LINKING_ERROR =
"The package '@react-native-kakao/navi' doesn't seem to be linked. Make sure: \n\n" +
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
'- You rebuilt the app after installing the package\n' +
'- You are not using Expo Go\n';
const isTurboModuleEnabled = global.__turboModuleProxy != null;
const Module = isTurboModuleEnabled
? require('./spec/NativeKakaoNavi').default
: NativeModules.RNCKakaoNavi;
const Native: Spec = Module
? Module
: new Proxy(
{},
{
get() {
throw new Error(LINKING_ERROR);
},
},
);
export type { KakaoNaviLocation, KakaoNaviOption } from './spec/NativeKakaoNavi';
export function navigateTo({
destination,
option,
viaList,
openWebInstallUrlIfNaviAppNotAvailable,
}: {
destination: KakaoNaviLocation;
option?: KakaoNaviOption;
viaList?: KakaoNaviLocation[];
openWebInstallUrlIfNaviAppNotAvailable?: boolean;
}): Promise<boolean> {
return Native.navigateOrShareTo(
destination,
option,
viaList,
openWebInstallUrlIfNaviAppNotAvailable ?? true,
false,
);
}
export function shareTo({
destination,
option,
viaList,
openWebInstallUrlIfNaviAppNotAvailable,
}: {
destination: KakaoNaviLocation;
option?: KakaoNaviOption;
viaList?: KakaoNaviLocation[];
openWebInstallUrlIfNaviAppNotAvailable?: boolean;
}): Promise<boolean> {
return Native.navigateOrShareTo(
destination,
option,
viaList,
openWebInstallUrlIfNaviAppNotAvailable ?? true,
true,
);
}
const KakaoNavi = { navigateTo, shareTo };
export default KakaoNavi;
export type KakaoNaviAPI = typeof KakaoNavi;