refreshJwtToken method
Future<void>
refreshJwtToken(
{ - String? refreshToken,
- bool? notify,
- Dio? internalDio,
- bool interceptRefreshToken = false,
})
Implementation
Future<void> refreshJwtToken(
{String? refreshToken,
bool? notify,
Dio? internalDio,
bool interceptRefreshToken = false}) async {
_refreshTokenPending = true;
try {
refreshToken ??= _refreshToken;
if (_isTokenValid(refreshToken)) {
var refreshTokenRequest = RefreshTokenRequest(refreshToken!);
try {
var targetDio = internalDio ?? _dio;
var response = await targetDio.post('/api/auth/token',
data: jsonEncode(refreshTokenRequest));
var loginResponse = LoginResponse.fromJson(response.data);
await _setUserFromJwtToken(
loginResponse.token, loginResponse.refreshToken, notify);
} catch (e) {
await _clearJwtToken();
rethrow;
}
} else {
await _clearJwtToken();
if (interceptRefreshToken) {
throw ThingsboardError(
message: 'Session expired!',
errorCode: ThingsBoardErrorCode.jwtTokenExpired);
}
}
} finally {
_refreshTokenPending = false;
}
}