accountSignUp method

Future<void> accountSignUp({
  1. required String username,
  2. required String eMail,
  3. required String password,
  4. required String repeatPassword,
  5. required AccountType accountType,
})

Account SignUp

Implementation

Future<void> accountSignUp({
  required String username,
  required String eMail,
  required String password,
  required String repeatPassword,
  required AccountType accountType,
}) async {
  await _handleAccountOperation(
    operationName: 'Sign Up',
    successMessage:
        'A verification code was send to $eMail!',
    closeOverlaysOnSuccess: true,
    authOperation: () async {
      await FirebaseAuth.instance
          .createUserWithEmailAndPassword(
            email: eMail,
            password: password,
          );
      await FirebaseAuth.instance.currentUser!
          .updateDisplayName(username);
      await FirebaseAuth.instance.currentUser!
          .sendEmailVerification();

      await FirebaseFirestore.instance
          .collection('users')
          .doc(FirebaseAuth.instance.currentUser!.uid)
          .set({
            'name': username,
            'id': FirebaseAuth.instance.currentUser!.uid,
            'accountType': accountTypeToString(
              accountType,
            ),
            'verified': false,
            'email': eMail,
            'emailVerified': false,
            'imageUrl': '',
            'about': '',
          });
      initializeUserStream();

      //TODO: What if Account creation Succeeds, but not the name, and also not the deletion?
      // await FirebaseAuth.instance.currentUser!.delete();
    },
  );
}