From a36b00cc3a258ebd713358cb12931d865b88823e Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Mon, 24 Feb 2025 18:49:29 +0530 Subject: [PATCH] NTP-36665 | removed muyltipliers | aman singh --- App.tsx | 37 +++++----- .../java/com/avapp/callModule/CallModule.java | 10 +++ src/common/BlockerScreen.tsx | 20 ++++++ src/common/Constants.ts | 4 ++ src/common/DefaultDialerScreen.tsx | 70 +++++++++++++++++++ src/common/TrackingComponent.tsx | 22 ++++-- src/components/utlis/callModuleUtils.ts | 2 + src/constants/config.js | 1 + src/reducer/appUpdateSlice.ts | 7 +- 9 files changed, 145 insertions(+), 28 deletions(-) create mode 100644 src/common/DefaultDialerScreen.tsx diff --git a/App.tsx b/App.tsx index 4e3d18d2..7f2a32b2 100644 --- a/App.tsx +++ b/App.tsx @@ -20,37 +20,36 @@ import { Provider } from 'react-redux'; import { PersistGate } from 'redux-persist/integration/react'; import store, { persistor } from './src/store/store'; +import { navigationRef } from '@utils/navigationUtlis'; import FullScreenLoader from './RN-UI-LIB/src/components/FullScreenLoader'; import { toastConfigs, ToastContainer } from './RN-UI-LIB/src/components/toast'; -import { navigationRef } from '@utils/navigationUtlis'; +import { hydrateGlobalImageMap } from '@common/CachedImage'; +import { CLICKSTREAM_EVENT_NAMES, LocalStorageKeys } from '@common/Constants'; import { sendDeviceDetailsToClickstream } from '@components/utlis/commonFunctions'; import { linkingConf } from '@components/utlis/deeplinkingUtils'; import { getBuildFlavour } from '@components/utlis/DeviceUtils'; +import { initSentry } from '@components/utlis/sentry'; import { GLOBAL, setGlobalBuildFlavour } from '@constants/Global'; +import { AppStates } from '@interfaces/appStates'; import analytics from '@react-native-firebase/analytics'; -import dayJs from 'dayjs'; import { COLORS } from '@rn-ui-lib/colors'; import { MILLISECONDS_IN_A_SECOND } from '@rn-ui-lib/utils/common'; -import { hydrateGlobalImageMap } from '@common/CachedImage'; -import { CLICKSTREAM_EVENT_NAMES, LocalStorageKeys } from '@common/Constants'; -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 { 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'; import { addClickstreamEvent } from '@services/clickstreamEventService'; import { setJsErrorHandler } from '@services/exception-handler.service'; +import syncSelfCallData from '@services/syncSelfCallData'; +import { getPermissionsToRequest } from '@utils/PermissionUtils'; +import dayJs from 'dayjs'; +import CodePushLoadingModal, { CodePushLoadingModalRef } from './CodePushModal'; +import ErrorBoundary from './src/common/ErrorBoundary'; +import ScreenshotBlocker from './src/components/utlis/ScreenshotBlocker'; +import { setItem } from './src/components/utlis/storageHelper'; +import { ENV } from './src/constants/config'; +import AuthRouter from './src/screens/auth/AuthRouter'; +import Permissions from './src/screens/permissions/Permissions'; import fetchUpdatedRemoteConfig from './src/services/firebaseFetchAndUpdate.service'; import { StorageKeys } from './src/types/storageKeys'; -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(); @@ -98,9 +97,7 @@ 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) => { @@ -111,7 +108,7 @@ function App() { break; } } - setPermissions(isAllPermissionsGranted && defaultCallingApp); + setPermissions(isAllPermissionsGranted); }) .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 ff600379..71c4981e 100644 --- a/android/app/src/main/java/com/avapp/callModule/CallModule.java +++ b/android/app/src/main/java/com/avapp/callModule/CallModule.java @@ -199,6 +199,16 @@ public class CallModule extends ReactContextBaseJavaModule { Log.e(TAG, "No app found to handle the call."); } } + @ReactMethod + public void startDialerApp() { + Intent launchIntent = reactContext.getPackageManager().getLaunchIntentForPackage("org.fossify.phone"); + if (launchIntent != null) { + Log.d(TAG, "Call initiated successfully."); + reactContext.startActivity(launchIntent); + } else { + Log.e(TAG, "No app found to handle the call."); + } + } private void promptForInstall(Uri apkUri) { try { diff --git a/src/common/BlockerScreen.tsx b/src/common/BlockerScreen.tsx index 9aa91dcc..18ffc867 100644 --- a/src/common/BlockerScreen.tsx +++ b/src/common/BlockerScreen.tsx @@ -29,6 +29,7 @@ import { import AppUpdate from './AppUpdate'; import { IShouldDialerAppUpdate, + setDefaultDialer, setShouldDialerAppUpdate, setShouldUpdate, } from '@reducers/appUpdateSlice'; @@ -36,6 +37,9 @@ import PostOperativeHours from './PostOperativeHours'; import { isFieldApp } from './utils'; import { AppStates } from '@interfaces/appStates'; import DialerAppUpdate from './DialerAppUpdate'; +import { getDefaultCallingApp } from '@components/utlis/callModuleUtils'; +import { COSMOS_DIALER_PACKAGE_NAME } from '@constants/config'; +import DefaultDialerScreen from './DefaultDialerScreen'; interface IBlockerScreen { children?: ReactNode; @@ -60,6 +64,9 @@ const BlockerScreen = (props: IBlockerScreen) => { ); const shouldDialerAppUpdate = useAppSelector((state) => state.appUpdate.shouldDialerAppUpdate) || {}; + const isCosmosDialerDefault = + useAppSelector((state) => state.appUpdate.isCosmosDialerDefault); + const withinOperativeHours = useAppSelector((state) => state.user?.withinOperativeHours); const isLoggedIn = useAppSelector((state: RootState) => state.user?.isLoggedIn); const isFieldAgent = @@ -155,6 +162,13 @@ const BlockerScreen = (props: IBlockerScreen) => { }); }; + const makeCosmosDialerDefault = async () => { + const appUrl = `intent://${COSMOS_DIALER_PACKAGE_NAME}#Intent;scheme=package;end`; + if (appUrl) { + await Linking.openSettings(); + } + }; + const handleDialerAppUpdate = async () => { const url = dialerAppState?.currentProdAPK; if (!shouldDialerAppUpdate.newApkCachedUrl) { @@ -235,6 +249,8 @@ const BlockerScreen = (props: IBlockerScreen) => { ); deleteCachedApkFiles(true); } + const defaultCallingApp = await getDefaultCallingApp()=== COSMOS_DIALER_PACKAGE_NAME; + dispatch(setDefaultDialer(defaultCallingApp)); }, [dialerAppState, shouldDialerAppUpdate, isCosmosDiallerEnabled] ); @@ -295,6 +311,10 @@ const BlockerScreen = (props: IBlockerScreen) => { return ; } + if (!isCosmosDialerDefault && isCosmosDiallerEnabled) { + return + } + if (shouldUpdate.switchToFallback) { const { heading, instructions } = BLOCKER_SCREEN_DATA.UNINSTALL_APP; return ( diff --git a/src/common/Constants.ts b/src/common/Constants.ts index 34f698a2..e9cd465e 100644 --- a/src/common/Constants.ts +++ b/src/common/Constants.ts @@ -1467,6 +1467,10 @@ export const CLICKSTREAM_EVENT_NAMES = { FA_CALL_SYNC_SELF_CALL_ERROR: { name: 'FA_CALL_SYNC_SELF_CALL_ERROR', description: 'Call sync self call error', + }, + FA_COSMOS_DEFAULT_DIALER: { + name: 'FA_COSMOS_DEFAULT_DIALER', + description: 'Cosmos default dialer', } } as const; diff --git a/src/common/DefaultDialerScreen.tsx b/src/common/DefaultDialerScreen.tsx new file mode 100644 index 00000000..571254d3 --- /dev/null +++ b/src/common/DefaultDialerScreen.tsx @@ -0,0 +1,70 @@ +import DialerAppIcon from '@assets/icons/DialerAppIcon'; +import { startDialerApp } from '@components/utlis/callModuleUtils'; +import { COLORS } from '@rn-ui-lib/colors'; +import Button from '@rn-ui-lib/components/Button'; +import NavigationHeader from '@rn-ui-lib/components/NavigationHeader'; +import Text from '@rn-ui-lib/components/Text'; +import { GenericStyles } from '@rn-ui-lib/styles'; +import Layout from '@screens/layout/Layout'; +import React from 'react'; +import { Linking, Pressable, StyleSheet, View } from 'react-native'; + +interface IDefaultDialerScreen { + makeCosmosDialerDefault: () => void; +} + +const DefaultDialerScreen: React.FC = ({ makeCosmosDialerDefault }) => { + const openHelpForm = () => { + Linking.openURL( + 'https://docs.google.com/forms/d/e/1FAIpQLSdKtdzB67-yyidd2Gh_52fYsLtL9QeuTmkUb6BZt4fAPJGyOg/viewform?usp=dialog' + ); + }; + + return ( + + + + Help + + } + /> + + + + Cosmos dialer + + + Make the cosmos dialer as default dialer to use cosmos. + + + + +