recoverSession method
Recover session from stringified Session.
Implementation
Future<AuthResponse> recoverSession(String jsonStr) async {
try {
final session = Session.fromJson(json.decode(jsonStr));
if (session == null) {
await signOut();
throw notifyException(
AuthException('Current session is missing data.'),
);
}
if (session.isExpired) {
final refreshToken = session.refreshToken;
if (_autoRefreshToken && refreshToken != null) {
return await _callRefreshToken(refreshToken);
} else {
await signOut();
throw notifyException(AuthException('Session expired.'));
}
} else {
final shouldEmitEvent = _currentSession == null ||
_currentSession?.user.id != session.user.id;
_saveSession(session);
if (shouldEmitEvent) {
notifyAllSubscribers(AuthChangeEvent.tokenRefreshed);
}
return AuthResponse(session: session);
}
} catch (error) {
notifyException(error);
rethrow;
}
}