TF-4193 Handle multi click to enable Label visibility feature

This commit is contained in:
dab246
2025-12-09 13:43:43 +07:00
committed by Dat H. Pham
parent d1cd9efbab
commit 10038a3836
23 changed files with 330 additions and 43 deletions
@@ -12,4 +12,8 @@ abstract class ManageAccountRepository {
Future<PreferencesSetting> getLocalSettings();
Future<AIScribeConfig> getAiScribeConfigLocalSettings();
Future<bool> getLabelVisibility();
Future<void> saveLabelVisibility(bool visible);
}
@@ -0,0 +1,17 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class GettingLabelVisibility extends LoadingState {}
class GetLabelVisibilitySuccess extends UIState {
final bool visible;
GetLabelVisibilitySuccess(this.visible);
@override
List<Object?> get props => [...super.props, visible];
}
class GetLabelVisibilityFailure extends FeatureFailure {
GetLabelVisibilityFailure(dynamic exception) : super(exception: exception);
}
@@ -0,0 +1,10 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class SavingLabelVisibility extends LoadingState {}
class SaveLabelVisibilitySuccess extends UIState {}
class SaveLabelVisibilityFailure extends FeatureFailure {
SaveLabelVisibilityFailure(dynamic exception) : super(exception: exception);
}
@@ -0,0 +1,23 @@
import 'dart:core';
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_label_visibility_state.dart';
class GetLabelVisibilityInteractor {
final ManageAccountRepository _manageAccountRepository;
GetLabelVisibilityInteractor(this._manageAccountRepository);
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right(GettingLabelVisibility());
final visible = await _manageAccountRepository.getLabelVisibility();
yield Right(GetLabelVisibilitySuccess(visible));
} catch (exception) {
yield Left(GetLabelVisibilityFailure(exception));
}
}
}
@@ -0,0 +1,23 @@
import 'dart:core';
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/save_label_visibility_state.dart';
class SaveLabelVisibilityInteractor {
final ManageAccountRepository _manageAccountRepository;
SaveLabelVisibilityInteractor(this._manageAccountRepository);
Stream<Either<Failure, Success>> execute({bool visible = true}) async* {
try {
yield Right(SavingLabelVisibility());
await _manageAccountRepository.saveLabelVisibility(visible);
yield Right(SaveLabelVisibilitySuccess());
} catch (exception) {
yield Left(SaveLabelVisibilityFailure(exception));
}
}
}