signInWithCustomToken method

Future<String?> signInWithCustomToken(
  1. BuildContext context, {
  2. required String jwtToken,
})

Implementation

Future<String?> signInWithCustomToken(
    BuildContext context,
    {required String jwtToken}
) async {
  try {
    // Get the ScopeManager to access DataContext
    // and Evaluate jwtToken from ensemble.storage
    ScopeManager? scopeManager = ScreenController().getScopeManager(context);
    String evaluatedJwtToken = jwtToken;
    if (scopeManager != null) {
      evaluatedJwtToken =
          scopeManager.dataContext.eval(jwtToken)?.toString() ?? jwtToken;
    }
    customFirebaseApp ??= await _initializeFirebaseSignIn();
    final _auth = FirebaseAuth.instanceFor(app: customFirebaseApp!);

    UserCredential userCredential = await _signInWithCustomTokenWithRetry(
      _auth,
      evaluatedJwtToken,
    );
    User? user = userCredential.user;
    if (user == null) {
      throw StateError('Firebase sign-in failed. User is null.');
    }
    String? firebaseToken = await user.getIdToken();

    updateCurrentFirebaseUser(context, user);
    return firebaseToken;
  } catch (e) {
    debugPrint('Error during Firebase sign-in: $e');
    rethrow;
  }
}