signIn method

  1. @override
Future signIn({
  1. bool reAuthenticate = false,
  2. bool suppressErrors = true,
  3. bool silentOnly = false,
})
  • reAuthenticate has no effect in extension
  • Throw if sign in failed

Implementation

@override
Future signIn({
  bool reAuthenticate = false,
  bool suppressErrors = true,
  bool silentOnly = false,
}) async {
  var debugPrefix = '$runtimeType.signIn()';
  lazy.log('$debugPrefix:', forced: debugLog);

  var tokenDetails = TokenDetails(
    interactive: !silentOnly,
    scopes: scopes,
  );

  try {
    // No checking if token is empty or not,
    // just get it again as it should be fast,
    // and trigger login if necessary

    // authTokenResult = Map{'token': token, 'grantedScopes': scopes}
    GetAuthTokenResult authTokenResult =
        await _api.getAuthToken(tokenDetails);
    lazy.log('$debugPrefix:authTokenResult:${authTokenResult.toString()}',
        forced: debugLog);
    // we only need token
    token.value = authTokenResult.token ?? '';
    _photoUrl = await getPhotoUrl(token.value);
    isSignedIn.value = token.value.isNotEmpty;
  } catch (e) {
    _reset();
    lazy.log('$debugPrefix:catch:$e', forced: debugLog);
    throw ('$debugPrefix:$e');
  }
}