feat: PDF zoom & external link fix, admin contact messages inbox, and in-app user management
Build Android APK / Build Release APKs (push) Failing after 53s
Build Android APK / Build Release APKs (push) Failing after 53s
This commit is contained in:
@@ -122,6 +122,9 @@ class AuthService extends ChangeNotifier {
|
||||
_auth.authStateChanges().listen((User? user) async {
|
||||
_user = user;
|
||||
await _checkAdminClaim(user);
|
||||
if (user != null && !user.isAnonymous) {
|
||||
await _syncUserProfile(user);
|
||||
}
|
||||
notifyListeners();
|
||||
});
|
||||
|
||||
@@ -130,6 +133,33 @@ class AuthService extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _syncUserProfile(User user, {String? firstName, String? lastName}) async {
|
||||
if (user.isAnonymous) return;
|
||||
try {
|
||||
final cleanEmail = user.email?.trim().toLowerCase() ?? '';
|
||||
if (cleanEmail.isEmpty) return;
|
||||
|
||||
final cleanFirst = firstName ?? this.firstName;
|
||||
final cleanLast = lastName ?? this.lastName;
|
||||
final name = user.displayName ?? '$cleanFirst $cleanLast'.trim();
|
||||
|
||||
await FirebaseFirestore.instance.collection('Users').doc(user.uid).set({
|
||||
'uid': user.uid,
|
||||
'email': cleanEmail,
|
||||
'displayName': name,
|
||||
'firstName': cleanFirst,
|
||||
'lastName': cleanLast,
|
||||
'emailVerified': user.emailVerified,
|
||||
'lastLogin': FieldValue.serverTimestamp(),
|
||||
if (_isAdmin) 'isAdmin': true,
|
||||
}, SetOptions(merge: true));
|
||||
} catch (e) {
|
||||
if (kDebugMode) {
|
||||
debugPrint('Error syncing user profile in auth service: $e');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Verifies community access code
|
||||
Future<bool> verifyCommunityCode(String enteredCode) async {
|
||||
final cleanCode = enteredCode.trim().toLowerCase();
|
||||
@@ -165,6 +195,10 @@ class AuthService extends ChangeNotifier {
|
||||
password: password,
|
||||
);
|
||||
_user = credential.user;
|
||||
await _checkAdminClaim(_user);
|
||||
if (_user != null) {
|
||||
await _syncUserProfile(_user!);
|
||||
}
|
||||
notifyListeners();
|
||||
return null; // success
|
||||
} on FirebaseAuthException catch (e) {
|
||||
@@ -200,6 +234,10 @@ class AuthService extends ChangeNotifier {
|
||||
await prefs.setString('user_first_name', cleanFirst);
|
||||
await prefs.setString('user_last_name', cleanLast);
|
||||
|
||||
await _checkAdminClaim(_user);
|
||||
await _syncUserProfile(_user!,
|
||||
firstName: cleanFirst, lastName: cleanLast);
|
||||
|
||||
// Send email verification so user verifies they own the email address
|
||||
try {
|
||||
await _user!.sendEmailVerification();
|
||||
|
||||
Reference in New Issue
Block a user