UNPKG

@poilabs-dev/vd-navigation-sdk-plugin

Version:

Official Expo Config Plugin for integrating the Poilabs Visually Disabled Navigation SDK

116 lines (104 loc) 2.86 kB
import { NativeModules } from 'react-native'; import { requestPermissions, checkPermissions, checkBluetoothPermission } from './permission'; const { PoilabsVdNavigationModule } = NativeModules; export async function startPoilabsNavigation(config) { try { const { applicationId, applicationSecretKey, uniqueId, language = 'en', title = '', configUrl = null, } = config; if (!applicationId) { console.error('applicationId is required'); return false; } if (!applicationSecretKey) { console.error('applicationSecretKey is required'); return false; } if (!uniqueId) { console.error('uniqueId is required'); return false; } // Request necessary permissions const permissionsGranted = await requestPermissions(); if (!permissionsGranted) { console.error('Required permissions not granted'); return false; } // Initialize SDK if (PoilabsVdNavigationModule) { return await PoilabsVdNavigationModule.initialize( applicationId, applicationSecretKey, uniqueId, language, title, configUrl ); } else { console.error('PoilabsVdNavigationModule not found'); return false; } } catch (error) { console.error('Failed to initialize Poilabs SDK:', error); return false; } } /** * Show the Poilabs VD Navigation interface */ export async function showPoilabsVdNavigation() { try { if (PoilabsVdNavigationModule) { return await PoilabsVdNavigationModule.showPoilabsVdNavigation(); } else { console.error('PoilabsVdNavigationModule not found'); return false; } } catch (error) { console.error('Failed to start navigation:', error); return false; } } /** * Get the current user location */ export async function getUserLocation() { try { if (PoilabsVdNavigationModule) { return await PoilabsVdNavigationModule.getUserLocation(); } else { console.error('PoilabsVdNavigationModule not found'); return null; } } catch (error) { console.error('Failed to get user location:', error); return null; } } /** * Update the user's unique ID */ export async function updateUniqueId(uniqueId) { try { if (!uniqueId) { console.error('uniqueId is required'); return false; } if (PoilabsVdNavigationModule && PoilabsVdNavigationModule.updateUniqueId) { return await PoilabsVdNavigationModule.updateUniqueId(uniqueId); } else { console.error('updateUniqueId method not available'); return false; } } catch (error) { console.error('Failed to update unique ID:', error); return false; } } // Export permission helpers export { requestPermissions, checkPermissions, checkBluetoothPermission };