listenUserDocumentChanges method

dynamic listenUserDocumentChanges()

Implementation

listenUserDocumentChanges() {
  firebaseAuthSubscription?.cancel();
  firebaseAuthSubscription =
      // .distinct((p, n) => p?.user?.uid == n?.user?.uid)
      fa.FirebaseAuth.instance.authStateChanges().listen((faUser) async {
    /// User state changed
    if (faUser == null) {
      user = null;
      changes.add(user);
      dog('faUser is null');
    } else {
      dog('faUser is not null');

      /// User signed in. Listen to the user's document changes.
      firestoreMyDocSubscription?.cancel();

      // 사용자 문서 초기화
      await _initUserDocumentOnLogin(faUser.uid);

      firestoreMyDocSubscription = FirebaseFirestore.instance
          .collection('users')
          .doc(faUser.uid)
          .snapshots()
          .listen((snapshot) {
        // 주의: 여기서는 어떤 경우에도 사용자 문서를 업데이트해서는 안된다.
        if (snapshot.exists) {
          user = User.fromSnapshot(snapshot);
        } else {
          user = null;
        }
        changes.add(user);
      });
    }
  });
}