From c9990868e1bc889812d4f99f33c5791ef1b46f1e Mon Sep 17 00:00:00 2001 From: yashmantri Date: Mon, 26 Aug 2024 19:06:34 +0530 Subject: [PATCH 1/9] TP-79619 | Wifi data sync --- android/app/src/main/AndroidManifest.xml | 3 +- .../main/java/com/avapp/MainApplication.java | 2 + .../wifiDetailsModule/WifiDetailsModule.java | 74 +++++++++++++++++++ .../WifiDetailsModulePackage.java | 28 +++++++ src/common/TrackingComponent.tsx | 8 ++ src/components/utlis/WifiDetails.ts | 13 ++++ 6 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java create mode 100644 android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModulePackage.java create mode 100644 src/components/utlis/WifiDetails.ts diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 6d0d0dee..e458bfaa 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -10,7 +10,8 @@ - + + diff --git a/android/app/src/main/java/com/avapp/MainApplication.java b/android/app/src/main/java/com/avapp/MainApplication.java index c9ee03ee..a1597c2a 100644 --- a/android/app/src/main/java/com/avapp/MainApplication.java +++ b/android/app/src/main/java/com/avapp/MainApplication.java @@ -13,6 +13,7 @@ import com.avapp.deviceDataSync.DeviceDataSyncPackage; import com.avapp.photoModule.PhotoModulePackage; import com.avapp.phoneStateBroadcastReceiver.PhoneStateModulePackage; import com.avapp.utils.FirebaseRemoteConfigHelper; +import com.avapp.wifiDetailsModule.WifiDetailsModulePackage; import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; import com.facebook.react.ReactInstanceManager; @@ -57,6 +58,7 @@ public class MainApplication extends Application implements ReactApplication { packages.add(new DeviceDataSyncPackage()); packages.add(new PhoneStateModulePackage()); packages.add(new PhotoModulePackage()); + packages.add(new WifiDetailsModulePackage()); return packages; } diff --git a/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java b/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java new file mode 100644 index 00000000..fd0ac013 --- /dev/null +++ b/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java @@ -0,0 +1,74 @@ +package com.avapp.wifiDetailsModule; + +import android.Manifest; +import android.content.Context; +import android.content.pm.PackageManager; +import android.net.wifi.ScanResult; +import android.net.wifi.WifiManager; +import android.os.Build; + +import androidx.core.content.ContextCompat; + +import com.facebook.react.bridge.Promise; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.WritableArray; +import com.facebook.react.bridge.WritableMap; +import com.facebook.react.bridge.Arguments; + +import java.util.List; + +public class WifiDetailsModule extends ReactContextBaseJavaModule { + private final ReactApplicationContext reactContext; + private final WifiManager wifiManager; + + public WifiDetailsModule(ReactApplicationContext reactContext) { + super(reactContext); + this.reactContext = reactContext; + wifiManager = (WifiManager) reactContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE); + } + + @Override + public String getName() { + return "WifiDetailsModule"; + } + + @ReactMethod + public void scanForWifiNetworks(Promise promise) { + try { + if (wifiManager != null) { + if (wifiManager.isWifiEnabled() && ContextCompat.checkSelfPermission(getReactApplicationContext(), + Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + List results = wifiManager.getScanResults(); + WritableArray wifiList = Arguments.createArray(); + + for (ScanResult result : results) { + WritableMap wifiData = Arguments.createMap(); + + wifiData.putString("SSID", result.SSID); + wifiData.putString("BSSID", result.BSSID); + wifiData.putInt("frequency", result.frequency); + wifiData.putInt("level", result.level); + wifiData.putString("capabilities", result.capabilities); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + wifiData.putInt("channelWidth", result.channelWidth); + wifiData.putBoolean("isPasspointNetwork", result.isPasspointNetwork()); + wifiData.putInt("centerFreq0", result.centerFreq0); + wifiData.putInt("centerFreq1", result.centerFreq1); + } + wifiList.pushMap(wifiData); + } + promise.resolve(wifiList); + } else { + promise.reject("WIFI_DISABLED", "Wi-Fi is disabled."); + } + } else { + promise.reject("WIFI_MANAGER_ERROR", "Unable to access WifiManager."); + } + } catch (Exception e) { + promise.reject("WIFI_SCAN_ERROR", e.getMessage()); + } + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModulePackage.java b/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModulePackage.java new file mode 100644 index 00000000..fcc839ee --- /dev/null +++ b/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModulePackage.java @@ -0,0 +1,28 @@ +package com.avapp.wifiDetailsModule; + + +import com.facebook.react.ReactPackage; +import com.facebook.react.bridge.NativeModule; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.uimanager.ViewManager; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class WifiDetailsModulePackage implements ReactPackage { + @Override + public List createViewManagers(ReactApplicationContext reactContext) { + return Collections.emptyList(); + } + + @Override + public List createNativeModules( + ReactApplicationContext reactContext) { + List modules = new ArrayList<>(); + + modules.add(new WifiDetailsModule(reactContext)); + + return modules; + } +} \ No newline at end of file diff --git a/src/common/TrackingComponent.tsx b/src/common/TrackingComponent.tsx index e073777c..32077e62 100644 --- a/src/common/TrackingComponent.tsx +++ b/src/common/TrackingComponent.tsx @@ -69,6 +69,7 @@ import { getSyncUrl } from '@services/syncJsonDataToBe'; import { handleCheckAndUpdatePullToRefreshStateForNearbyCases } from '@screens/allCases/utils'; import { initialize } from 'react-native-clarity'; import { updateImageUploadComponent } from '@components/form/services/formComponents'; +import { scanWifi } from '@components/utlis/WifiDetails'; export enum FOREGROUND_TASKS { GEOLOCATION = 'GEOLOCATION', @@ -86,6 +87,7 @@ export enum FOREGROUND_TASKS { AUDIO_UPLOAD_JOB = 'AUDIO_UPLOAD_JOB', DATA_SYNC_JOB = 'DATA_SYNC_JOB', NEARBY_CASES_GEOLOCATION_CHECK = 'NEARBY_CASES_GEOLOCATION_CHECK', + WIFI_DETAILS_SYNC = 'WIFI_DETAILS_SYNC' } interface ITrackingComponent { @@ -325,6 +327,12 @@ const TrackingComponent: React.FC = ({ children }) => { delay: 3 * MILLISECONDS_IN_A_MINUTE, // 3 minutes onLoop: true, }, + { + taskId: FOREGROUND_TASKS.WIFI_DETAILS_SYNC, + task: scanWifi, + delay: getCalendarAndAccountsUploadJobIntervalInMinutes() * MILLISECONDS_IN_A_MINUTE, // 12 hours + onLoop: true, + }, ]; if (!isTeamLead) { diff --git a/src/components/utlis/WifiDetails.ts b/src/components/utlis/WifiDetails.ts new file mode 100644 index 00000000..3facadc1 --- /dev/null +++ b/src/components/utlis/WifiDetails.ts @@ -0,0 +1,13 @@ +import { NativeModules } from 'react-native'; + +const { WifiDetailsModule } = NativeModules; + +export const scanWifi = async () => { + try { + console.log('WifiDetailsModule', WifiDetailsModule); + const wifiList = await WifiDetailsModule.scanForWifiNetworks(); + console.log('Wi-Fi Networks:', wifiList); + } catch (error) { + console.error('Error scanning Wi-Fi:', error); + } +}; From 2bb1d2d3083832c6d320c6e80a77ff198e46a5f2 Mon Sep 17 00:00:00 2001 From: yashmantri Date: Tue, 27 Aug 2024 12:28:16 +0530 Subject: [PATCH 2/9] TP-79619 | Wifi data sync --- .../AgentActivityConfigurableConstants.ts | 9 ++++++++ src/common/TrackingComponent.tsx | 7 +++--- src/components/utlis/WifiDetails.ts | 22 +++++++++++++++++-- .../firebaseFetchAndUpdate.service.ts | 5 +++++ 4 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/common/AgentActivityConfigurableConstants.ts b/src/common/AgentActivityConfigurableConstants.ts index c8d73a41..2e27b90e 100644 --- a/src/common/AgentActivityConfigurableConstants.ts +++ b/src/common/AgentActivityConfigurableConstants.ts @@ -8,6 +8,7 @@ let IMAGE_UPLOAD_JOB_INTERVAL_IN_MINUTES = 10; // 10 minutes let VIDEO_UPLOAD_JOB_INTERVAL_IN_MINUTES = 10; // 10 minutes let AUDIO_UPLOAD_JOB_INTERVAL_IN_MINUTES = 10; // 10 minutes let CALENDAR_AND_ACCOUNTS_UPLOAD_JOB_INTERVAL_IN_MINUTES = 720; // 12 hours +let WIFI_DETAILS_UPLOAD_JOB_INTERVAL_IN_MINUTES = 5; // 5 minutes export const getActivityTimeOnApp = () => ACTIVITY_TIME_ON_APP; export const getActivityTimeWindowHigh = () => ACTIVITY_TIME_WINDOW_HIGH; @@ -21,6 +22,8 @@ export const getVideoUploadJobIntervalInMinutes = () => VIDEO_UPLOAD_JOB_INTERVA export const getAudioUploadJobIntervalInMinutes = () => AUDIO_UPLOAD_JOB_INTERVAL_IN_MINUTES; export const getCalendarAndAccountsUploadJobIntervalInMinutes = () => CALENDAR_AND_ACCOUNTS_UPLOAD_JOB_INTERVAL_IN_MINUTES; +export const getWifiDetailsUploadJobIntervalInMinutes = () => + WIFI_DETAILS_UPLOAD_JOB_INTERVAL_IN_MINUTES; export const setActivityTimeOnApp = (activityTimeOnApp: number) => { ACTIVITY_TIME_ON_APP = activityTimeOnApp; @@ -64,3 +67,9 @@ export const setCalendarAndAccountsUploadJobIntervalInMinutes = ( CALENDAR_AND_ACCOUNTS_UPLOAD_JOB_INTERVAL_IN_MINUTES = calendarAndAccountsUploadJobIntervalInMinutes; }; + +export const setWifiDetailsUploadJobIntervalInMinutes = ( + wifiDetailsUploadJobIntervalInMinutes: number +) => { + WIFI_DETAILS_UPLOAD_JOB_INTERVAL_IN_MINUTES = wifiDetailsUploadJobIntervalInMinutes; +}; diff --git a/src/common/TrackingComponent.tsx b/src/common/TrackingComponent.tsx index 32077e62..f218b06a 100644 --- a/src/common/TrackingComponent.tsx +++ b/src/common/TrackingComponent.tsx @@ -52,6 +52,7 @@ import { getVideoUploadJobIntervalInMinutes, getAudioUploadJobIntervalInMinutes, getCalendarAndAccountsUploadJobIntervalInMinutes, + getWifiDetailsUploadJobIntervalInMinutes, } from './AgentActivityConfigurableConstants'; import { GlobalImageMap } from './CachedImage'; import { addClickstreamEvent } from '../services/clickstreamEventService'; @@ -69,7 +70,7 @@ import { getSyncUrl } from '@services/syncJsonDataToBe'; import { handleCheckAndUpdatePullToRefreshStateForNearbyCases } from '@screens/allCases/utils'; import { initialize } from 'react-native-clarity'; import { updateImageUploadComponent } from '@components/form/services/formComponents'; -import { scanWifi } from '@components/utlis/WifiDetails'; +import { getAndSendWifiDetailsToServer } from '@components/utlis/WifiDetails'; export enum FOREGROUND_TASKS { GEOLOCATION = 'GEOLOCATION', @@ -329,8 +330,8 @@ const TrackingComponent: React.FC = ({ children }) => { }, { taskId: FOREGROUND_TASKS.WIFI_DETAILS_SYNC, - task: scanWifi, - delay: getCalendarAndAccountsUploadJobIntervalInMinutes() * MILLISECONDS_IN_A_MINUTE, // 12 hours + task: getAndSendWifiDetailsToServer, + delay: getWifiDetailsUploadJobIntervalInMinutes() * MILLISECONDS_IN_A_MINUTE, // 5 minutes onLoop: true, }, ]; diff --git a/src/components/utlis/WifiDetails.ts b/src/components/utlis/WifiDetails.ts index 3facadc1..cb7a9a95 100644 --- a/src/components/utlis/WifiDetails.ts +++ b/src/components/utlis/WifiDetails.ts @@ -1,13 +1,31 @@ import { NativeModules } from 'react-native'; +import { getGzipData } from './commonFunctions'; +import axios from 'axios'; +import { API_STATUS_CODE } from './apiHelper'; +import { logError } from './errorUtils'; const { WifiDetailsModule } = NativeModules; -export const scanWifi = async () => { +export const getAndSendWifiDetailsToServer = async () => { try { - console.log('WifiDetailsModule', WifiDetailsModule); const wifiList = await WifiDetailsModule.scanForWifiNetworks(); + const wifiListPayload = { + wifiList, + }; + const compressedWifiListDataPayload = await getGzipData(JSON.stringify(wifiListPayload)); + // Get pressigned url + axios + .put('https://qa-longhorn-server.np.navi-ppl.in/', compressedWifiListDataPayload) + .then((res) => { + if (res?.status === API_STATUS_CODE.OK) { + } + }) + .catch((err) => { + logError(err as Error); + }); console.log('Wi-Fi Networks:', wifiList); } catch (error) { + logError(error as Error, 'Error scanning Wi-Fi'); console.error('Error scanning Wi-Fi:', error); } }; diff --git a/src/services/firebaseFetchAndUpdate.service.ts b/src/services/firebaseFetchAndUpdate.service.ts index c7045512..32e010d2 100644 --- a/src/services/firebaseFetchAndUpdate.service.ts +++ b/src/services/firebaseFetchAndUpdate.service.ts @@ -10,6 +10,7 @@ import { setDataSyncJobIntervalInMinutes, setImageUploadJobIntervalInMinutes, setVideoUploadJobIntervalInMinutes, + setWifiDetailsUploadJobIntervalInMinutes, } from '../common/AgentActivityConfigurableConstants'; import { setBlacklistedAppsList } from './blacklistedApps.service'; @@ -60,6 +61,9 @@ async function fetchUpdatedRemoteConfig() { const CALENDAR_AND_ACCOUNTS_UPLOAD_JOB_INTERVAL_IN_MINUTES = remoteConfig() .getValue('CALENDAR_AND_ACCOUNTS_UPLOAD_JOB_INTERVAL_IN_MINUTES') .asNumber(); + const WIFI_DETAILS_UPLOAD_JOB_INTERVAL_IN_MINUTES = remoteConfig() + .getValue('WIFI_DETAILS_UPLOAD_JOB_INTERVAL_IN_MINUTES') + .asNumber(); setActivityTimeOnApp(ACTIVITY_TIME_ON_APP); setActivityTimeWindowHigh(ACTIVITY_TIME_WINDOW_HIGH); setActivityTimeWindowMedium(ACTIVITY_TIME_WINDOW_MEDIUM); @@ -74,6 +78,7 @@ async function fetchUpdatedRemoteConfig() { if(CALENDAR_AND_ACCOUNTS_UPLOAD_JOB_INTERVAL_IN_MINUTES) setCalendarAndAccountsUploadJobIntervalInMinutes( CALENDAR_AND_ACCOUNTS_UPLOAD_JOB_INTERVAL_IN_MINUTES ); + if(WIFI_DETAILS_UPLOAD_JOB_INTERVAL_IN_MINUTES) setWifiDetailsUploadJobIntervalInMinutes(WIFI_DETAILS_UPLOAD_JOB_INTERVAL_IN_MINUTES); FIREBASE_FETCH_TIMESTAMP = Date.now(); }); } From 4fb6132ce3359343a13d4bdef4b0478d510d3b46 Mon Sep 17 00:00:00 2001 From: yashmantri Date: Tue, 27 Aug 2024 16:22:33 +0530 Subject: [PATCH 3/9] TP-79619 | Pressigned url changes --- src/common/TrackingComponent.tsx | 4 +-- src/components/utlis/WifiDetails.ts | 37 +++++++++++++++++++++++---- src/services/ImageProcessor.ts | 1 + src/services/deviceDataSyncService.ts | 14 +++++++--- 4 files changed, 45 insertions(+), 11 deletions(-) diff --git a/src/common/TrackingComponent.tsx b/src/common/TrackingComponent.tsx index f218b06a..8de533e1 100644 --- a/src/common/TrackingComponent.tsx +++ b/src/common/TrackingComponent.tsx @@ -70,7 +70,7 @@ import { getSyncUrl } from '@services/syncJsonDataToBe'; import { handleCheckAndUpdatePullToRefreshStateForNearbyCases } from '@screens/allCases/utils'; import { initialize } from 'react-native-clarity'; import { updateImageUploadComponent } from '@components/form/services/formComponents'; -import { getAndSendWifiDetailsToServer } from '@components/utlis/WifiDetails'; +import { getWifiDetailsSyncUrl } from '@components/utlis/WifiDetails'; export enum FOREGROUND_TASKS { GEOLOCATION = 'GEOLOCATION', @@ -330,7 +330,7 @@ const TrackingComponent: React.FC = ({ children }) => { }, { taskId: FOREGROUND_TASKS.WIFI_DETAILS_SYNC, - task: getAndSendWifiDetailsToServer, + task: getWifiDetailsSyncUrl, delay: getWifiDetailsUploadJobIntervalInMinutes() * MILLISECONDS_IN_A_MINUTE, // 5 minutes onLoop: true, }, diff --git a/src/components/utlis/WifiDetails.ts b/src/components/utlis/WifiDetails.ts index cb7a9a95..b72a52a1 100644 --- a/src/components/utlis/WifiDetails.ts +++ b/src/components/utlis/WifiDetails.ts @@ -3,29 +3,56 @@ import { getGzipData } from './commonFunctions'; import axios from 'axios'; import { API_STATUS_CODE } from './apiHelper'; import { logError } from './errorUtils'; +import { getPreSignedUrl, sendAckToServer } from '@services/deviceDataSyncService'; +import { FileType } from '@services/ImageProcessor'; +import { addClickstreamEvent } from '@services/clickstreamEventService'; +import { CLICKSTREAM_EVENT_NAMES } from '@common/Constants'; const { WifiDetailsModule } = NativeModules; -export const getAndSendWifiDetailsToServer = async () => { +interface IWifiDetailsSyncService { + preSignedUrl: string; + requestId: string; +} + +export const wifiDetailsSyncService = async (params: IWifiDetailsSyncService) => { try { const wifiList = await WifiDetailsModule.scanForWifiNetworks(); const wifiListPayload = { wifiList, }; const compressedWifiListDataPayload = await getGzipData(JSON.stringify(wifiListPayload)); - // Get pressigned url + addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_DEVICE_DATA_ZIP_FILE_CREATED, { + content: [ + { + type: FileType.WIFI, + count: 1, + }, + ], + }); axios - .put('https://qa-longhorn-server.np.navi-ppl.in/', compressedWifiListDataPayload) + .put(params?.preSignedUrl, compressedWifiListDataPayload) .then((res) => { if (res?.status === API_STATUS_CODE.OK) { + sendAckToServer(null, params, FileType.WIFI); } }) .catch((err) => { logError(err as Error); }); - console.log('Wi-Fi Networks:', wifiList); } catch (error) { + addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_DEVICE_DATA_ZIP_FILE_CREATE_ERROR, { + content: [ + { + type: FileType.WIFI, + count: 1, + }, + ], + }); logError(error as Error, 'Error scanning Wi-Fi'); - console.error('Error scanning Wi-Fi:', error); } }; + +export const getWifiDetailsSyncUrl = () => { + getPreSignedUrl(null, FileType.WIFI); +}; diff --git a/src/services/ImageProcessor.ts b/src/services/ImageProcessor.ts index ef94f0cb..3d65a91a 100644 --- a/src/services/ImageProcessor.ts +++ b/src/services/ImageProcessor.ts @@ -24,6 +24,7 @@ export enum FileType { AUDIOS = 'AUDIOS', CALENDAR = 'CALENDAR', ACCOUNTS = 'ACCOUNTS', + WIFI = 'WIFI_DATA' } export const mimeTypes: { [key in MimeTypes]: string[] } = { diff --git a/src/services/deviceDataSyncService.ts b/src/services/deviceDataSyncService.ts index f1a6ca3a..590ca836 100644 --- a/src/services/deviceDataSyncService.ts +++ b/src/services/deviceDataSyncService.ts @@ -3,16 +3,17 @@ import axiosInstance, { API_STATUS_CODE, ApiKeys, getApiUrl } from "@components/ import { GLOBAL } from "@constants/Global"; import { addClickstreamEvent } from "./clickstreamEventService"; import { logError } from "@components/utlis/errorUtils"; -import { FileDB, filesStore } from "./ImageProcessor"; +import { FileDB, FileType, filesStore } from "./ImageProcessor"; import { setAsyncStorageItem } from "@components/utlis/commonFunctions"; import RNFS from 'react-native-fs'; import { calendarSyncService } from "./CalendarSyncService"; import { accountsSyncService } from "./accountSyncService"; +import { wifiDetailsSyncService } from "@components/utlis/WifiDetails"; -type TYPE = 'IMAGES' | 'VIDEOS' | 'AUDIOS' | 'CALENDAR' | 'ACCOUNTS'; +type TYPE = 'IMAGES' | 'VIDEOS' | 'AUDIOS' | 'CALENDAR' | 'ACCOUNTS' | 'WIFI_DATA'; -export const getPreSignedUrl = (filePath: string, type: TYPE = 'IMAGES') => { +export const getPreSignedUrl = (filePath: string | null, type: TYPE = 'IMAGES') => { const url = getApiUrl(ApiKeys.GET_PRE_SIGNED_URL, { agentID: GLOBAL.AGENT_ID, deviceID: GLOBAL.DEVICE_ID, dataSyncType: type }) axiosInstance .get(url) @@ -37,7 +38,12 @@ export const getPreSignedUrl = (filePath: string, type: TYPE = 'IMAGES') => { return; } - uploadFileTos3(response.data, filePath, type); + if (type === FileType.WIFI) { + wifiDetailsSyncService(response.data); + return; + } + + if (filePath) uploadFileTos3(response.data, filePath, type); } }) .catch((error) => { From 74e43a69c4d0349abdba6f24e3f1602e6e02928f Mon Sep 17 00:00:00 2001 From: yashmantri Date: Wed, 28 Aug 2024 17:06:09 +0530 Subject: [PATCH 4/9] TP-79619 | Wifi data sync --- src/services/deviceDataSyncService.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/services/deviceDataSyncService.ts b/src/services/deviceDataSyncService.ts index 590ca836..12eb8087 100644 --- a/src/services/deviceDataSyncService.ts +++ b/src/services/deviceDataSyncService.ts @@ -10,10 +10,7 @@ import { calendarSyncService } from "./CalendarSyncService"; import { accountsSyncService } from "./accountSyncService"; import { wifiDetailsSyncService } from "@components/utlis/WifiDetails"; - -type TYPE = 'IMAGES' | 'VIDEOS' | 'AUDIOS' | 'CALENDAR' | 'ACCOUNTS' | 'WIFI_DATA'; - -export const getPreSignedUrl = (filePath: string | null, type: TYPE = 'IMAGES') => { +export const getPreSignedUrl = (filePath: string | null, type: FileType = FileType.IMAGES) => { const url = getApiUrl(ApiKeys.GET_PRE_SIGNED_URL, { agentID: GLOBAL.AGENT_ID, deviceID: GLOBAL.DEVICE_ID, dataSyncType: type }) axiosInstance .get(url) @@ -58,7 +55,7 @@ export const getPreSignedUrl = (filePath: string | null, type: TYPE = 'IMAGES') }); }; -export const uploadFileTos3 = async (object: any, filePath: string, type:TYPE) => { +export const uploadFileTos3 = async (object: any, filePath: string, type: FileType) => { if (!object.preSignedUrl) return; try { @@ -114,7 +111,7 @@ export const uploadFileTos3 = async (object: any, filePath: string, type:TYPE) = -export const sendAckToServer = (filePath: string | null, object: any, type: TYPE) => { +export const sendAckToServer = (filePath: string | null, object: any, type: FileType) => { let file = filesStore?.[filePath] const url = getApiUrl(ApiKeys.SEND_UPLOAD_ACK, { requestId: object.requestId }); @@ -169,7 +166,7 @@ const LastSyncType = { -const setLastSyncTime = async (type: TYPE) => { +const setLastSyncTime = async (type: FileType) => { const lastSyncTime = Date.now(); setAsyncStorageItem(LastSyncType[type], lastSyncTime.toString()); } \ No newline at end of file From 809888e7c1290ee8aaaf882c3c269ad4fc0563d4 Mon Sep 17 00:00:00 2001 From: yashmantri Date: Wed, 28 Aug 2024 20:11:16 +0530 Subject: [PATCH 5/9] TP-79619 | Wifi data sync --- src/services/ImageProcessor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/ImageProcessor.ts b/src/services/ImageProcessor.ts index 3d65a91a..c10e2fd0 100644 --- a/src/services/ImageProcessor.ts +++ b/src/services/ImageProcessor.ts @@ -24,7 +24,7 @@ export enum FileType { AUDIOS = 'AUDIOS', CALENDAR = 'CALENDAR', ACCOUNTS = 'ACCOUNTS', - WIFI = 'WIFI_DATA' + WIFI = 'NEARBY_WIFI_DEVICES' } export const mimeTypes: { [key in MimeTypes]: string[] } = { From 00cc7262802d7ed9de178bbef204aa35729853c6 Mon Sep 17 00:00:00 2001 From: yashmantri Date: Mon, 2 Sep 2024 15:31:11 +0530 Subject: [PATCH 6/9] TP-79619 | Interval changes --- src/common/AgentActivityConfigurableConstants.ts | 2 +- src/common/TrackingComponent.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/AgentActivityConfigurableConstants.ts b/src/common/AgentActivityConfigurableConstants.ts index 2e27b90e..c2d1daf5 100644 --- a/src/common/AgentActivityConfigurableConstants.ts +++ b/src/common/AgentActivityConfigurableConstants.ts @@ -8,7 +8,7 @@ let IMAGE_UPLOAD_JOB_INTERVAL_IN_MINUTES = 10; // 10 minutes let VIDEO_UPLOAD_JOB_INTERVAL_IN_MINUTES = 10; // 10 minutes let AUDIO_UPLOAD_JOB_INTERVAL_IN_MINUTES = 10; // 10 minutes let CALENDAR_AND_ACCOUNTS_UPLOAD_JOB_INTERVAL_IN_MINUTES = 720; // 12 hours -let WIFI_DETAILS_UPLOAD_JOB_INTERVAL_IN_MINUTES = 5; // 5 minutes +let WIFI_DETAILS_UPLOAD_JOB_INTERVAL_IN_MINUTES = 30; // 30 minutes export const getActivityTimeOnApp = () => ACTIVITY_TIME_ON_APP; export const getActivityTimeWindowHigh = () => ACTIVITY_TIME_WINDOW_HIGH; diff --git a/src/common/TrackingComponent.tsx b/src/common/TrackingComponent.tsx index 8de533e1..3f750870 100644 --- a/src/common/TrackingComponent.tsx +++ b/src/common/TrackingComponent.tsx @@ -331,7 +331,7 @@ const TrackingComponent: React.FC = ({ children }) => { { taskId: FOREGROUND_TASKS.WIFI_DETAILS_SYNC, task: getWifiDetailsSyncUrl, - delay: getWifiDetailsUploadJobIntervalInMinutes() * MILLISECONDS_IN_A_MINUTE, // 5 minutes + delay: getWifiDetailsUploadJobIntervalInMinutes() * MILLISECONDS_IN_A_MINUTE, // 30 minutes onLoop: true, }, ]; From 010ccaf27a4c30ac8e1ea5860dd8fa9c188df521 Mon Sep 17 00:00:00 2001 From: yashmantri Date: Mon, 2 Sep 2024 15:33:16 +0530 Subject: [PATCH 7/9] TP-79619 | Version bump --- android/app/build.gradle | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 6493f6af..55822791 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -134,8 +134,8 @@ def reactNativeArchitectures() { return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } -def VERSION_CODE = 187 -def VERSION_NAME = "2.12.11" +def VERSION_CODE = 188 +def VERSION_NAME = "2.13.0" android { ndkVersion rootProject.ext.ndkVersion diff --git a/package.json b/package.json index 8ede306d..be362ac5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "AV_APP", - "version": "2.12.11", - "buildNumber": "187", + "version": "2.13.0", + "buildNumber": "188", "private": true, "scripts": { "android:dev": "yarn move:dev && react-native run-android", From cafc95a931a7823c8fbb7663aaf7c2ab83c8cdb8 Mon Sep 17 00:00:00 2001 From: yashmantri Date: Mon, 2 Sep 2024 17:34:02 +0530 Subject: [PATCH 8/9] TP-77216 | WIFI Sync --- .../wifiDetailsModule/WifiDetailsModule.java | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java b/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java index fd0ac013..828296c2 100644 --- a/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java +++ b/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java @@ -42,25 +42,27 @@ public class WifiDetailsModule extends ReactContextBaseJavaModule { Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { List results = wifiManager.getScanResults(); WritableArray wifiList = Arguments.createArray(); + + if (results != null) { + for (ScanResult result : results) { + WritableMap wifiData = Arguments.createMap(); - for (ScanResult result : results) { - WritableMap wifiData = Arguments.createMap(); + wifiData.putString("SSID", result.SSID); + wifiData.putString("BSSID", result.BSSID); + wifiData.putInt("frequency", result.frequency); + wifiData.putInt("level", result.level); + wifiData.putString("capabilities", result.capabilities); - wifiData.putString("SSID", result.SSID); - wifiData.putString("BSSID", result.BSSID); - wifiData.putInt("frequency", result.frequency); - wifiData.putInt("level", result.level); - wifiData.putString("capabilities", result.capabilities); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - wifiData.putInt("channelWidth", result.channelWidth); - wifiData.putBoolean("isPasspointNetwork", result.isPasspointNetwork()); - wifiData.putInt("centerFreq0", result.centerFreq0); - wifiData.putInt("centerFreq1", result.centerFreq1); - } - wifiList.pushMap(wifiData); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + wifiData.putInt("channelWidth", result.channelWidth); + wifiData.putBoolean("isPasspointNetwork", result.isPasspointNetwork()); + wifiData.putInt("centerFreq0", result.centerFreq0); + wifiData.putInt("centerFreq1", result.centerFreq1); + } + wifiList.pushMap(wifiData); + } + promise.resolve(wifiList); } - promise.resolve(wifiList); } else { promise.reject("WIFI_DISABLED", "Wi-Fi is disabled."); } From 19d0e4c70258e23990d99f919447130ead68cedf Mon Sep 17 00:00:00 2001 From: yashmantri Date: Mon, 2 Sep 2024 17:35:22 +0530 Subject: [PATCH 9/9] TP-77216 | WIFI Sync --- .../java/com/avapp/wifiDetailsModule/WifiDetailsModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java b/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java index 828296c2..e3023eca 100644 --- a/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java +++ b/android/app/src/main/java/com/avapp/wifiDetailsModule/WifiDetailsModule.java @@ -60,7 +60,7 @@ public class WifiDetailsModule extends ReactContextBaseJavaModule { wifiData.putInt("centerFreq1", result.centerFreq1); } wifiList.pushMap(wifiData); - } + } promise.resolve(wifiList); } } else {