diff --git a/src/hooks/useFirestoreUpdates.ts b/src/hooks/useFirestoreUpdates.ts index fe450e7d..a23c67cb 100644 --- a/src/hooks/useFirestoreUpdates.ts +++ b/src/hooks/useFirestoreUpdates.ts @@ -8,6 +8,11 @@ import {CaseDetail} from '../screens/caseDetails/interface'; import {FirestoreUpdateTypes} from '../common/Constants'; import {toast} from '../../RN-UI-LIB/src/components/toast'; +export interface CaseUpdates { + updateType: string; + updatedCaseDetail: CaseDetail; +} + const useFirestoreUpdates = () => { const reduxStoreData = useAppSelector((state: RootState) => state); const { @@ -20,6 +25,7 @@ const useFirestoreUpdates = () => { querySnapshot: FirebaseFirestoreTypes.QuerySnapshot, ) => { let newlyAddedCases = 0; + const caseUpdates: CaseUpdates[] = []; querySnapshot .docChanges() .forEach( @@ -35,14 +41,10 @@ const useFirestoreUpdates = () => { if (updateType === FirestoreUpdateTypes.ADDED) { newlyAddedCases++; } - // dispatch( - // updateCaseDetailsFirestore({ - // updatedCaseDetail, - // updateType, - // }), - // ); + caseUpdates.push({updateType, updatedCaseDetail}); }, ); + // dispatch(updateCaseDetailsFirestore({})); if (newlyAddedCases > 0) { toast({ type: 'success', diff --git a/src/reducer/allCasesSlice.ts b/src/reducer/allCasesSlice.ts index 02073fd4..115cbe08 100644 --- a/src/reducer/allCasesSlice.ts +++ b/src/reducer/allCasesSlice.ts @@ -10,6 +10,7 @@ import { } from '../common/Constants'; import {CaseDetail} from '../screens/caseDetails/interface'; import {toast} from '../../RN-UI-LIB/src/components/toast'; +import {CaseUpdates} from '../hooks/useFirestoreUpdates'; export type ICasesMap = {[key: string]: ICaseItem}; @@ -197,70 +198,67 @@ const allCasesSlice = createSlice({ } }, updateCaseDetailsFirestore: (state, action) => { - const {updatedCaseDetail, updateType} = action.payload as { - updatedCaseDetail: CaseDetail; - updateType: string; + const {caseUpdates} = action.payload as { + caseUpdates: CaseUpdates[]; }; - console.log( - 'updatedCaseDETAILS.....', - updateType, - updatedCaseDetail, - ); - const { - updatedAt, - allocatedAt, - id, - caseStatus, - customerInfo, - currentTask, - } = updatedCaseDetail; - switch (updateType) { - case FirestoreUpdateTypes.MODIFIED: { - const index = state.casesList.findIndex( - caseItem => caseItem.caseReferenceId === id, - ); - if (index !== -1) { - state.casesList[index] = { - ...state.casesList[index], + console.table('firestore case updates', caseUpdates); + caseUpdates.forEach(({updateType, updatedCaseDetail}) => { + const { + updatedAt, + allocatedAt, + id, + caseStatus, + customerInfo, + currentTask, + } = updatedCaseDetail; + switch (updateType) { + case FirestoreUpdateTypes.MODIFIED: { + const index = state.casesList.findIndex( + caseItem => caseItem.caseReferenceId === id, + ); + if (index !== -1) { + state.casesList[index] = { + ...state.casesList[index], + updatedAt, + allocatedAt, + caseStatus, + currentTask, + customerInfo, + caseReferenceId: id, + }; + } + state.caseDetails[id] = updatedCaseDetail; + break; + } + case FirestoreUpdateTypes.ADDED: { + const caseListItem: ICaseItem = { + caseReferenceId: id, updatedAt, allocatedAt, caseStatus, currentTask, customerInfo, - caseReferenceId: id, + pinRank: null, }; + state.casesList.push(caseListItem); + state.caseDetails[id] = updatedCaseDetail; + toast({type: 'success', text1: ''}); + break; } - state.caseDetails[id] = updatedCaseDetail; - break; - } - case FirestoreUpdateTypes.ADDED: { - const caseListItem: ICaseItem = { - caseReferenceId: id, - updatedAt, - allocatedAt, - caseStatus, - currentTask, - customerInfo, - pinRank: null, - }; - state.casesList.push(caseListItem); - state.caseDetails[id] = updatedCaseDetail; - toast({type: 'success', text1: ''}); - break; - } - case FirestoreUpdateTypes.REMOVED: { - const index = state.casesList.findIndex( - caseItem => caseItem.caseReferenceId === id, - ); - if (index !== -1) { - state.casesList.splice(index, 1); + case FirestoreUpdateTypes.REMOVED: { + const index = state.casesList.findIndex( + caseItem => caseItem.caseReferenceId === id, + ); + if (index !== -1) { + state.casesList.splice(index, 1); + } + delete state.caseDetails[id]; + break; } - delete state.caseDetails[id]; - break; + default: + break; } - default: - break; - } + }); }, updateCaseDetail: (state, action) => { const {caseId, journeyId, answer, caseData, nextActions} = diff --git a/src/screens/allCases/AllCases.tsx b/src/screens/allCases/AllCases.tsx index 503aa19e..1a81383d 100644 --- a/src/screens/allCases/AllCases.tsx +++ b/src/screens/allCases/AllCases.tsx @@ -154,8 +154,6 @@ const AllCases = () => { ) : null} ( { ( diff --git a/src/screens/allCases/EmptyList.tsx b/src/screens/allCases/EmptyList.tsx index 6570ced7..343f5511 100644 --- a/src/screens/allCases/EmptyList.tsx +++ b/src/screens/allCases/EmptyList.tsx @@ -1,4 +1,4 @@ -import {View} from 'react-native'; +import {StyleSheet, View} from 'react-native'; import React from 'react'; import EmptyPageWarnIcon from '../../assets/icons/EmptyPageWarnIcon'; import {GenericStyles} from '../../../RN-UI-LIB/src/styles'; @@ -12,8 +12,8 @@ interface IEmptyList { const EmptyList: React.FC = ({showWarnSign, message}) => { return ( - - + + {showWarnSign ? : } {message} @@ -23,4 +23,16 @@ const EmptyList: React.FC = ({showWarnSign, message}) => { ); }; +const styles = StyleSheet.create({ + centerAbsolute: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + justifyContent: 'center', + alignItems: 'center', + }, +}); + export default EmptyList;