diff --git a/App.tsx b/App.tsx index f59b24ab..4e3d18d2 100644 --- a/App.tsx +++ b/App.tsx @@ -38,7 +38,7 @@ import ErrorBoundary from './src/common/ErrorBoundary'; import { getPermissionsToRequest } from '@utils/PermissionUtils'; import ScreenshotBlocker from './src/components/utlis/ScreenshotBlocker'; import { setItem } from './src/components/utlis/storageHelper'; -import { ENV } from './src/constants/config'; +import { COSMOS_DIALER_PACKAGE_NAME, ENV } from './src/constants/config'; import AuthRouter from './src/screens/auth/AuthRouter'; import { type TDocumentObj } from '@screens/caseDetails/interface'; import Permissions from './src/screens/permissions/Permissions'; @@ -50,6 +50,7 @@ import CodePushLoadingModal, { CodePushLoadingModalRef } from './CodePushModal'; import { initSentry } from '@components/utlis/sentry'; import { AppStates } from '@interfaces/appStates'; import syncSelfCallData from '@services/syncSelfCallData'; +import { getDefaultCallingApp } from '@components/utlis/callModuleUtils'; if (!__DEV__) { initSentry(); @@ -97,6 +98,9 @@ function App() { const askForPermissions = async () => { const permissionsToRequest = await getPermissionsToRequest(); + const defaultCallingApp = await getDefaultCallingApp() === COSMOS_DIALER_PACKAGE_NAME; + + console.log('Default calling app:', defaultCallingApp); if (Platform.OS === 'android') { PermissionsAndroid.requestMultiple(permissionsToRequest) .then(async (result) => { @@ -107,7 +111,7 @@ function App() { break; } } - setPermissions(isAllPermissionsGranted); + setPermissions(isAllPermissionsGranted && defaultCallingApp); }) .catch((err) => { setPermissions(false); diff --git a/android/app/src/main/java/com/avapp/callModule/CallModule.java b/android/app/src/main/java/com/avapp/callModule/CallModule.java index 3ceaf1d5..ff600379 100644 --- a/android/app/src/main/java/com/avapp/callModule/CallModule.java +++ b/android/app/src/main/java/com/avapp/callModule/CallModule.java @@ -3,6 +3,7 @@ package com.avapp.callModule; import android.app.Activity; import android.content.Intent; import android.net.Uri; +import android.telecom.TelecomManager; import android.util.Log; import androidx.annotation.NonNull; @@ -161,6 +162,28 @@ public class CallModule extends ReactContextBaseJavaModule { makeCall(activity, recipient, exotelNumber); } + @ReactMethod + public void getDefaultCallingApp(Promise promise) { + try { + TelecomManager telecomManager = (TelecomManager) reactContext.getSystemService(Context.TELECOM_SERVICE); + if (telecomManager != null) { + String defaultDialer = telecomManager.getDefaultDialerPackage(); + if (defaultDialer != null) { + Log.d(TAG, "Default calling app: " + defaultDialer); + promise.resolve(defaultDialer); // Send default dialer package name to JS side + } else { + Log.d(TAG, "No default calling app found."); + promise.resolve(null); // No default dialer app + } + } else { + promise.reject("ERROR", "TelecomManager is not available."); + } + } catch (Exception e) { + Log.e(TAG, "Error retrieving default calling app", e); + promise.reject("ERROR", e); + } + } + private void makeCall(Activity activity, String recipient, String exotelNumber) { Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + pendingRecipient)); diff --git a/config/dev/config.js b/config/dev/config.js index 44c6f829..4a455082 100644 --- a/config/dev/config.js +++ b/config/dev/config.js @@ -8,4 +8,5 @@ export const APM_APP_NAME = 'cosmos-app'; export const APM_BASE_URL = 'https://dev-longhorn-portal.np.navi-tech.in/apm-events'; export const GOOGLE_SSO_CLIENT_ID = '60755663443-40k0fbrbbqv4ci4hrjlbrphab5fj387b.apps.googleusercontent.com'; -export const MS_CLARITY_PROJECT_ID = ''; \ No newline at end of file +export const MS_CLARITY_PROJECT_ID = ''; +export const COSMOS_DIALER_PACKAGE_NAME = 'org.fossify.phone'; diff --git a/config/prod/config.js b/config/prod/config.js index f11fe362..9e643662 100644 --- a/config/prod/config.js +++ b/config/prod/config.js @@ -12,4 +12,5 @@ export const IS_DATA_SYNC_REQUIRED = true; export const DATA_SYNC_TIME_INTERVAL = 2 * MINUTES_IN_AN_HOUR * MILLISECONDS_IN_A_MINUTE; // 2hr export const GOOGLE_SSO_CLIENT_ID = '136591056725-ev8db4hrlud2m23n0o03or3cmmp3a3cq.apps.googleusercontent.com'; -export const MS_CLARITY_PROJECT_ID = 'n2nsbu7o78'; \ No newline at end of file +export const MS_CLARITY_PROJECT_ID = 'n2nsbu7o78'; +export const COSMOS_DIALER_PACKAGE_NAME = 'org.fossify.phone'; \ No newline at end of file diff --git a/config/qa/config.js b/config/qa/config.js index e195646f..62afaf32 100644 --- a/config/qa/config.js +++ b/config/qa/config.js @@ -13,3 +13,5 @@ export const DATA_SYNC_TIME_INTERVAL = 2 * MINUTES_IN_AN_HOUR * MILLISECONDS_IN_ export const GOOGLE_SSO_CLIENT_ID = '60755663443-40k0fbrbbqv4ci4hrjlbrphab5fj387b.apps.googleusercontent.com'; export const MS_CLARITY_PROJECT_ID = ''; +export const COSMOS_DIALER_PACKAGE_NAME = 'org.fossify.phone'; + diff --git a/src/components/utlis/callModuleUtils.ts b/src/components/utlis/callModuleUtils.ts index 5d1b7c16..b7b9bf33 100644 --- a/src/components/utlis/callModuleUtils.ts +++ b/src/components/utlis/callModuleUtils.ts @@ -8,3 +8,7 @@ export const launchCallIntent = (number: string, exotelnumber: string, filePatch export const isDialerAppValidApk = (filePath: string): Promise => { return CallModule.isDialerAppValidApkFile(filePath); } + +export const getDefaultCallingApp = (): Promise => { + return CallModule.getDefaultCallingApp(); +} diff --git a/src/constants/config.js b/src/constants/config.js index e195646f..1381cea2 100644 --- a/src/constants/config.js +++ b/src/constants/config.js @@ -13,3 +13,4 @@ export const DATA_SYNC_TIME_INTERVAL = 2 * MINUTES_IN_AN_HOUR * MILLISECONDS_IN_ export const GOOGLE_SSO_CLIENT_ID = '60755663443-40k0fbrbbqv4ci4hrjlbrphab5fj387b.apps.googleusercontent.com'; export const MS_CLARITY_PROJECT_ID = ''; +export const COSMOS_DIALER_PACKAGE_NAME = 'org.fossify.phone';