TF-3449 Setup Sender-set important flag in Setting View

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-02-20 02:11:28 +07:00
committed by Dat H. Pham
parent f40056ea99
commit d2ee165f49
41 changed files with 675 additions and 407 deletions
@@ -1,3 +1,5 @@
class NotFoundServerSettingsException implements Exception {}
class NotFoundSettingOptionException implements Exception {}
class CanNotUpdateServerSettingsException implements Exception {}
@@ -1,18 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class GettingAlwaysReadReceiptSetting extends LoadingState {}
class GetAlwaysReadReceiptSettingSuccess extends UIState {
final bool alwaysReadReceiptEnabled;
GetAlwaysReadReceiptSettingSuccess({required this.alwaysReadReceiptEnabled});
@override
List<Object?> get props => [alwaysReadReceiptEnabled];
}
class GetAlwaysReadReceiptSettingFailure extends FeatureFailure {
GetAlwaysReadReceiptSettingFailure(dynamic exception)
: super(exception: exception);
}
@@ -0,0 +1,19 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:server_settings/server_settings/tmail_server_settings.dart';
class GettingServerSetting extends LoadingState {}
class GetServerSettingSuccess extends UIState {
final TMailServerSettingOptions settingOption;
GetServerSettingSuccess(this.settingOption);
@override
List<Object?> get props => [settingOption];
}
class GetServerSettingFailure extends FeatureFailure {
GetServerSettingFailure(dynamic exception)
: super(exception: exception);
}
@@ -1,17 +0,0 @@
import 'package:core/core.dart';
class UpdatingAlwaysReadReceiptSetting extends LoadingState {}
class UpdateAlwaysReadReceiptSettingSuccess extends UIState {
final bool alwaysReadReceiptIsEnabled;
UpdateAlwaysReadReceiptSettingSuccess({required this.alwaysReadReceiptIsEnabled});
@override
List<Object?> get props => [alwaysReadReceiptIsEnabled];
}
class UpdateAlwaysReadReceiptSettingFailure extends FeatureFailure {
UpdateAlwaysReadReceiptSettingFailure(dynamic exception)
: super(exception: exception);
}
@@ -0,0 +1,19 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:server_settings/server_settings/tmail_server_settings.dart';
class UpdatingServerSetting extends LoadingState {}
class UpdateServerSettingSuccess extends UIState {
final TMailServerSettingOptions settingOption;
UpdateServerSettingSuccess(this.settingOption);
@override
List<Object?> get props => [settingOption];
}
class UpdateServerSettingFailure extends FeatureFailure {
UpdateServerSettingFailure(dynamic exception)
: super(exception: exception);
}
@@ -1,23 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:tmail_ui_user/features/server_settings/domain/repository/server_settings_repository.dart';
import 'package:tmail_ui_user/features/server_settings/domain/state/get_always_read_receipt_setting_state.dart';
class GetAlwaysReadReceiptSettingInteractor {
final ServerSettingsRepository _serverSettingsRepository;
GetAlwaysReadReceiptSettingInteractor(this._serverSettingsRepository);
Stream<Either<Failure, Success>> execute(AccountId accountId) async* {
try {
yield Right(GettingAlwaysReadReceiptSetting());
final result = await _serverSettingsRepository.getServerSettings(accountId);
yield Right(GetAlwaysReadReceiptSettingSuccess(
alwaysReadReceiptEnabled: result.settings?.alwaysReadReceipts ?? false));
} catch (e) {
yield Left(GetAlwaysReadReceiptSettingFailure(e));
}
}
}
@@ -0,0 +1,28 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:tmail_ui_user/features/server_settings/domain/exceptions/server_settings_exception.dart';
import 'package:tmail_ui_user/features/server_settings/domain/repository/server_settings_repository.dart';
import 'package:tmail_ui_user/features/server_settings/domain/state/get_server_setting_state.dart';
class GetServerSettingInteractor {
final ServerSettingsRepository _serverSettingsRepository;
GetServerSettingInteractor(this._serverSettingsRepository);
Stream<Either<Failure, Success>> execute(AccountId accountId) async* {
try {
yield Right(GettingServerSetting());
final serverSetting = await _serverSettingsRepository.getServerSettings(accountId);
final settingOption = serverSetting.settings;
if (settingOption == null) {
yield Left(GetServerSettingFailure(NotFoundSettingOptionException()));
} else {
yield Right(GetServerSettingSuccess(settingOption));
}
} catch (e) {
yield Left(GetServerSettingFailure(e));
}
}
}
@@ -1,31 +0,0 @@
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:server_settings/server_settings/tmail_server_settings.dart';
import 'package:tmail_ui_user/features/server_settings/domain/repository/server_settings_repository.dart';
import 'package:tmail_ui_user/features/server_settings/domain/state/update_always_read_receipt_setting_state.dart';
class UpdateAlwaysReadReceiptSettingInteractor {
final ServerSettingsRepository _serverSettingsRepository;
UpdateAlwaysReadReceiptSettingInteractor(this._serverSettingsRepository);
Stream<Either<Failure, Success>> execute(
AccountId accountId,
bool isEnabled
) async* {
yield Right(UpdatingAlwaysReadReceiptSetting());
try {
final result = await _serverSettingsRepository.updateServerSettings(
accountId,
TMailServerSettings(
settings: TMailServerSettingOptions(alwaysReadReceipts: isEnabled)
)
);
yield Right(UpdateAlwaysReadReceiptSettingSuccess(
alwaysReadReceiptIsEnabled: result.settings?.alwaysReadReceipts ?? true));
} catch (e) {
yield Left(UpdateAlwaysReadReceiptSettingFailure(e));
}
}
}
@@ -0,0 +1,35 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:server_settings/server_settings/tmail_server_settings.dart';
import 'package:tmail_ui_user/features/server_settings/domain/exceptions/server_settings_exception.dart';
import 'package:tmail_ui_user/features/server_settings/domain/repository/server_settings_repository.dart';
import 'package:tmail_ui_user/features/server_settings/domain/state/update_server_setting_state.dart';
class UpdateServerSettingInteractor {
final ServerSettingsRepository _serverSettingsRepository;
UpdateServerSettingInteractor(this._serverSettingsRepository);
Stream<Either<Failure, Success>> execute(
AccountId accountId,
TMailServerSettingOptions newSettingOption,
) async* {
yield Right(UpdatingServerSetting());
try {
final serverSetting = await _serverSettingsRepository.updateServerSettings(
accountId,
TMailServerSettings(settings: newSettingOption),
);
final settingOption = serverSetting.settings;
if (settingOption == null) {
yield Left(UpdateServerSettingFailure(NotFoundServerSettingsException()));
} else {
yield Right(UpdateServerSettingSuccess(settingOption));
}
} catch (e) {
yield Left(UpdateServerSettingFailure(e));
}
}
}