в реактивном приложении У меня есть избыточное действие, которое вызывает Firestore onSnapshot
. это выглядит следующим образом:
избыточное действие:
export const onAccountChange = (uid, isUnsubscribe) => {
console.log('Firestore Read (listener): actions/account => onAccountChange()');
return (dispatch) => {
let unsubscribe = firebase.firestore().collection('users').doc(uid).onSnapshot((doc) => {
dispatch({ type: types.LOAD_ACCOUNT, payload: doc.data() });
if (doc.get('role') == 'Influencer') {
onProfileChange(uid);
}
});
if ( typeof isUnsubscribe != "undefined" && isUnsubscribe == true) {
unsubscribe()
}
};
};
проблема, с которой я сталкиваюсь, это когда я выхожу из firebase auth, возникает ошибка: Firestore/Permission-denied
Я не уверен, является ли это работоспособным способом отсоединить слушателя от действия приведения. но это - избыточное действие, которое я вызываю при выходе из системы:
export const logoutUser = (uid, role) => {
return (dispatch) => {
onProfileChange(uid, true);
return new Promise((resolve, reject) => {
firebase
.auth()
.signOut()
.then(() => {
dispatch({ type: types.RESET_APP });
console.log('Dispatching types.RESET_APP');
resolve();
})
.catch((error) => reject(error.message));
});
};
};
как я могу отсоединить слушателя в этом контексте? (не вставляйте Dox Firestore, я уже прочитал их, и они не помогают мне понять, как это исправить)