|
@@ -1,85 +0,0 @@
|
|
|
-// import * as TaskManager from 'expo-task-manager';
|
|
|
-import * as Location from 'expo-location';
|
|
|
-import axios from 'axios';
|
|
|
-import { storage, StoreType } from 'src/storage';
|
|
|
-import { Platform } from 'react-native';
|
|
|
-import { API_URL } from 'src/constants';
|
|
|
-import { API } from 'src/types';
|
|
|
-
|
|
|
-const LOCATION_TASK_NAME = 'BACKGROUND_LOCATION_TASK';
|
|
|
-
|
|
|
-// TaskManager.defineTask(LOCATION_TASK_NAME, async ({ data, error }) => {
|
|
|
-// if (error) {
|
|
|
-// console.error('[BackgroundLocation] Task error:', error);
|
|
|
-// return;
|
|
|
-// }
|
|
|
-// if (data) {
|
|
|
-// const { locations } = data as any;
|
|
|
-// if (locations && locations.length > 0) {
|
|
|
-// const { coords, timestamp } = locations[0];
|
|
|
-
|
|
|
-// console.log('[BackgroundLocation] New location:', coords);
|
|
|
-// const token = storage.get('token', StoreType.STRING);
|
|
|
-
|
|
|
-// if (!token) {
|
|
|
-// return;
|
|
|
-// }
|
|
|
-
|
|
|
-// try {
|
|
|
-// const response = await axios.postForm(
|
|
|
-// API_URL + '/' + API.UPDATE_LOCATION,
|
|
|
-// {
|
|
|
-// token,
|
|
|
-// lat: coords.latitude,
|
|
|
-// lng: coords.longitude,
|
|
|
-// background: LOCATION_TASK_NAME,
|
|
|
-// location_timestamp: timestamp
|
|
|
-// },
|
|
|
-// {
|
|
|
-// headers: {
|
|
|
-// Platform: Platform.OS
|
|
|
-// }
|
|
|
-// }
|
|
|
-// );
|
|
|
-// console.log('[BackgroundLocation] Location sent:', response.data);
|
|
|
-// } catch (sendError) {
|
|
|
-// console.error('[BackgroundLocation] Sending location failed:', sendError);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// console.log('[BackgroundLocation] TaskManager end');
|
|
|
-// });
|
|
|
-
|
|
|
-export const startBackgroundLocationUpdates = async () => {
|
|
|
- const hasStarted = await Location.hasStartedLocationUpdatesAsync(LOCATION_TASK_NAME);
|
|
|
- if (hasStarted) {
|
|
|
- console.log('[BackgroundLocation] Already started...');
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- await Location.startLocationUpdatesAsync(LOCATION_TASK_NAME, {
|
|
|
- accuracy: Location.Accuracy.Highest,
|
|
|
- // 10 minutes for Android
|
|
|
- timeInterval: 10 * 60 * 1000,
|
|
|
- showsBackgroundLocationIndicator: false,
|
|
|
- pausesUpdatesAutomatically: false,
|
|
|
- // banner on Android
|
|
|
- foregroundService: {
|
|
|
- notificationTitle: 'NomadMania tracking your location',
|
|
|
- notificationBody: 'Location is used in background every 10 minutes.',
|
|
|
- notificationColor: '#0F3F4F'
|
|
|
- },
|
|
|
- // iOS only
|
|
|
- activityType: Location.ActivityType.Other
|
|
|
- });
|
|
|
-
|
|
|
- console.log('[BackgroundLocation] Started task');
|
|
|
-};
|
|
|
-
|
|
|
-export const stopBackgroundLocationUpdates = async () => {
|
|
|
- const hasStarted = await Location.hasStartedLocationUpdatesAsync(LOCATION_TASK_NAME);
|
|
|
- if (hasStarted) {
|
|
|
- await Location.stopLocationUpdatesAsync(LOCATION_TASK_NAME);
|
|
|
- console.log('[BackgroundLocation] Stopped task');
|
|
|
- }
|
|
|
-};
|