TP-69407 | Added back press safety (#833)

This commit is contained in:
Anshuman Rai
2024-06-14 16:36:20 +05:30
committed by GitHub
5 changed files with 43 additions and 6 deletions

View File

@@ -134,8 +134,8 @@ def reactNativeArchitectures() {
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}
def VERSION_CODE = 165
def VERSION_NAME = "2.10.11"
def VERSION_CODE = 166
def VERSION_NAME = "2.11.0"
android {
ndkVersion rootProject.ext.ndkVersion

View File

@@ -1,7 +1,7 @@
{
"name": "AV_APP",
"version": "2.10.11",
"buildNumber": "165",
"version": "2.11.0",
"buildNumber": "166",
"private": true,
"scripts": {
"android:dev": "yarn move:dev && react-native run-android",

View File

@@ -1,4 +1,4 @@
import React, { useEffect, useRef, useState } from 'react';
import React, {useCallback, useEffect, useRef, useState} from 'react';
import { useForm } from 'react-hook-form';
import { ScrollView, StyleSheet, View } from 'react-native';
import Geolocation from 'react-native-geolocation-service';
@@ -41,6 +41,7 @@ import NavigationHeader, { Icon } from '../../../RN-UI-LIB/src/components/Naviga
import { CaseDetailStackEnum } from '@screens/caseDetails/CaseDetailStack';
import { useNavigation, useRoute } from '@react-navigation/native';
import { NUDGE_BOTTOM_SHEET_DEFAULT_STATE } from './constants';
import {useBackHandler} from "@hooks/useBackHandler";
interface IWidget {
route: {
@@ -93,6 +94,20 @@ const Widget: React.FC<IWidget> = (props) => {
setIsJourneyFirstScreen(isFirst);
}, [templateData, name]);
const handleBackPress = useCallback(() => {
if (isSubmitting) {
toast({
type: 'info',
text1: ToastMessages.FEEDBACK_SUBMISSION_UNDER_PROCESS,
});
return true;
}
return false;
}, [isSubmitting]);
useBackHandler(handleBackPress);
const {
control,
setValue,
@@ -220,6 +235,7 @@ const Widget: React.FC<IWidget> = (props) => {
}
const submitJourneyWithGeoLocation = (data: any, _: any, submitViaNudge?: boolean) => {
setIsSubmitting(true);
addClickstreamEvent(
submitViaNudge
? CLICKSTREAM_EVENT_NAMES.FA_SUBMIT_ANYWAYS_CLICKED
@@ -234,6 +250,8 @@ const Widget: React.FC<IWidget> = (props) => {
if (location) {
return handleSubmitJourney(data, location);
}
}).catch((err) => {
setIsSubmitting(false);
});
};
@@ -273,7 +291,6 @@ const Widget: React.FC<IWidget> = (props) => {
templateData,
});
if (isOnline) {
setIsSubmitting(true);
const unSyncedCase = getUnSyncedCase(updatedCase);
const transformedPayload = await getTransformedCollectionCaseItem(
unSyncedCase,
@@ -310,6 +327,7 @@ const Widget: React.FC<IWidget> = (props) => {
type: 'info',
text1: ToastMessages.FEEDBACK_SUBMITTED_OFFLINE,
});
setIsSubmitting(false);
}
};
@@ -329,6 +347,14 @@ const Widget: React.FC<IWidget> = (props) => {
}, []);
const handleCloseIconPress = () => {
if (isSubmitting) {
toast({
type: 'info',
text1: ToastMessages.FEEDBACK_SUBMISSION_UNDER_PROCESS,
});
return;
}
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.AV_FORM_CLOSE_CLICKED, {
caseId,
});

View File

@@ -0,0 +1,10 @@
import { useEffect } from 'react'
import { BackHandler } from 'react-native'
export const useBackHandler = (handler: () => boolean) => {
useEffect(() => {
BackHandler.addEventListener('hardwareBackPress', handler)
return () => BackHandler.removeEventListener('hardwareBackPress', handler)
}, [handler])
}

View File

@@ -70,6 +70,7 @@ export const ToastMessages = {
SUCCESS_COPYING_PAYMENT_LINK: 'Payment link has been copied to Clipboard',
FILTERS_APPLIED_SUCCESSFULLY: 'Filters applied successfully',
FEEDBACK_SUBMITTED_OFFLINE: "Feedback will be submitted automatically once you're back online",
FEEDBACK_SUBMISSION_UNDER_PROCESS: "Submitting feedback. You'll be redirected to customer details shortly.",
OFFLINE_MESSAGE: 'You seem to be offline',
PAYMENT_LINK_NOT_GENERATED: 'Payment link could not be generated',
PAYMENT_LINK_RETRY: 'Please retry after an hour for this number',