diff --git a/lib/features/cleanup/domain/model/cleanup_rule.dart b/lib/features/cleanup/domain/model/cleanup_rule.dart new file mode 100644 index 000000000..26e9ce1da --- /dev/null +++ b/lib/features/cleanup/domain/model/cleanup_rule.dart @@ -0,0 +1,22 @@ + +import 'package:equatable/equatable.dart'; + +class CleanupRule with EquatableMixin { + final Duration cachingEmailPeriod; + + CleanupRule(this.cachingEmailPeriod); + + @override + List get props => [cachingEmailPeriod]; +} + +class Duration with EquatableMixin { + static final defaultValue = Duration(7); + + final int countDay; + + Duration(this.countDay); + + @override + List get props => [countDay]; +} \ No newline at end of file diff --git a/lib/features/cleanup/domain/repository/cleanup_repository.dart b/lib/features/cleanup/domain/repository/cleanup_repository.dart new file mode 100644 index 000000000..af4443ea2 --- /dev/null +++ b/lib/features/cleanup/domain/repository/cleanup_repository.dart @@ -0,0 +1,5 @@ +import 'package:tmail_ui_user/features/cleanup/domain/model/cleanup_rule.dart'; + +abstract class CleanupRepository { + Future cleanEmailCache(CleanupRule cleanupRule); +} diff --git a/lib/features/cleanup/domain/state/cleanup_email_cache_state.dart b/lib/features/cleanup/domain/state/cleanup_email_cache_state.dart new file mode 100644 index 000000000..3b26aa87e --- /dev/null +++ b/lib/features/cleanup/domain/state/cleanup_email_cache_state.dart @@ -0,0 +1,18 @@ +import 'package:core/core.dart'; + +class CleanupEmailCacheSuccess extends UIState { + + CleanupEmailCacheSuccess(); + + @override + List get props => []; +} + +class CleanupEmailCacheFailure extends FeatureFailure { + final exception; + + CleanupEmailCacheFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/cleanup/domain/usecases/cleanup_email_cache_interactor.dart b/lib/features/cleanup/domain/usecases/cleanup_email_cache_interactor.dart new file mode 100644 index 000000000..64c2a224c --- /dev/null +++ b/lib/features/cleanup/domain/usecases/cleanup_email_cache_interactor.dart @@ -0,0 +1,20 @@ +import 'package:core/core.dart'; +import 'package:dartz/dartz.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/model/cleanup_rule.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/repository/cleanup_repository.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/state/cleanup_email_cache_state.dart'; + +class CleanupEmailCacheInteractor { + final CleanupRepository cleanupRepository; + + CleanupEmailCacheInteractor(this.cleanupRepository); + + Future> execute(CleanupRule cleanupRule) async { + try { + await cleanupRepository.cleanEmailCache(cleanupRule); + return Right(CleanupEmailCacheSuccess()); + } catch (e) { + return Left(CleanupEmailCacheFailure(e)); + } + } +} \ No newline at end of file