import 'package:core/utils/app_logger.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:labels/labels.dart'; import 'package:tmail_ui_user/features/labels/domain/state/create_new_label_state.dart'; import 'package:tmail_ui_user/features/labels/domain/usecases/create_new_label_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import '../models/provisioning_email.dart'; import '../models/provisioning_label.dart'; mixin ProvisioningLabelScenarioMixin { Future> provisionLabels( List provisioningLabels, ) async { if (provisioningLabels.isEmpty) { return []; } final dashboardController = getBinding(); final createLabelInteractor = getBinding(); final accountId = dashboardController?.accountId.value; final labelController = dashboardController?.labelController; if (dashboardController == null || createLabelInteractor == null || accountId == null) { log( 'ProvisioningLabelScenarioMixin::provisionLabels ' 'skipped: missing dashboardController, CreateNewLabelInteractor, or accountId', ); return []; } final List results = await Future.wait(provisioningLabels.map( (label) => _createLabel(createLabelInteractor, accountId, label), )); final List