NTP-14132| function changes
This commit is contained in:
@@ -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.');
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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 = () => {
|
||||
|
||||
@@ -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 = () => {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user