createAccountByGoogle static method

Future<void> createAccountByGoogle(
  1. String googleApiKey
)

Implementation

static Future<void> createAccountByGoogle(String googleApiKey) async {
  await initialize();
  logger.finest('createAccountByGoogle start');

  if (googleApiKey.isEmpty) {
    throw HycopUtils.getHycopException(defaultMessage: 'No googleApiKey !!!');
  }

  _googleSignIn ??= google_sign_in.GoogleSignIn(clientId: googleApiKey, scopes: []);

  try {
    final checkSignInResultO = await _googleSignIn!.isSignedIn();
    logger.finest('login result=$checkSignInResultO');
    if (checkSignInResultO) {
      _googleAccount = await _googleSignIn!.signInSilently();
      if (_googleAccount == null) {
        logger.finest('login disconnect');
        await _googleSignIn!.disconnect();
        throw HycopUtils.getHycopException(defaultMessage: 'login disconnect!!!');
      }
    } else {
      _googleAccount = await _googleSignIn!.signIn();
      if (_googleAccount == null) {
        logger.finest('login cancel');
        await _googleSignIn!.disconnect();
        throw HycopUtils.getHycopException(defaultMessage: 'login cancel!!!');
      }
    }
    final value = await AccountManager.isExistAccount(_googleAccount!.email)
        .catchError((error, stackTrace) {
      throw HycopUtils.getHycopException(
          error: error, defaultMessage: 'isExistAccount error !!!');
    }); /*.then((value) {
      if (value == true) {
        alreadyExistAccount = true;
        //throw HycopUtils.getHycopException(defaultMessage: 'already exist account !!!');
      }
    });*/
    if (value == AccountSignUpType.removed) {
      throw HycopUtils.getHycopException(
        defaultMessage: 'before removed account !!!',
        code: HycopException.emailBeforeRemoved,
      );
    }
    if (value == AccountSignUpType.none) {
      Map<String, dynamic> userData = {};
      userData['name'] = _googleAccount!.displayName ?? '';
      userData['email'] = _googleAccount!.email;
      userData['password'] = _googleAccount!.email;
      userData['accountSignUpType'] = AccountSignUpType.google.index;
      userData['imagefile'] = _googleAccount!.photoUrl;
      userData['isRemoved'] = false;
      await createAccount(userData).then((value) {}).onError((error, stackTrace) {
        throw HycopUtils.getHycopException(
            error: error, defaultMessage: 'createAccount error !!!');
      });
    }

    if (_currentLoginUser.isLoginedUser == false) {
      await loginByService(_googleAccount!.email, AccountSignUpType.google)
          .then((value) {})
          .onError((error, stackTrace) {
        throw HycopUtils.getHycopException(
            error: error, defaultMessage: 'loginByService error !!!');
      });
    }
  } catch (error) {
    throw HycopUtils.getHycopException(
        error: error, defaultMessage: 'unknown google-account error !!!');
  }
}