import { Capacitor } from '@capacitor/core'; import { Geolocation } from '@capacitor/geolocation'; function isNativePlatform() { if (typeof Capacitor?.isNativePlatform === 'function') { return Capacitor.isNativePlatform(); } const platform = typeof Capacitor?.getPlatform === 'function' ? Capacitor.getPlatform() : 'web'; return platform === 'android' || platform === 'ios'; } export async function resolveCurrentPosition() { if (isNativePlatform()) { const permissions = await Geolocation.requestPermissions(); const permissionState = permissions.location || permissions.coarseLocation || 'denied'; if (permissionState !== 'granted') { const error = new Error('geolocation_permission_denied'); error.code = 'geolocation_permission_denied'; throw error; } const result = await Geolocation.getCurrentPosition({ enableHighAccuracy: true, timeout: 15000, maximumAge: 0, }); return { latitude: result.coords.latitude, longitude: result.coords.longitude, }; } return await new Promise((resolve, reject) => { navigator.geolocation.getCurrentPosition((position) => { resolve({ latitude: position.coords.latitude, longitude: position.coords.longitude, }); }, (error) => { reject(error); }, { enableHighAccuracy: true, timeout: 15000, maximumAge: 0, }); }); }