signUpWithFacebook method

Future<void> signUpWithFacebook({
  1. dynamic onSuccess(
    1. String
    )?,
  2. dynamic onError(
    1. dynamic
    )?,
})

Implementation

Future<void> signUpWithFacebook({
  final Function(String)? onSuccess,
  final Function(dynamic)? onError,
}) async {
  try {
    final _account = await _facebookSignIn.login();

    if (_account.status != LoginStatus.success)
      throw Exception('${_account.status}');

    final _accessToken = _account.accessToken;

    if (_accessToken == null) throw Exception('Access Token is null');

    final _cred = FacebookAuthProvider.credential(_accessToken.token);
    final _result = await _auth.signInWithCredential(_cred);
    final _user = _result.user;

    if (_user != null) {
      final _userRef = PeamanReferenceHelper.usersCol.doc(_user.uid);
      final _userSnap = await _userRef.get();
      final _registered = _userSnap.exists;

      if (!_registered) {
        final _appUser = PeamanUser(
          uid: _user.uid,
          email: _user.email,
          createdAt: _user.metadata.creationTime?.millisecondsSinceEpoch,
        );
        await AppUserProvider().createUser(user: _appUser);
      }

      print('Success: Signing up with facebook');
      onSuccess?.call(_user.uid);
    }
  } catch (e) {
    print(e);
    print('Error!!!: Signing up with facebook');
    onError?.call(e);
  }
}