TF-2311 Set timeout when get session

Signed-off-by: dab246 <tdvu@linagora.com>

Signed-off-by: dab246 <tdvu@linagora.com>

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 3e2c22c65101ee08e0e48ef0e4a737e510b387fb)
This commit is contained in:
dab246
2023-11-13 19:24:04 +07:00
committed by Dat Vu
parent 603acaa35a
commit 713c924c67
5 changed files with 33 additions and 5 deletions
@@ -19,7 +19,7 @@ import 'package:tmail_ui_user/features/upload/data/network/file_uploader.dart';
class AuthorizationInterceptors extends QueuedInterceptorsWrapper {
static const int _maxRetryCount = 3;
static const String RETRY_KEY = 'Retry';
static const String _retryKey = 'Retry';
final Dio _dio;
final AuthenticationClientBase _authenticationClient;
@@ -59,7 +59,7 @@ class AuthorizationInterceptors extends QueuedInterceptorsWrapper {
@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
log('AuthorizationInterceptors::onRequest():data: ${options.data} | header: ${options.headers}');
log('AuthorizationInterceptors::onRequest():url: ${options.uri} | data: ${options.data} | header: ${options.headers}');
switch(_authenticationType) {
case AuthenticationType.basic:
if (_authorization != null) {
@@ -83,7 +83,7 @@ class AuthorizationInterceptors extends QueuedInterceptorsWrapper {
try {
final requestOptions = err.requestOptions;
final extraInRequest = requestOptions.extra;
var retries = extraInRequest[RETRY_KEY] ?? 0;
var retries = extraInRequest[_retryKey] ?? 0;
if (_validateToRefreshToken(err)) {
log('AuthorizationInterceptors::onError:>> _validateToRefreshToken');
@@ -145,7 +145,7 @@ class AuthorizationInterceptors extends QueuedInterceptorsWrapper {
retries++;
requestOptions.headers[HttpHeaders.authorizationHeader] = _getTokenAsBearerHeader(_token!.token);
requestOptions.extra = {RETRY_KEY: retries};
requestOptions.extra = {_retryKey: retries};
final response = await _dio.fetch(requestOptions);
return handler.resolve(response);
@@ -218,4 +218,4 @@ class AuthorizationInterceptors extends QueuedInterceptorsWrapper {
_configOIDC = null;
_authenticationType = AuthenticationType.none;
}
}
}
@@ -0,0 +1,22 @@
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/platform_info.dart';
import 'package:dio/dio.dart';
import 'package:tmail_ui_user/features/login/data/network/endpoint.dart';
class TimeOutInterceptors extends InterceptorsWrapper {
static const Duration _sessionConnectTimeout = Duration(milliseconds: 5000);
static const Duration _sessionReceiveTimeout = Duration(milliseconds: 5000);
@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
log('TimeOutInterceptors::onRequest():url: ${options.uri}');
if (PlatformInfo.isMobile && _validateToGetSession(options.uri)) {
options.connectTimeout = _sessionConnectTimeout;
options.receiveTimeout = _sessionReceiveTimeout;
}
super.onRequest(options, handler);
}
bool _validateToGetSession(Uri uri) => uri.toString().endsWith(Endpoint.sessionPath.path);
}
@@ -2,4 +2,5 @@ import 'package:core/data/network/config/service_path.dart';
class Endpoint {
static final ServicePath webFinger = ServicePath('/.well-known/webfinger');
static final ServicePath sessionPath = ServicePath('/.well-known/jmap');
}
@@ -16,6 +16,7 @@ import 'package:tmail_ui_user/features/login/data/local/account_cache_manager.da
import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart';
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
import 'package:tmail_ui_user/features/login/data/network/config/time_out_interceptors.dart';
import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart';
import 'package:tmail_ui_user/features/login/data/utils/library_platform/app_auth_plugin/app_auth_plugin.dart';
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
@@ -71,12 +72,14 @@ class NetworkBindings extends Bindings {
Get.find<AccountCacheManager>(),
));
Get.put(LocaleInterceptor());
Get.put(TimeOutInterceptors());
Get.find<Dio>().interceptors.add(Get.find<DynamicUrlInterceptors>());
Get.find<Dio>().interceptors.add(Get.find<AuthorizationInterceptors>());
if (kDebugMode) {
Get.find<Dio>().interceptors.add(LogInterceptor(requestBody: true));
}
Get.find<Dio>().interceptors.add(Get.find<LocaleInterceptor>());
Get.find<Dio>().interceptors.add(Get.find<TimeOutInterceptors>());
}
void _bindingApi() {
@@ -9,6 +9,7 @@ import 'package:tmail_ui_user/features/login/data/local/account_cache_manager.da
import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart';
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
import 'package:tmail_ui_user/features/login/data/network/config/time_out_interceptors.dart';
import 'package:tmail_ui_user/features/login/data/utils/library_platform/app_auth_plugin/app_auth_plugin.dart';
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_worker.dart';
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
@@ -49,6 +50,7 @@ class NetworkIsolateBindings extends Bindings {
dio.interceptors.add(LogInterceptor(requestBody: true));
}
dio.interceptors.add(Get.find<LocaleInterceptor>());
dio.interceptors.add(Get.find<TimeOutInterceptors>());
}
void _bindingApi() {