signInWithCustomToken method
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 _auth.signInWithCustomToken(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;
}
}