NTP-14132| function changes

This commit is contained in:
aishwarya.srivastava
2024-11-27 22:56:47 +05:30
parent c005a39bae
commit e27b78206e
8 changed files with 51 additions and 65 deletions

View File

@@ -57,6 +57,8 @@ import { getSyncUrl } from '@services/syncJsonDataToBe';
import { handleCheckAndUpdatePullToRefreshStateForNearbyCases } from '@screens/allCases/utils';
import { getWifiDetailsSyncUrl } from '@components/utlis/WifiDetails';
import useFirestoreUpdates from '@hooks/useFirestoreUpdates';
import { handlePostOperativeHourActivity } from '@screens/caseDetails/utils/postOperationalHourActions';
import { setPostOperationalHourRestrictions } from '@reducers/postOperationalHourRestrictionsSlice';
export enum FOREGROUND_TASKS {
GEOLOCATION = 'GEOLOCATION',
@@ -105,6 +107,7 @@ const TrackingComponent: React.FC<ITrackingComponent> = ({ children }) => {
const isTimeDifferenceLess = isTimeDifferenceWithinRange(timestamp, 5);
dispatch(setIsTimeSynced(isTimeDifferenceLess));
}
dispatch(setPostOperationalHourRestrictions(handlePostOperativeHourActivity(timestamp)));
} catch (e: any) {
logError(e, 'Error during fetching timestamp from server.');
}

View File

