runAuthAction method

void runAuthAction(
  1. Future<void> action(), {
  2. AuthState endState = AuthState.signedIn,
})

Implementation

void runAuthAction(Future<void> Function() action,
    {AuthState endState = AuthState.signedIn}) async {
  runInAction(() => authState.value = AuthState.inProgress);
  try {
    _cancelOtherOperations();
    _resetOtherFlows();
    final operation =
        CancelableOperation<void>.fromFuture(action(), onCancel: () {
      runInAction(() => authState.value = AuthState.cancelled);
    });
    _operations.add(operation);

    await operation.valueOrCancellation();

    if (operation.isCompleted) {
      runInAction(() => authState.value = endState);
    }
  } catch (e) {
    error = e;
    runInAction(() => authState.value = AuthState.error);
  }
}