/** * @format */ import { AppRegistry, Platform } from 'react-native'; import App from './App'; import { name as appName } from './app.json'; import database from '@react-native-firebase/database'; import { LogBox } from 'react-native'; import ReactNativeForegroundService from '@supersami/rn-foreground-service'; import notifee from '@notifee/react-native'; import { handleNotificationView, handlePushNotification } from '@hooks/useFCM/useFCM'; import messaging from '@react-native-firebase/messaging'; import CosmosForegroundService, { FOREGROUND_SERVICE_CONFIG, } from '@services/foregroundServices/foreground.service'; import axiosInstance, { ApiKeys, getApiUrl } from '@components/utlis/apiHelper'; import { StorageKeys } from '@interfaces/storageKeys'; import { AgentActivity } from '@interfaces/agentActivity'; import { FOREGROUND_TASKS } from '@common/TrackingComponent'; import { MILLISECONDS_IN_A_MINUTE } from '@rn-ui-lib/utils/common'; import Geolocation from 'react-native-geolocation-service'; import ForegroundService from '@supersami/rn-foreground-service'; import { getItem } from '@components/utlis/storageHelper'; import { AppState } from 'react-native'; import { logError } from '@components/utlis/errorUtils'; if (__DEV__) { LogBox.ignoreAllLogs(); } // TODO: Can use this code for starting fgs poc // const geolocationForegroundTask = async () => { // Geolocation.getCurrentPosition(async (position) => { // const { latitude, longitude, accuracy } = position.coords || {}; // if (!latitude || !longitude || !accuracy) return; // const isActiveOnApp = (await getItem(StorageKeys.IS_USER_ACTIVE)) || false; // const userActivityonApp = // (await getItem(StorageKeys.USER_ACTIVITY_ON_APP)) || AgentActivity.LOW; // const geolocation = [ // { // latitude, // longitude, // accuracy, // timestamp: Date.now(), // isActiveOnApp: Boolean(isActiveOnApp), // userActivityOnApp: String(userActivityonApp), // }, // ]; // axiosInstance.post(getApiUrl(ApiKeys.SEND_LOCATION), geolocation, { // headers: { // donotHandleError: 'true', // }, // }); // }); // }; // Background push notification handler messaging().setBackgroundMessageHandler(async (remoteMessage) => { const { data } = remoteMessage || {}; if (data?.payload) { try { const notification = JSON.parse(data.payload); if (notification?.showAsPn) { handlePushNotification(notification, true); } } catch (err) { logError(err, 'Error in parsing background push notification'); } // TODO: Try to start foreground service if not working. // const isForegroundServiceRunning = await ForegroundService.is_running(); // console.log('isForegroundServiceRunning::', isForegroundServiceRunning); // if (!isForegroundServiceRunning) { // ForegroundService.add_task(geolocationForegroundTask, { // delay: 6000, // onLoop: true, // taskId: FOREGROUND_TASKS.GEOLOCATION, // }); // ForegroundService.start(FOREGROUND_SERVICE_CONFIG); // } } }); notifee.onBackgroundEvent(async (event) => { handleNotificationView(event, true); }); database().setPersistenceEnabled(true); ReactNativeForegroundService.register(); AppRegistry.registerComponent(appName, () => App);