refreshSession method

Future<AuthUserSession> refreshSession(
  1. String userId
)

Deprecated Refreshes the session for the given userId by fetching a new session from the server.

Implementation

Future<AuthUserSession> refreshSession(String userId) async {
  try {
    return await monitoringService.monitorAction<AuthUserSession>(
      actionName: '${_providerName}_refresh_session',
      provider: _providerName,
      attributes: {'userId': userId},
      action: (trace) async {
        _ensureInitialized();

        var request = UpdateSessionRequest(userId);
        logger.debug(this, 'session request created successfully');
        var newSessionDto = await sessionService.refreshSession(request);
        var newSesion = AuthUserSession.mapFromDto(dto: newSessionDto);

        logger.debug(this, 'user session created - pending validation');
        await validateSession(newSesion);

        logger.info(this, 'user session validation passed, session is ready');

        await _localSessionRepository.saveSession(newSesion);

        if (_localSessionRepository.activeSession?.userId == userId) {
          await _localSessionRepository.setActiveSession(newSesion);

          logger.info(this, 'active session updated successfully');
        }

        return newSesion;
      },
    );
  } catch (e) {
    logger.error(
      this,
      'Refresh failed, attempting to create new session.',
      error: e,
      stackTrace: StackTrace.current,
    );

    rethrow;
  }
}