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,5 +1,6 @@
import 'package:equatable/equatable.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/api_url_linagora_ecosystem.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/app_linagora_ecosystem.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/converters/linagora_ecosystem_converter.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_identifier.dart';
@@ -44,4 +45,7 @@ extension LinagoraEcosystemExtension on LinagoraEcosystem {
List<AppLinagoraEcosystem> get listAppLinagoraEcosystemOnAndroid {
return listAppLinagoraEcosystem.where((app) => app.isAppAndroidEnabled).toList();
}
String? get scribePromptUrl =>
(properties?[LinagoraEcosystemIdentifier.scribePromptUrl] as ApiUrlLinagoraEcosystem?)?.value;
}
@@ -1,3 +1,5 @@
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
abstract class LinagoraEcosystemRepository {
Future<String?> getScribePromptUrl(String baseUrl);
Future<LinagoraEcosystem> getLinagoraEcosystem(String baseUrl);
}
@@ -0,0 +1,21 @@
import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/state/failure.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
class GetLinagoraEcosystemSuccess extends Success {
final LinagoraEcosystem linagoraEcosystem;
GetLinagoraEcosystemSuccess(this.linagoraEcosystem);
@override
List<Object?> get props => [linagoraEcosystem];
}
class GetLinagoraEcosystemFailure extends Failure {
final dynamic exception;
GetLinagoraEcosystemFailure(this.exception);
@override
List<Object?> get props => [exception];
}
@@ -1,20 +0,0 @@
import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/state/failure.dart';
class GetScribePromptUrlSuccess extends Success {
final String? promptUrl;
GetScribePromptUrlSuccess(this.promptUrl);
@override
List<Object?> get props => [promptUrl];
}
class GetScribePromptUrlFailure extends Failure {
final dynamic exception;
GetScribePromptUrlFailure(this.exception);
@override
List<Object?> get props => [exception];
}
@@ -1,20 +1,20 @@
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/linagora_ecosystem_repository.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/state/get_linagora_ecosystem_state.dart';
class GetScribePromptUrlInteractor {
class GetLinagoraEcosystemInteractor {
final LinagoraEcosystemRepository _linagoraEcosystemRepository;
GetScribePromptUrlInteractor(this._linagoraEcosystemRepository);
GetLinagoraEcosystemInteractor(this._linagoraEcosystemRepository);
Stream<Either<Failure, Success>> execute(String baseUrl) async* {
try {
final promptUrl = await _linagoraEcosystemRepository.getScribePromptUrl(baseUrl);
final linagoraEcosystem = await _linagoraEcosystemRepository.getLinagoraEcosystem(baseUrl);
yield Right(GetScribePromptUrlSuccess(promptUrl));
yield Right(GetLinagoraEcosystemSuccess(linagoraEcosystem));
} catch (e) {
yield Left(GetScribePromptUrlFailure(e));
yield Left(GetLinagoraEcosystemFailure(e));
}
}
}