Cache Linagora Ecosystem in controller for Scribe

This commit is contained in:
Théo Poizat
2026-03-03 08:46:13 +01:00
committed by Dat H. Pham
parent 3ebb9113bc
commit 32cf606aea
10 changed files with 72 additions and 75 deletions
@@ -1,44 +1,49 @@
import 'package:core/utils/app_logger.dart';
import 'package:scribe/scribe/ai/data/service/prompt_service.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_scribe_prompt_url_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_scribe_prompt_url_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_linagora_ecosystem_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_linagora_system_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';
extension SetupScribePromptUrlExtension on MailboxDashBoardController {
void loadScribePromptUrl() {
final interactor = getBinding<GetScribePromptUrlInteractor>();
void loadLinagoraEcosystem() {
if (cachedLinagoraEcosystem != null) {
_applyScribePromptUrl(cachedLinagoraEcosystem!.scribePromptUrl);
return;
}
final interactor = getBinding<GetLinagoraEcosystemInteractor>();
if (interactor != null) {
final baseUrl = dynamicUrlInterceptors.jmapUrl;
if (baseUrl != null && baseUrl.isNotEmpty) {
consumeState(interactor.execute(baseUrl));
} else {
logError('SetupScribePromptUrlExtension::loadScribePromptUrl: jmapUrl is null or empty');
logError('SetupScribePromptUrlExtension::loadLinagoraEcosystem: jmapUrl is null or empty');
}
} else {
logError('SetupScribePromptUrlExtension::loadScribePromptUrl: GetScribePromptUrlInteractor not found');
logError('SetupScribePromptUrlExtension::loadLinagoraEcosystem: GetLinagoraEcosystemInteractor not found');
}
}
void handleGetScribePromptUrlSuccess(GetScribePromptUrlSuccess success) {
final promptService = getBinding<PromptService>();
if (promptService != null) {
promptService.setPromptUrl(success.promptUrl);
} else {
logWarning('SetupScribePromptUrlExtension::handleGetScribePromptUrlFailure: PromptService not found');
}
void handleGetLinagoraEcosystemSuccess(GetLinagoraEcosystemSuccess success) {
cachedLinagoraEcosystem = success.linagoraEcosystem;
_applyScribePromptUrl(cachedLinagoraEcosystem!.scribePromptUrl);
}
void handleGetScribePromptUrlFailure(GetScribePromptUrlFailure failure) {
logError('SetupScribePromptUrlExtension::handleGetScribePromptUrlFailure: GetScribePromptUrl failed - ${failure.exception}');
void handleGetLinagoraEcosystemFailure(GetLinagoraEcosystemFailure failure) {
logError('SetupScribePromptUrlExtension::handleGetLinagoraEcosystemFailure: GetScribePromptUrl failed - ${failure.exception}');
_applyScribePromptUrl(null);
}
void _applyScribePromptUrl(String? promptUrl) {
final promptService = getBinding<PromptService>();
if (promptService != null) {
promptService.setPromptUrl(null);
promptService.setPromptUrl(promptUrl);
} else {
logWarning('SetupScribePromptUrlExtension::handleGetScribePromptUrlFailure: PromptService not found');
logWarning('SetupScribePromptUrlExtension::_applyScribePromptUrl: PromptService not found');
}
}
}