Feat/tp 29659 with enhancements (#456)
* add status check from api for visitPlanStatus tp-29659 * test with status api and handle remove visit plan case flow too tp-29659
This commit is contained in:
committed by
GitHub Enterprise
parent
5f2cc86ce1
commit
67bf4264c8
@@ -81,7 +81,11 @@ export const syncCaseDetail =
|
||||
const offlineImageIdList = getOfflineImageId(payload);
|
||||
const url = getApiUrl(ApiKeys.FEEDBACK);
|
||||
axiosInstance
|
||||
.post(url, payload)
|
||||
.post(url, payload, {
|
||||
params: {
|
||||
apiVersion: 2,
|
||||
},
|
||||
})
|
||||
.then((res) => {
|
||||
const caseType = payload.caseType;
|
||||
dispatch(
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { AxiosResponse } from 'axios';
|
||||
import axiosInstance, { ApiKeys, getApiUrl } from '../components/utlis/apiHelper';
|
||||
import { logError } from '../components/utlis/errorUtils';
|
||||
import { VisitPlanStatus } from '../reducer/userSlice';
|
||||
import { FilterResponse } from '../screens/allCases/interface';
|
||||
import { CaseDetail } from '../screens/caseDetails/interface';
|
||||
|
||||
@@ -30,11 +32,18 @@ export interface ISyncCaseIdPayload {
|
||||
cases: ICases[];
|
||||
}
|
||||
|
||||
interface ICasesSyncStatus {
|
||||
syncStatus: SyncStatus;
|
||||
visitPlanStatus: VisitPlanStatus;
|
||||
}
|
||||
|
||||
export const getCasesSyncStatus = async (userReferenceId: string) => {
|
||||
try {
|
||||
const url = getApiUrl(ApiKeys.CASES_SYNC_STATUS, {}, { userReferenceId });
|
||||
const response = await axiosInstance.get(url, { headers: { donotHandleError: true } });
|
||||
return response?.data?.syncStatus;
|
||||
const response: AxiosResponse<ICasesSyncStatus> = await axiosInstance.get(url, {
|
||||
headers: { donotHandleError: true },
|
||||
});
|
||||
return response?.data;
|
||||
} catch (err) {
|
||||
logError(err as Error, 'Error getting sync status');
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import {
|
||||
import { getSyncCaseIds } from '../components/utlis/firebaseFallbackUtils';
|
||||
import { syncCasesByFallback } from '../reducer/allCasesSlice';
|
||||
import { MILLISECONDS_IN_A_MINUTE } from '../../RN-UI-LIB/src/utlis/common';
|
||||
import { VisitPlanStatus, setLockData } from '../reducer/userSlice';
|
||||
|
||||
export enum FOREGROUND_TASKS {
|
||||
GEOLOCATION = 'GEOLOCATION',
|
||||
@@ -80,7 +81,7 @@ const TrackingComponent: React.FC<ITrackingComponent> = ({ children }) => {
|
||||
|
||||
const handleGetCaseSyncStatus = async () => {
|
||||
try {
|
||||
const syncStatus = await getCasesSyncStatus(referenceId);
|
||||
const { syncStatus, visitPlanStatus } = (await getCasesSyncStatus(referenceId)) ?? {};
|
||||
if (syncStatus === SyncStatus.SEND_CASES) {
|
||||
const cases = getSyncCaseIds([...pendingList, ...pinnedList]);
|
||||
const payload: ISyncCaseIdPayload = {
|
||||
@@ -94,6 +95,13 @@ const TrackingComponent: React.FC<ITrackingComponent> = ({ children }) => {
|
||||
dispatch(syncCasesByFallback(updatedDetails));
|
||||
}
|
||||
}
|
||||
if (visitPlanStatus) {
|
||||
dispatch(
|
||||
setLockData({
|
||||
visitPlanStatus,
|
||||
})
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
logError(e as Error, 'Error during fetching case sync status');
|
||||
}
|
||||
@@ -131,7 +139,8 @@ const TrackingComponent: React.FC<ITrackingComponent> = ({ children }) => {
|
||||
|
||||
const handleAppStateChange = async (nextAppState: AppStateStatus) => {
|
||||
// App comes to foreground from background
|
||||
if (appState.current.match(/inactive|background/) && nextAppState === 'active') {
|
||||
if (nextAppState === 'active') {
|
||||
handleGetCaseSyncStatus();
|
||||
UnstoppableService.start(tasks);
|
||||
if (bgTrackingTimeoutId.current) {
|
||||
clearTimeout(bgTrackingTimeoutId.current);
|
||||
@@ -151,7 +160,6 @@ const TrackingComponent: React.FC<ITrackingComponent> = ({ children }) => {
|
||||
|
||||
useEffect(() => {
|
||||
if (isOnline) {
|
||||
UnstoppableService.start(tasks);
|
||||
AppState.addEventListener('change', handleAppStateChange);
|
||||
} else {
|
||||
if (UnstoppableService.isRunning()) {
|
||||
|
||||
@@ -19,18 +19,25 @@ import { ToastMessages } from './constants';
|
||||
import useIsOnline from '../../hooks/useIsOnline';
|
||||
import { getLoanAccountNumber } from '../../components/utlis/commonFunctions';
|
||||
import useCurrentRoute from '../../hooks/useCurrentRoute';
|
||||
import { VisitPlanStatus } from '../../reducer/userSlice';
|
||||
|
||||
export const CasesActionButtons: React.FC = () => {
|
||||
const dispatch = useAppDispatch();
|
||||
const {
|
||||
newlyPinnedCases,
|
||||
selectedTodoListCount,
|
||||
selectedTodoListMap,
|
||||
casesList,
|
||||
caseDetails,
|
||||
visitPlansUpdating,
|
||||
pinnedList,
|
||||
} = useAppSelector((state: RootState) => state.allCases);
|
||||
allCases: {
|
||||
newlyPinnedCases,
|
||||
selectedTodoListCount,
|
||||
selectedTodoListMap,
|
||||
casesList,
|
||||
caseDetails,
|
||||
visitPlansUpdating,
|
||||
pinnedList,
|
||||
},
|
||||
isLockedVisitPlanStatus,
|
||||
} = useAppSelector((state: RootState) => ({
|
||||
allCases: state.allCases,
|
||||
isLockedVisitPlanStatus: state.user.lock.visitPlanStatus === VisitPlanStatus.LOCKED,
|
||||
}));
|
||||
const isOnline = useIsOnline();
|
||||
|
||||
const currentRoute = useCurrentRoute();
|
||||
@@ -49,6 +56,12 @@ export const CasesActionButtons: React.FC = () => {
|
||||
};
|
||||
|
||||
const handleRemovePinnedList = () => {
|
||||
if (isLockedVisitPlanStatus) {
|
||||
toast({
|
||||
type: 'info',
|
||||
text1: ToastMessages.CASES_DELETION_DISABLED,
|
||||
});
|
||||
}
|
||||
if (!isOnline) {
|
||||
toast({ type: 'error', text1: ToastMessages.VISIT_PLAN_OFFLINE });
|
||||
return;
|
||||
|
||||
@@ -68,6 +68,7 @@ export const ToastMessages = {
|
||||
SSO_SERVER_SIGN_IN_ERROR: 'Error while signing in to cosmos',
|
||||
NOT_ALLOWED_ERROR: 'Not allowed',
|
||||
CASES_SELECTION_DISABLED: 'Case addition is disabled during the generation of visit plan',
|
||||
CASES_DELETION_DISABLED: 'Case deletion is disabled during the generation of visit plan',
|
||||
};
|
||||
|
||||
export enum BOTTOM_TAB_ROUTES {
|
||||
|
||||
Reference in New Issue
Block a user