register method
Implementation
Future<void> register(
String username, {
required String firstName,
required String lastName,
}) async {
username = "$username@chat.io";
try {
final fetchSignInMethodsForEmail =
await FirebaseAuth.instance.fetchSignInMethodsForEmail(username);
if (fetchSignInMethodsForEmail.isEmpty) {
await FirebaseAuth.instance.createUserWithEmailAndPassword(
email: username,
password: username,
);
}
final authUser = await FirebaseAuth.instance.signInWithEmailAndPassword(
email: username,
password: username,
);
types.User? user = await getUser(authUser.user!.uid);
user = types.User(
id: authUser.user!.uid,
firstName: firstName,
lastName: lastName,
updatedAt: user?.updatedAt ?? DateTime.now().millisecondsSinceEpoch,
createdAt: user?.createdAt ?? DateTime.now().millisecondsSinceEpoch,
metadata: {
...user?.metadata ?? {},
"username": username,
},
);
await FirebaseChatCore.instance.createUserInFirestore(user);
notifyListeners();
} catch (e) {
notifyListeners();
rethrow;
}
}