TP-23737 | Added firestore unsubscribing + logout current user at fir… (#205)
* TP-23737 | Added firestore unsubscribing + logout current user at firestore * TP-23737 | QA testing fix
This commit is contained in:
committed by
GitHub Enterprise
parent
37745bd694
commit
2e6ee2eb57
@@ -20,6 +20,7 @@ import { setGlobalUserData } from '../constants/Global';
|
||||
import { resetCasesData } from '../reducer/allCasesSlice';
|
||||
import {toast} from "../../RN-UI-LIB/src/components/toast";
|
||||
import { clearAllAsyncStorage } from '../components/utlis/commonFunctions';
|
||||
import { logError } from '../components/utlis/errorUtils';
|
||||
|
||||
export interface GenerateOTPPayload {
|
||||
phoneNumber: string;
|
||||
@@ -93,7 +94,8 @@ export const logout = () => (dispatch: AppDispatch) => {
|
||||
const url = getApiUrl(ApiKeys.LOGOUT);
|
||||
axiosInstance
|
||||
.get(url)
|
||||
.then(response => {
|
||||
.then(async (_) => {
|
||||
await clearAllAsyncStorage();
|
||||
setGlobalUserData({token: '', agentId:'', deviceId:''});
|
||||
dispatch(
|
||||
setAuthData({
|
||||
@@ -102,10 +104,10 @@ export const logout = () => (dispatch: AppDispatch) => {
|
||||
isLoggedIn: false,
|
||||
}),
|
||||
);
|
||||
clearAllAsyncStorage();
|
||||
dispatch(resetCasesData());
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
logError(err as Error);
|
||||
console.error(err)
|
||||
});
|
||||
};
|
||||
|
||||
@@ -14,6 +14,8 @@ import { setFilters } from '../reducer/filtersSlice';
|
||||
import { FormTemplateV1 } from '../types/template.types';
|
||||
import { ToastMessages } from '../screens/allCases/constants';
|
||||
import { setForceUninstallData } from "../reducer/metadataSlice";
|
||||
import { logError } from '../components/utlis/errorUtils';
|
||||
import { GenericFunctionArgs } from '../common/GenericTypes';
|
||||
|
||||
export interface CaseUpdates {
|
||||
updateType: string;
|
||||
@@ -27,12 +29,12 @@ const useFirestoreUpdates = () => {
|
||||
allCases: { caseDetails, casesList, loading },
|
||||
} = reduxStoreData;
|
||||
|
||||
let casesSubscriber: any;
|
||||
let avTemplateSubscriber: any;
|
||||
let collectionTemplateSubscriber: any;
|
||||
let configSubscriber: any;
|
||||
let filterSubscriber: any;
|
||||
let forceUninstallSubscriber: any;
|
||||
let casesUnsubscribe: GenericFunctionArgs;
|
||||
let avTemplateUnSubscriber: GenericFunctionArgs;
|
||||
let collectionTemplateUnsubscribe: GenericFunctionArgs;
|
||||
let configUnsubscribe: GenericFunctionArgs;
|
||||
let filterUnsubscribe: GenericFunctionArgs;
|
||||
let forceUninstallUnsubscribe: GenericFunctionArgs;
|
||||
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
@@ -122,7 +124,6 @@ const useFirestoreUpdates = () => {
|
||||
snapshot: FirebaseFirestoreTypes.DocumentSnapshot<FirebaseFirestoreTypes.DocumentData>,
|
||||
) => {
|
||||
const configData = snapshot.data();
|
||||
console.log('configData', configData);
|
||||
dispatch(setForceUninstallData(configData))
|
||||
};
|
||||
|
||||
@@ -134,26 +135,30 @@ const useFirestoreUpdates = () => {
|
||||
dispatch(setFilters(filterResponse.filterComponentList));
|
||||
};
|
||||
|
||||
const handleError = (err: any) => {
|
||||
console.log('Error while fetching firestore snapshot', err);
|
||||
const handleError = (err: any, collectionPath?: string) => {
|
||||
const errMsg = `Error while fetching fireStore snapshot: referenceId: ${user?.referenceId} collectionPath: ${collectionPath}`;
|
||||
logError(err as Error, errMsg)
|
||||
};
|
||||
|
||||
const isUserSignedIn = () => {
|
||||
return auth().currentUser ? true : false;
|
||||
};
|
||||
|
||||
const loggedOutCurrentUser = async () => {
|
||||
await auth().signOut();
|
||||
}
|
||||
|
||||
const signInUserToFirebase = () => {
|
||||
if (!sessionDetails) {
|
||||
return;
|
||||
}
|
||||
console.log('here', sessionDetails?.firebaseToken);
|
||||
auth()
|
||||
.signInWithCustomToken(sessionDetails?.firebaseToken)
|
||||
.then(userCredential => {
|
||||
addFirestoreListeners();
|
||||
})
|
||||
.catch(error => {
|
||||
console.log('err: ', error);
|
||||
logError(error as Error, 'Error in signInUserToFirebase')
|
||||
setGlobalUserData({token: '', agentId:'', deviceId:''});
|
||||
dispatch(
|
||||
setAuthData({
|
||||
@@ -169,56 +174,66 @@ const useFirestoreUpdates = () => {
|
||||
});
|
||||
};
|
||||
|
||||
const subscribeToCollection = (successCb: GenericFunctionArgs, collectionPath: string) => {
|
||||
return firestore()
|
||||
.collection(collectionPath)
|
||||
.onSnapshot(successCb, (err) => handleError(err, collectionPath));
|
||||
}
|
||||
|
||||
const subscribeToDoc = (successCb: GenericFunctionArgs, collectionPath: string) => {
|
||||
return firestore()
|
||||
.doc(collectionPath)
|
||||
.onSnapshot(successCb, (err) => handleError(err, collectionPath));
|
||||
}
|
||||
|
||||
const subscribeToCases = () => {
|
||||
firestore()
|
||||
.collection(`allocations/${user?.referenceId}/cases`)
|
||||
.onSnapshot(handleCasesUpdate, handleError);
|
||||
const collectionPath = `allocations/${user?.referenceId}/cases`;
|
||||
return subscribeToCollection(handleCasesUpdate, collectionPath);
|
||||
|
||||
};
|
||||
|
||||
const subscribeToAvTemplate = () => {
|
||||
firestore()
|
||||
.doc(`template/new_template_av`)
|
||||
.onSnapshot(handleAvTemplateUpdate, handleError);
|
||||
const collectionPath = 'template/new_template_av';
|
||||
return subscribeToDoc(handleAvTemplateUpdate, collectionPath);
|
||||
};
|
||||
|
||||
const subscribeToCollectionTemplate = () => {
|
||||
firestore()
|
||||
.doc(`template/template_collections_v2`)
|
||||
.onSnapshot(handleCollectionTemplateUpdate, handleError);
|
||||
const collectionPath = 'template/template_collections_v2';
|
||||
return subscribeToDoc(handleCollectionTemplateUpdate, collectionPath);
|
||||
};
|
||||
|
||||
const subscribeToForceUninstall = () => {
|
||||
firestore()
|
||||
.doc(`app-state/force-uninstall`)
|
||||
.onSnapshot(handleForceUninstallUpdate, handleError);
|
||||
const collectionPath = 'app-state/force-uninstall';
|
||||
return subscribeToDoc(handleForceUninstallUpdate, collectionPath);
|
||||
};
|
||||
|
||||
const subscribeToFilters = () => {
|
||||
firestore()
|
||||
.doc(`filters/${user?.referenceId}`)
|
||||
.onSnapshot(handleFilterUpdate, handleError);
|
||||
const collectionPath = `filters/${user?.referenceId}`;
|
||||
return subscribeToDoc(handleFilterUpdate, collectionPath);
|
||||
};
|
||||
|
||||
const subscribeToUserConfig = () => {
|
||||
firestore()
|
||||
.doc(`config/${user?.referenceId}`)
|
||||
.onSnapshot(handleConfigUpdate, handleError);
|
||||
const collectionPath = `config/${user?.referenceId}`;
|
||||
return subscribeToDoc(handleConfigUpdate, collectionPath);
|
||||
};
|
||||
|
||||
const subscribeToFirestore = () => {
|
||||
addFirestoreListeners();
|
||||
configSubscriber = subscribeToUserConfig();
|
||||
configUnsubscribe = subscribeToUserConfig();
|
||||
};
|
||||
|
||||
function addFirestoreListeners() {
|
||||
casesSubscriber = subscribeToCases();
|
||||
filterSubscriber = subscribeToFilters();
|
||||
avTemplateSubscriber = subscribeToAvTemplate();
|
||||
collectionTemplateSubscriber = subscribeToCollectionTemplate();
|
||||
casesUnsubscribe = subscribeToCases();
|
||||
filterUnsubscribe = subscribeToFilters();
|
||||
avTemplateUnSubscriber = subscribeToAvTemplate();
|
||||
collectionTemplateUnsubscribe = subscribeToCollectionTemplate();
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!isLoggedIn || !sessionDetails?.firebaseToken) {
|
||||
if (isUserSignedIn()) {
|
||||
loggedOutCurrentUser();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (isUserSignedIn()) {
|
||||
@@ -228,15 +243,17 @@ const useFirestoreUpdates = () => {
|
||||
signInUserToFirebase();
|
||||
}
|
||||
return () => {
|
||||
casesSubscriber && casesSubscriber();
|
||||
filterSubscriber && filterSubscriber();
|
||||
configSubscriber && configSubscriber();
|
||||
avTemplateSubscriber && avTemplateSubscriber();
|
||||
collectionTemplateSubscriber && collectionTemplateSubscriber();
|
||||
casesUnsubscribe && casesUnsubscribe();
|
||||
filterUnsubscribe && filterUnsubscribe();
|
||||
configUnsubscribe && configUnsubscribe();
|
||||
avTemplateUnSubscriber && avTemplateUnSubscriber();
|
||||
collectionTemplateUnsubscribe && collectionTemplateUnsubscribe();
|
||||
forceUninstallUnsubscribe && forceUninstallUnsubscribe();
|
||||
};
|
||||
}, [isLoggedIn]);
|
||||
|
||||
useEffect(()=>{
|
||||
subscribeToForceUninstall();
|
||||
forceUninstallUnsubscribe = subscribeToForceUninstall();
|
||||
},[])
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user