TF-939 Inject Vacation's components depend on the session capability

This commit is contained in:
Dat PHAM HOANG
2022-09-14 17:35:21 +07:00
committed by Dat H. Pham
parent 2a65c30772
commit ccc63e4fc1
9 changed files with 121 additions and 69 deletions
@@ -4,6 +4,8 @@ import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.dart';
import 'package:dartz/dartz.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';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:model/account/authentication_type.dart';
import 'package:model/oidc/token_oidc.dart';
@@ -22,9 +24,11 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/a
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/log_out_oidc_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_interactors_bindings.dart';
import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart';
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
import 'package:tmail_ui_user/main/error/capability_validator.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -181,4 +185,13 @@ abstract class ReloadableController extends BaseController {
void injectAutoCompleteBindings() {
AutoCompleteBindings().dependencies();
}
void injectVacationBindings(Session? session, AccountId? accountId) {
try {
requireCapability(session!, accountId!, [CapabilityIdentifier.jmapVacationResponse]);
VacationInteractorsBindings().dependencies();
} catch(e) {
logError('MailboxDashBoardController::injectVacationBindings(): exception: $e');
}
}
}