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 { 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 { return Native.navigateOrShareTo( destination, option, viaList, openWebInstallUrlIfNaviAppNotAvailable ?? true, true, ); } const KakaoNavi = { navigateTo, shareTo }; export default KakaoNavi; export type KakaoNaviAPI = typeof KakaoNavi;