diff --git a/core/lib/data/network/dio_client.dart b/core/lib/data/network/dio_client.dart index 20c7928be..14ea1805a 100644 --- a/core/lib/data/network/dio_client.dart +++ b/core/lib/data/network/dio_client.dart @@ -12,6 +12,9 @@ class DioClient { Map getHeaders() => Map.from(_dio.options.headers); + Dio _createNewDio() => Dio() + ..httpClientAdapter = _dio.httpClientAdapter; + Future get( String path, { Map? queryParameters, @@ -32,6 +35,25 @@ class DioClient { .catchError((error) => throw error); } + Future getWithNewDio( + String path, { + Map? queryParameters, + Options? options, + CancelToken? cancelToken, + ProgressCallback? onReceiveProgress, + }) async { + return await _createNewDio() + .get( + path, + queryParameters: queryParameters, + options: options, + cancelToken: cancelToken, + onReceiveProgress: onReceiveProgress, + ) + .then((value) => value.data) + .catchError((error) => throw error); + } + Future post( String path, { data, diff --git a/lib/features/base/reloadable/reloadable_controller.dart b/lib/features/base/reloadable/reloadable_controller.dart index 57918d877..b39c7fd0e 100644 --- a/lib/features/base/reloadable/reloadable_controller.dart +++ b/lib/features/base/reloadable/reloadable_controller.dart @@ -1,6 +1,7 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart'; @@ -23,6 +24,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/update_account_cach import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_interactors_bindings.dart'; import 'package:tmail_ui_user/main/error/capability_validator.dart'; import 'package:tmail_ui_user/main/exceptions/remote_exception.dart'; +import 'package:tmail_ui_user/main/utils/app_config.dart'; abstract class ReloadableController extends BaseController { final GetSessionInteractor getSessionInteractor = Get.find(); @@ -127,10 +129,15 @@ abstract class ReloadableController extends BaseController { authorizationInterceptors.setTokenAndAuthorityOidc(newToken: tokenOIDC, newConfig: oidcConfiguration); authorizationIsolateInterceptors.setTokenAndAuthorityOidc(newToken: tokenOIDC, newConfig: oidcConfiguration); - getOidcUserInfo(oidcConfiguration); + if (_shouldCallUserInfo) { + getOidcUserInfo(oidcConfiguration); + } } } + bool get _shouldCallUserInfo => + !PlatformInfo.isWeb || AppConfig.isSaasPlatForm; + void getSessionAction() { consumeState(getSessionInteractor.execute()); } diff --git a/lib/features/login/data/network/oidc_http_client.dart b/lib/features/login/data/network/oidc_http_client.dart index 43b3b7370..883f0033c 100644 --- a/lib/features/login/data/network/oidc_http_client.dart +++ b/lib/features/login/data/network/oidc_http_client.dart @@ -77,7 +77,7 @@ class OIDCHttpClient { } Future discoverOIDC(OIDCConfiguration configuration) async { - final result = await _dioClient.get(configuration.discoveryUrl); + final result = await _dioClient.getWithNewDio(configuration.discoveryUrl); log('OIDCHttpClient::discoverOIDC(): RESULT: $result'); if (result is Map) { return OIDCDiscoveryResponse.fromJson(result);