TF-2810 Handle crashed when no browser available for OIDC
This commit is contained in:
committed by
Dat H. Pham
parent
5a22ea0509
commit
d2fdbfab0f
@@ -1,4 +1,21 @@
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
class NotFoundDataResourceRecordException implements Exception {}
|
||||
|
||||
class NotFoundUrlException implements Exception {}
|
||||
class NotFoundUrlException implements Exception {}
|
||||
|
||||
class NoSuitableBrowserForOIDCException implements Exception {
|
||||
|
||||
static const noBrowserAvailableCode = 'no_browser_available';
|
||||
|
||||
static bool verifyException(dynamic exception) {
|
||||
if (exception is PlatformException) {
|
||||
if (exception.code == noBrowserAvailableCode) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,10 +3,12 @@ import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:model/account/authentication_type.dart';
|
||||
import 'package:model/account/personal_account.dart';
|
||||
import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/token_oidc.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/exceptions/login_exception.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/extensions/oidc_configuration_extensions.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
|
||||
@@ -44,6 +46,13 @@ class GetTokenOIDCInteractor {
|
||||
)
|
||||
);
|
||||
yield Right<Failure, Success>(GetTokenOIDCSuccess(tokenOIDC, config));
|
||||
} on PlatformException catch (e) {
|
||||
logError('GetTokenOIDCInteractor::execute(): PlatformException ${e.message} - ${e.stacktrace}');
|
||||
if (NoSuitableBrowserForOIDCException.verifyException(e)) {
|
||||
yield Left<Failure, Success>(GetTokenOIDCFailure(NoSuitableBrowserForOIDCException()));
|
||||
} else {
|
||||
yield Left<Failure, Success>(GetTokenOIDCFailure(e));
|
||||
}
|
||||
} catch (e) {
|
||||
logError('GetTokenOIDCInteractor::execute(): $e');
|
||||
yield Left<Failure, Success>(GetTokenOIDCFailure(e));
|
||||
|
||||
Reference in New Issue
Block a user