Я использую угловой Fire (для аутентификации Firebase).Я следовал за несколькими примерами кодов и начал создавать свои потоки аутентификации.Один из примеров кодов:
@Injectable({
providedIn: 'root'
})
export class UserService {
loggedInUser:any = {}
userid : string = "";
settings : any = {};
loggedin:boolean = false;
public user: IUser;
public userLoaded:boolean = false;
constructor(
private afAuth: AngularFireAuth,
private db: AngularFirestore,
private auth: AngularFireAuth,
) {
this.afAuth.authState.pipe(
switchMap(user => {
if (user) {
console.log("User Logged In :", {user,uid: user.uid});
this.db.doc<User>(`Users/${user.uid}`).valueChanges().subscribe(user=> {
console.log("From Subscription : ", user);
this.loggedInUser = user;
this.settings = user.settings;
this.loggedin = true;
});
} else {
console.log("Assumed Logout", user);
this.loggedInUser = {};
this.settings = {};
this.loggedin = false;
return of(null)
}
})
).subscribe();
}//End of Constructor
В этом примере я предполагал, что получу ноль, если пользователь выйдет из системы.Однако я не нахожу способ вызвать условие else в операторе IF.
Есть ли способ, с помощью которого я могу обнаружить выход из приложения, я хочу сделать это, чтобы я могможет очистить любую переменную, которую я держу в руках ключ.
Например, в моем сервисе userService я хочу сохранить кэшированную копию пользовательского документа из firebase, на которую другие ссылочные службы я хочу ссылаться (вместо прямой подписки на документ).Я хочу убедиться, что при выходе из системы это очищается, чтобы последующий вход в систему не ссылался на старую информацию.