diff --git a/android/app/src/main/java/com/avapp/DeviceUtilsModule.java b/android/app/src/main/java/com/avapp/DeviceUtilsModule.java
index 693f5442..7d75e7f1 100644
--- a/android/app/src/main/java/com/avapp/DeviceUtilsModule.java
+++ b/android/app/src/main/java/com/avapp/DeviceUtilsModule.java
@@ -119,13 +119,13 @@ public class DeviceUtilsModule extends ReactContextBaseJavaModule {
for (PackageInfo packageInfo : installedPackages) {
final PackageManager pm = RNContext.getApplicationContext().getPackageManager();
- ApplicationInfo ai;
+ ApplicationInfo appsInstalled;
try {
- ai = pm.getApplicationInfo( packageInfo.packageName, 0);
+ appsInstalled = pm.getApplicationInfo( packageInfo.packageName, 0);
} catch (final PackageManager.NameNotFoundException e) {
- ai = null;
+ appsInstalled = null;
}
- final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");
+ final String applicationName = (String) (appsInstalled != null ? pm.getApplicationLabel(appsInstalled) : "(unknown)");
JSONObject mainObject = new JSONObject();
JSONObject appDetails = new JSONObject();
diff --git a/src/common/BlockerScreen.tsx b/src/common/BlockerScreen.tsx
index 1adfb639..be5b8698 100644
--- a/src/common/BlockerScreen.tsx
+++ b/src/common/BlockerScreen.tsx
@@ -5,13 +5,15 @@ import { RootState } from '../store/store';
import { UninstallInformation } from '../reducer/metadataSlice';
import { getAppVersion } from '../components/utlis/commonFunctions';
import BlockerInstructions from './BlockerInstructions';
-import { BLOCKER_SCREEN_DATA } from './Constants';
+import { BLOCKER_SCREEN_DATA, CLICKSTREAM_EVENT_NAMES } from './Constants';
import { useAppDispatch, useAppSelector } from '../hooks';
import { setIsDeviceLocationEnabled } from '../reducer/foregroundServiceSlice';
import { toast } from '../../RN-UI-LIB/src/components/toast';
import { locationEnabled } from '../components/utlis/DeviceUtils';
import BlockerScreenApps from '@screens/permissions/BlockerScreenApps';
-import { Apps } from '@services/blacklistedApps.service';
+import handleBlacklistedAppsForBlockingCosmos, { Apps } from '@services/blacklistedApps.service';
+import { addClickstreamEvent } from '@services/clickstreamEventService';
+import { setBlacklistedAppsInstalledData } from '@reducers/blacklistedAppsInstalledSlice';
interface IBlockerScreen {
children?: ReactNode;
@@ -35,7 +37,7 @@ const BlockerScreen = (props: IBlockerScreen) => {
});
const blacklistedAppsInstalled: Apps[] = useSelector((state: RootState) => {
- return state.blacklistAppsInstalled.blacklistedAppsInstalled;
+ return state?.blacklistAppsInstalled?.blacklistedAppsInstalled;
});
function compareSemverVersions(a: string, b: string) {
@@ -60,6 +62,14 @@ const BlockerScreen = (props: IBlockerScreen) => {
setForceReinstallData(undefined);
}, [JSON.stringify(forceUninstallData || {})]);
+ React.useEffect(() => {
+ handleBlacklistedAppsForBlockingCosmos().then((blacklistedAppsInstalled) =>
+ dispatch(
+ setBlacklistedAppsInstalledData({ blacklistedAppsInstalled: blacklistedAppsInstalled })
+ )
+ );
+ }, [blacklistedAppsInstalled]);
+
const handleDownloadNewApp = () => {
if (forceReinstallData?.reinstall_endpoint) {
openApkDownloadLink(forceReinstallData?.reinstall_endpoint);
@@ -133,6 +143,7 @@ const BlockerScreen = (props: IBlockerScreen) => {
}
if (blacklistedAppsInstalled?.length > 0) {
+ addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_BLOCKER_SCREEN_LOADED_FOR_BLACKLISTED_APPS);
return ;
}
diff --git a/src/common/Constants.ts b/src/common/Constants.ts
index 48b0d6d2..4f347b30 100644
--- a/src/common/Constants.ts
+++ b/src/common/Constants.ts
@@ -630,6 +630,12 @@ export const CLICKSTREAM_EVENT_NAMES = {
name: 'FA_PERFORMANCE_DASHBOARD_BROKEN_PTP_CASES_LOAD',
description: 'Performance Dashboard Broken PTP Cases Load',
},
+
+ //Blocker Screen for blacklisted Apps
+ FA_BLOCKER_SCREEN_LOADED_FOR_BLACKLISTED_APPS: {
+ name: 'FA_BLOCKER_SCREEN_LOADED_FOR_BLACKLISTED_APPS',
+ description: 'Blocker screen loaded for blacklisted apps',
+ },
} as const;
export enum MimeType {
diff --git a/src/common/TrackingComponent.tsx b/src/common/TrackingComponent.tsx
index 27121b3c..dc355d6b 100644
--- a/src/common/TrackingComponent.tsx
+++ b/src/common/TrackingComponent.tsx
@@ -46,7 +46,10 @@ import { get } from 'react-hook-form';
import { addClickstreamEvent } from '../services/clickstreamEventService';
import { CLICKSTREAM_EVENT_NAMES } from './Constants';
import { setBlacklistedAppsInstalledData } from '@reducers/blacklistedAppsInstalledSlice';
-import handleBlacklistedAppsForBlockingCosmos from '@services/blacklistedApps.service';
+import handleBlacklistedAppsForBlockingCosmos, { Apps } from '@services/blacklistedApps.service';
+import fetchUpdatedRemoteConfig, {
+ FIREBASE_FETCH_TIMESTAMP,
+} from '@services/firebaseFetchAndUpdate.service';
export enum FOREGROUND_TASKS {
GEOLOCATION = 'GEOLOCATION',
@@ -56,6 +59,7 @@ export enum FOREGROUND_TASKS {
UPDATE_AGENT_ACTIVENESS = 'UPDATE_AGENT_ACTIVENESS',
UPDATE_AGENT_ACTIVITY = 'UPDATE_AGENT_ACTIVITY',
DELETE_CACHE = 'DELETE_CACHE',
+ FETCH_DATA_FROM_FIREBASE = 'FETCH_DATA_FROM_FIREBASE',
}
interface ITrackingComponent {
@@ -108,6 +112,14 @@ const TrackingComponent: React.FC = ({ children }) => {
const userActivityonApp: string =
(await getItem(StorageKeys.USER_ACTIVITY_ON_APP)) || AgentActivity.LOW;
+ let blacklistedAppsInstalledOnDevice: Apps[] = [];
+
+ await handleBlacklistedAppsForBlockingCosmos().then((blacklistedAppsInstalled) => {
+ if (blacklistedAppsInstalled.length > 0) {
+ blacklistedAppsInstalledOnDevice = blacklistedAppsInstalled;
+ }
+ });
+
const geolocation: IGeolocationPayload = {
latitude: location.latitude,
longitude: location.longitude,
@@ -115,6 +127,7 @@ const TrackingComponent: React.FC = ({ children }) => {
timestamp: Date.now(),
isActiveOnApp: Boolean(isActiveOnApp),
userActivityOnApp: String(userActivityonApp),
+ blacklistedAppsInstalled: blacklistedAppsInstalledOnDevice,
};
dispatch(setDeviceGeolocationsBuffer(geolocation));
dispatch(sendLocationAndActivenessToServer([geolocation]));
@@ -291,6 +304,16 @@ const TrackingComponent: React.FC = ({ children }) => {
});
};
+ const handleFetchUpdatedDataFromFirebase = async () => {
+ const currentTimestamp: number = Date.now();
+ if (
+ FIREBASE_FETCH_TIMESTAMP &&
+ currentTimestamp - FIREBASE_FETCH_TIMESTAMP > 15 * MILLISECONDS_IN_A_MINUTE
+ ) {
+ fetchUpdatedRemoteConfig();
+ }
+ };
+
const tasks: IForegroundTask[] = [
{
taskId: FOREGROUND_TASKS.TIME_SYNC,
@@ -322,6 +345,12 @@ const TrackingComponent: React.FC = ({ children }) => {
delay: DATA_SYNC_TIME_INTERVAL,
onLoop: true,
},
+ {
+ taskId: FOREGROUND_TASKS.FETCH_DATA_FROM_FIREBASE,
+ task: handleFetchUpdatedDataFromFirebase,
+ delay: 15 * MILLISECONDS_IN_A_MINUTE, // 15 minutes
+ onLoop: true,
+ },
];
if (!isTeamLead) {
diff --git a/src/hooks/capturingApi.ts b/src/hooks/capturingApi.ts
index 4c32cc1b..e411b9e6 100644
--- a/src/hooks/capturingApi.ts
+++ b/src/hooks/capturingApi.ts
@@ -6,6 +6,7 @@ import {
} from '../reducer/foregroundServiceSlice';
import { logError } from '../components/utlis/errorUtils';
import { toast } from '../../RN-UI-LIB/src/components/toast';
+import { Apps } from '@services/blacklistedApps.service';
export interface IGeolocationPayload {
latitude: number;
@@ -14,6 +15,7 @@ export interface IGeolocationPayload {
timestamp: number;
isActiveOnApp: boolean;
userActivityOnApp: string;
+ blacklistedAppsInstalled: Apps[];
}
export const sendLocationAndActivenessToServer =
diff --git a/src/screens/auth/AuthRouter.tsx b/src/screens/auth/AuthRouter.tsx
index 868f28b9..a5ae6d6d 100644
--- a/src/screens/auth/AuthRouter.tsx
+++ b/src/screens/auth/AuthRouter.tsx
@@ -108,7 +108,9 @@ const AuthRouter = () => {
) : (
-
+
+
+
);
};
diff --git a/src/services/firebaseFetchAndUpdate.service.ts b/src/services/firebaseFetchAndUpdate.service.ts
index 3d0278d0..524f654a 100644
--- a/src/services/firebaseFetchAndUpdate.service.ts
+++ b/src/services/firebaseFetchAndUpdate.service.ts
@@ -5,10 +5,9 @@ import {
setActivityTimeWindowMedium,
} from '../common/AgentActivityConfigurableConstants';
import { setBlacklistedAppsList } from '@common/BlacklistedAppsList';
-import handleBlacklistedAppsForBlockingCosmos from './blacklistedApps.service';
-// const FIREBASE_FETCH_TIME = 15 * 60;
-const FIREBASE_FETCH_TIME = 1;
+const FIREBASE_FETCH_TIME = 15 * 60;
+export let FIREBASE_FETCH_TIMESTAMP: number;
async function fetchUpdatedRemoteConfig() {
await remoteConfig().fetch(FIREBASE_FETCH_TIME); //15 minutes
remoteConfig()
@@ -36,6 +35,7 @@ async function fetchUpdatedRemoteConfig() {
setActivityTimeWindowHigh(ACTIVITY_TIME_WINDOW_HIGH);
setActivityTimeWindowMedium(ACTIVITY_TIME_WINDOW_MEDIUM);
setBlacklistedAppsList(BLACKLISTED_APPS);
+ FIREBASE_FETCH_TIMESTAMP = Date.now();
});
}