@@ -32,8 +32,9 @@ import Tag, { TagVariant } from '@rn-ui-lib/components/Tag';
import ArrowSolidIcon from '@rn-ui-lib/icons/ArrowSolidIcon';
import { CaseDetailStackEnum } from '@screens/caseDetails/CaseDetailStack';
import { handleClickPostOperativeHours } from '@screens/addressGeolocation/utils/operativeHourUtils';
import { handleTimeSync } from '@screens/caseDetails/utils/postOperationalHourActions';
import { handlePostOperativeHourActivity } from '@screens/caseDetails/utils/postOperationalHourActions';
import { setPostOperationalHourRestrictions } from '@reducers/postOperationalHourRestrictionsSlice';
import { getSyncTime } from '@hooks/capturingApi';
interface IGeolocationAddress {
address: IGeolocation;
@@ -111,17 +112,15 @@ const GeolocationAddress: React.FC<IGeolocationAddress> = ({
(state) => state.postOperationalHourRestrictionsSlice.postOperationalHourRestrictions
);
const handleCloseRouting = () => handlePageRouting?.(CaseDetailStackEnum.ADDRESS_GEO);
useEffect(() => {
const syncTime = async () => {
const getCurrentTime = await handleTimeSync();
if (getCurrentTime?.isPostOperational) {
dispatch(setPostOperationalHourRestrictions(getCurrentTime?.isPostOperational));
}
const timestamp = await getSyncTime();
dispatch(setPostOperationalHourRestrictions(handlePostOperativeHourActivity(timestamp)));
};
syncTime();
const intervalId = setInterval(syncTime, 180000);
return () => clearInterval(intervalId);
}, []);
const handleAddFeedback = () => {
if (!caseId) {
return;

View File

@@ -44,8 +44,9 @@ import { NUDGE_BOTTOM_SHEET_DEFAULT_STATE } from './constants';
import {useBackHandler} from "@hooks/useBackHandler";
import { CALLING_NUDGE } from '@screens/caseDetails/CallingFlow/constants';
import { isFunction } from '@components/utlis/commonFunctions';
import { handleTimeSync } from '@screens/caseDetails/utils/postOperationalHourActions';
import { handlePostOperativeHourActivity } from '@screens/caseDetails/utils/postOperationalHourActions';
import { setPostOperationalHourRestrictions } from '@reducers/postOperationalHourRestrictionsSlice';
import { getSyncTime } from '@hooks/capturingApi';
interface IWidget {
route: {
@@ -103,17 +104,15 @@ const Widget: React.FC<IWidget> = (props) => {
const addingNewFeedbackDisabled = useAppSelector((state) => state.postOperationalHourRestrictionsSlice.postOperationalHourRestrictions);
const [isSubmitButtonDiabled, setIsSubmitButtonDiabled] = useState(false);
useEffect(() => {
const syncTime = async () => {
const getCurrentTime = await handleTimeSync();
if (getCurrentTime?.isPostOperational) {
dispatch(setPostOperationalHourRestrictions(getCurrentTime?.isPostOperational));
}
const timestamp = await getSyncTime();
dispatch(setPostOperationalHourRestrictions(handlePostOperativeHourActivity(timestamp)));
};
syncTime();
const intervalId = setInterval(syncTime, 15000);
return () => clearInterval(intervalId);
}, []);
const handleBackPress = useCallback(() => {
if (isSubmitting && ! addingNewFeedbackDisabled) {
toast({

View File

@@ -20,8 +20,9 @@ import { CLICKSTREAM_EVENT_NAMES } from '@common/Constants';
import CopyIcon from '@rn-ui-lib/icons/CopyIcon';
import { copyAddressToClipboard } from './utils/copyAddressText';
import { setPostOperationalHourRestrictions } from '@reducers/postOperationalHourRestrictionsSlice';
import { handleTimeSync } from '@screens/caseDetails/utils/postOperationalHourActions';
import { handlePostOperativeHourActivity } from '@screens/caseDetails/utils/postOperationalHourActions';
import { handleClickPostOperativeHours } from './utils/operativeHourUtils';
import { getSyncTime } from '@hooks/capturingApi';
interface IAddressItem {
addressItem: IAddress;
@@ -76,14 +77,10 @@ function AddressItem({
);
useEffect(() => {
const syncTime = async () => {
const getCurrentTime = await handleTimeSync();
if (getCurrentTime?.isPostOperational) {
dispatch(setPostOperationalHourRestrictions(getCurrentTime?.isPostOperational));
}
const timestamp = await getSyncTime();
dispatch(setPostOperationalHourRestrictions(handlePostOperativeHourActivity(timestamp)));
};
syncTime();
const intervalId = setInterval(syncTime, 180000);
return () => clearInterval(intervalId);
}, []);
const handleAddFeedback = () => {

View File

@@ -24,9 +24,10 @@ import AddressSource from './AddressSource';
import relativeDistanceFormatter from './utils/relativeDistanceFormatter';
import CopyIcon from '@rn-ui-lib/icons/CopyIcon';
import { copyAddressToClipboard } from './utils/copyAddressText';
import { handleTimeSync } from '@screens/caseDetails/utils/postOperationalHourActions';
import { handlePostOperativeHourActivity } from '@screens/caseDetails/utils/postOperationalHourActions';
import { setPostOperationalHourRestrictions } from '@reducers/postOperationalHourRestrictionsSlice';
import { handleClickPostOperativeHours } from './utils/operativeHourUtils';
import { getSyncTime } from '@hooks/capturingApi';
interface IAddressItem {
addressItem: IAddress;
@@ -122,16 +123,13 @@ function SimilarAddressItem({
}
};
const addingNewFeedbackDisabled = useAppSelector((state) => state.postOperationalHourRestrictionsSlice.postOperationalHourRestrictions);
useEffect(() => {
const syncTime = async () => {
const getCurrentTime = await handleTimeSync();
if (getCurrentTime?.isPostOperational) {
dispatch(setPostOperationalHourRestrictions(getCurrentTime?.isPostOperational));
}
const timestamp = await getSyncTime();
dispatch(setPostOperationalHourRestrictions(handlePostOperativeHourActivity(timestamp)));
};
syncTime();
const intervalId = setInterval(syncTime, 180000);
return () => clearInterval(intervalId);
}, []);
const copyAddress = () => {

View File

@@ -1,9 +1,9 @@
import { toast } from "@rn-ui-lib/components/toast";
export const handleClickPostOperativeHours = () => {
toast({
type: 'error',
type: 'warn',
text1: 'You will be able to add feedback only during work hours (8 AM to 7 PM).',
});
return;

View File

@@ -14,9 +14,10 @@ import React, { useEffect } from 'react';
import { StyleSheet, View } from 'react-native';
import { CaseDetailStackEnum } from './CaseDetailStack';
import { captureLatestDeviceLocation } from '@components/form/services/geoLocation.service';
import { handleTimeSync } from './utils/postOperationalHourActions';
import { handlePostOperativeHourActivity } from './utils/postOperationalHourActions';
import { handleClickPostOperativeHours } from '@screens/addressGeolocation/utils/operativeHourUtils';
import { setPostOperationalHourRestrictions } from '@reducers/postOperationalHourRestrictionsSlice';
import { getSyncTime } from '@hooks/capturingApi';
interface ICollectionCaseDetailFooter {
caseId: string;
@@ -84,14 +85,10 @@ const CollectionCaseDetailFooter = ({ caseId, notificationId }: ICollectionCaseD
};
useEffect(() => {
const syncTime = async () => {
const getCurrentTime = await handleTimeSync();
if (getCurrentTime?.isPostOperational) {
dispatch(setPostOperationalHourRestrictions(getCurrentTime?.isPostOperational));
}
const timestamp = await getSyncTime();
dispatch(setPostOperationalHourRestrictions(handlePostOperativeHourActivity(timestamp)));
};
syncTime();
const intervalId = setInterval(syncTime, 180000);
return () => clearInterval(intervalId);
}, []);
useEffect(() => {
@@ -122,7 +119,7 @@ const CollectionCaseDetailFooter = ({ caseId, notificationId }: ICollectionCaseD
testID={'test_call_customer'}
/>
<Button
style={[styles.feedbackButton]}
style={[ addingNewFeedbackDisabled ? styles.disabledButton : styles.feedbackButton]}
title={preFilledFormData ? 'Continue feedback' : 'Add new feedback'}
rightIcon={
preFilledFormData ? (
@@ -133,8 +130,9 @@ const CollectionCaseDetailFooter = ({ caseId, notificationId }: ICollectionCaseD
}
variant="primary"
onPress={addingNewFeedbackDisabled ? handleClickPostOperativeHours : handleAddFeedback}
testID={'test_add_feedback'}
isClickableButDisabled={addingNewFeedbackDisabled}
testID="test_add_feedback"
pressableWidthChange={!addingNewFeedbackDisabled}
opacityChangeOnPress={!addingNewFeedbackDisabled}
/>
</View>
);
@@ -149,6 +147,14 @@ export const styles = StyleSheet.create({
flex: 1,
marginLeft: 6,
},
disabledButton: {
flex: 1,
marginLeft: 6,
color: COLORS.TEXT.BLUE,
opacity: 0.5,
backgroundColor: COLORS.BACKGROUND.PRIMARY,
borderColor: COLORS.BORDER.PRIMARY,
},
buttonContainer: {
position: 'absolute',
bottom: 0,

View File

@@ -1,28 +1,12 @@
import { logError } from '@components/utlis/errorUtils';
import { getSyncTime } from '@hooks/capturingApi';
export const getTodaysDate = async () => {
const timestamp = await getSyncTime();
const date = new Date(timestamp);
return date;
};
export const handleTimeSync = async () => {
try {
const timestamp = await getSyncTime();
if (timestamp) {
const todaysDate = new Date(timestamp);
const currentHour = todaysDate.getTime();
const loginStartTime = todaysDate.setHours(8, 0, 0);
const loginEndTime = todaysDate.setHours(19, 0, 0);
return {
isPostOperational: currentHour < loginStartTime || currentHour > loginEndTime
};
}
} catch (e: any) {
logError(e, 'Error during fetching timestamp from server.');
export const handlePostOperativeHourActivity = (timestamp: number)=> {
if (timestamp) {
const todaysDate = new Date(timestamp);
const loginStartTime = new Date(todaysDate).setHours(8, 0, 0, 0);
const loginEndTime = new Date(todaysDate).setHours(18, 55, 0, 0);
const currentTime = todaysDate.getTime();
const isPostOperational = currentTime < loginStartTime || currentTime > loginEndTime;
return isPostOperational;
}
return false;
};