From a3dae605a411e011b118b0aa02ade541345349a6 Mon Sep 17 00:00:00 2001 From: HuyNguyen Date: Mon, 16 Jan 2023 12:39:39 +0700 Subject: [PATCH] TF-1363: [Domain] [Domain] Store, Get, Delete spamReportState in UseCase --- configurations/env.fcm | 29 +++++++++++++++---- env.file | 2 +- .../spam_report_repository_impl.dart | 16 ++++++++++ .../domain/model/spam_report_state.dart | 16 ++++++++++ .../repository/spam_report_repository.dart | 7 +++++ ...st_time_dismissed_spam_reported_state.dart | 21 ++++++++++++++ .../state/delete_spam_report_state.dart | 21 ++++++++++++++ .../domain/state/get_spam_report_state.dart | 23 +++++++++++++++ .../domain/state/store_spam_report_state.dart | 21 ++++++++++++++ ...me_dismissed_spam_reported_interactor.dart | 21 ++++++++++++++ .../delete_spam_report_state_interactor.dart | 21 ++++++++++++++ .../get_spam_report_state_interactor.dart | 23 +++++++++++++++ .../store_spam_report_state_interactor.dart | 23 +++++++++++++++ 13 files changed, 237 insertions(+), 7 deletions(-) create mode 100644 lib/features/mailbox_dashboard/domain/model/spam_report_state.dart create mode 100644 lib/features/mailbox_dashboard/domain/state/delete_last_time_dismissed_spam_reported_state.dart create mode 100644 lib/features/mailbox_dashboard/domain/state/delete_spam_report_state.dart create mode 100644 lib/features/mailbox_dashboard/domain/state/get_spam_report_state.dart create mode 100644 lib/features/mailbox_dashboard/domain/state/store_spam_report_state.dart create mode 100644 lib/features/mailbox_dashboard/domain/usecases/delete_last_time_dismissed_spam_reported_interactor.dart create mode 100644 lib/features/mailbox_dashboard/domain/usecases/delete_spam_report_state_interactor.dart create mode 100644 lib/features/mailbox_dashboard/domain/usecases/get_spam_report_state_interactor.dart create mode 100644 lib/features/mailbox_dashboard/domain/usecases/store_spam_report_state_interactor.dart diff --git a/configurations/env.fcm b/configurations/env.fcm index 341f7206d..847e2b365 100644 --- a/configurations/env.fcm +++ b/configurations/env.fcm @@ -1,6 +1,23 @@ -FIREBASE_ANDROID_API_KEY=example -FIREBASE_ANDROID_APP_ID=example -FIREBASE_ANDROID_MESSAGING_SENDER_ID=example -FIREBASE_ANDROID_PROJECT_ID=example -FIREBASE_ANDROID_DATABASE_URL=https://example.com -FIREBASE_ANDROID_STORAGE_BUCKET=example.com \ No newline at end of file +FIREBASE_ANDROID_API_KEY=AIzaSyDPn3T4BMShrcedtqzA-8Lh3Fsm1EGB7S8 +FIREBASE_ANDROID_APP_ID=1:611786135906:android:6fa64d94eb8f8603e3743b +FIREBASE_ANDROID_MESSAGING_SENDER_ID=611786135906 +FIREBASE_ANDROID_PROJECT_ID=fir-jmap-poc +FIREBASE_ANDROID_DATABASE_URL=https://fir-jmap-poc-default-rtdb.asia-southeast1.firebasedatabase.app +FIREBASE_ANDROID_STORAGE_BUCKET=fir-jmap-poc.appspot.com + +FIREBASE_IOS_API_KEY=AIzaSyA_fAC-6rVLsQtj8AXxRRYjwsOHCKPTm6w +FIREBASE_IOS_APP_ID=1:611786135906:ios:d8b0899dc058dd2ae3743b +FIREBASE_IOS_MESSAGING_SENDER_ID=611786135906 +FIREBASE_IOS_PROJECT_ID=fir-jmap-poc +FIREBASE_IOS_DATABASE_URL=https://fir-jmap-poc-default-rtdb.asia-southeast1.firebasedatabase.app +FIREBASE_IOS_STORAGE_BUCKET=fir-jmap-poc.appspot.com +FIREBASE_IOS_CLIENT_ID=611786135906-2nqn5c537eer6c95rcujmlfmldbkqfqb.apps.googleusercontent.com +FIREBASE_IOS_BUNDLE_ID=com.linagora.ios.teammail + +FIREBASE_WEB_API_KEY=AIzaSyABpxntIXA2u_uFFMT4wvHYMgVm7UZPMrM +FIREBASE_WEB_APP_ID=1:611786135906:web:22d98cfd47b4fddde3743b +FIREBASE_WEB_MESSAGING_SENDER_ID=611786135906 +FIREBASE_WEB_PROJECT_ID=fir-jmap-poc +FIREBASE_WEB_DATABASE_URL=https://fir-jmap-poc-default-rtdb.asia-southeast1.firebasedatabase.app +FIREBASE_WEB_STORAGE_BUCKET=fir-jmap-poc.appspot.com +FIREBASE_WEB_AUTH_DOMAIN=fir-jmap-poc.firebaseapp.com \ No newline at end of file diff --git a/env.file b/env.file index 6c44a3be4..bed9b10e3 100644 --- a/env.file +++ b/env.file @@ -1,4 +1,4 @@ -SERVER_URL=http://localhost/ +SERVER_URL=https://gateway.upn.integration-open-paas.org DOMAIN_REDIRECT_URL=http://localhost:3000 WEB_OIDC_CLIENT_ID=teammail-web APP_GRID_AVAILABLE=supported diff --git a/lib/features/mailbox_dashboard/data/repository/spam_report_repository_impl.dart b/lib/features/mailbox_dashboard/data/repository/spam_report_repository_impl.dart index 0472115af..fd4408c4b 100644 --- a/lib/features/mailbox_dashboard/data/repository/spam_report_repository_impl.dart +++ b/lib/features/mailbox_dashboard/data/repository/spam_report_repository_impl.dart @@ -3,6 +3,7 @@ import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_filter_condition.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/spam_report_datasource.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/unread_spam_emails_response.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/spam_report_repository.dart'; @@ -39,4 +40,19 @@ class SpamReportRepositoryImpl extends SpamReportRepository { mailboxFilterCondition: mailboxFilterCondition, limit: limit); } + + @override + Future getSpamReportState() { + throw UnimplementedError(); + } + + @override + Future storeSpamReportState(SpamReportState spamReportState) { + throw UnimplementedError(); + } + + @override + Future deletestoreSpamReportState() { + throw UnimplementedError(); + } } \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/model/spam_report_state.dart b/lib/features/mailbox_dashboard/domain/model/spam_report_state.dart new file mode 100644 index 000000000..229502514 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/model/spam_report_state.dart @@ -0,0 +1,16 @@ +enum SpamReportState { + enabled, + disabled, +} + +extension SpamReportStateExtension on SpamReportState { + + String get keyValue { + switch(this) { + case SpamReportState.enabled: + return 'enabled'; + case SpamReportState.disabled: + return 'disabled'; + } + } +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/repository/spam_report_repository.dart b/lib/features/mailbox_dashboard/domain/repository/spam_report_repository.dart index aa84b6bc3..f9cec94d3 100644 --- a/lib/features/mailbox_dashboard/domain/repository/spam_report_repository.dart +++ b/lib/features/mailbox_dashboard/domain/repository/spam_report_repository.dart @@ -1,6 +1,7 @@ import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_filter_condition.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/unread_spam_emails_response.dart'; abstract class SpamReportRepository { @@ -17,4 +18,10 @@ abstract class SpamReportRepository { UnsignedInt? limit } ); + + Future getSpamReportState(); + + Future storeSpamReportState(SpamReportState spamReportState); + + Future deletestoreSpamReportState(); } \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/state/delete_last_time_dismissed_spam_reported_state.dart b/lib/features/mailbox_dashboard/domain/state/delete_last_time_dismissed_spam_reported_state.dart new file mode 100644 index 000000000..cdf2d116d --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/state/delete_last_time_dismissed_spam_reported_state.dart @@ -0,0 +1,21 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; + +class DeleteLastTimeDismissedSpamReportedLoading extends UIState {} + +class DeleteLastTimeDismissedSpamReportedSuccess extends UIState { + + DeleteLastTimeDismissedSpamReportedSuccess(); + + @override + List get props => []; +} + +class DeleteLastTimeDismissedSpamReportedFailure extends FeatureFailure { + final dynamic exception; + + DeleteLastTimeDismissedSpamReportedFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/state/delete_spam_report_state.dart b/lib/features/mailbox_dashboard/domain/state/delete_spam_report_state.dart new file mode 100644 index 000000000..7f40ce636 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/state/delete_spam_report_state.dart @@ -0,0 +1,21 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; + +class DeleteSpamReportStateLoading extends UIState {} + +class DeleteSpamReportStateSuccess extends UIState { + + DeleteSpamReportStateSuccess(); + + @override + List get props => []; +} + +class DeleteSpamReportStateFailure extends FeatureFailure { + final dynamic exception; + + DeleteSpamReportStateFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/state/get_spam_report_state.dart b/lib/features/mailbox_dashboard/domain/state/get_spam_report_state.dart new file mode 100644 index 000000000..3d03b1708 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/state/get_spam_report_state.dart @@ -0,0 +1,23 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart'; + +class GetSpamReportStateLoading extends UIState {} + +class GetSpamReportStateSuccess extends UIState { + final SpamReportState spamReportState; + + GetSpamReportStateSuccess(this.spamReportState); + + @override + List get props => [spamReportState]; +} + +class GetSpamReportStateFailure extends FeatureFailure { + final dynamic exception; + + GetSpamReportStateFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/state/store_spam_report_state.dart b/lib/features/mailbox_dashboard/domain/state/store_spam_report_state.dart new file mode 100644 index 000000000..5a2bb2390 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/state/store_spam_report_state.dart @@ -0,0 +1,21 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; + +class StoreSpamReportStateLoading extends UIState {} + +class StoreSpamReportStateSuccess extends UIState { + + StoreSpamReportStateSuccess(); + + @override + List get props => []; +} + +class StoreSpamReportStateFailure extends FeatureFailure { + final dynamic exception; + + StoreSpamReportStateFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/usecases/delete_last_time_dismissed_spam_reported_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/delete_last_time_dismissed_spam_reported_interactor.dart new file mode 100644 index 000000000..1d666f701 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/usecases/delete_last_time_dismissed_spam_reported_interactor.dart @@ -0,0 +1,21 @@ +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/mailbox_dashboard/domain/repository/spam_report_repository.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/delete_last_time_dismissed_spam_reported_state.dart'; + +class DeleteLastTimeDismissedSpamReportedInteractor { + final SpamReportRepository _spamReportRepository; + + DeleteLastTimeDismissedSpamReportedInteractor(this._spamReportRepository); + + Stream> execute() async* { + try { + yield Right(DeleteLastTimeDismissedSpamReportedLoading()); + await _spamReportRepository.deleteLastTimeDismissedSpamReported(); + yield Right(DeleteLastTimeDismissedSpamReportedSuccess()); + } catch (e) { + yield Left(DeleteLastTimeDismissedSpamReportedFailure(e)); + } + } +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/usecases/delete_spam_report_state_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/delete_spam_report_state_interactor.dart new file mode 100644 index 000000000..1f9f74703 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/usecases/delete_spam_report_state_interactor.dart @@ -0,0 +1,21 @@ +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/mailbox_dashboard/domain/repository/spam_report_repository.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/delete_spam_report_state.dart'; + +class DeleteSpamReportStateInteractor { + final SpamReportRepository _spamReportRepository; + + DeleteSpamReportStateInteractor(this._spamReportRepository); + + Stream> execute() async* { + try { + yield Right(DeleteSpamReportStateLoading()); + await _spamReportRepository.deletestoreSpamReportState(); + yield Right(DeleteSpamReportStateSuccess()); + } catch (e) { + yield Left(DeleteSpamReportStateFailure(e)); + } + } +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/usecases/get_spam_report_state_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/get_spam_report_state_interactor.dart new file mode 100644 index 000000000..af4a2c714 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/usecases/get_spam_report_state_interactor.dart @@ -0,0 +1,23 @@ + + +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/mailbox_dashboard/domain/repository/spam_report_repository.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_spam_report_state.dart'; + +class StoreSpamReportStateInteractor { + final SpamReportRepository _spamReportRepository; + + StoreSpamReportStateInteractor(this._spamReportRepository); + + Stream> execute() async* { + try { + yield Right(GetSpamReportStateLoading()); + final spamReportState = await _spamReportRepository.getSpamReportState(); + yield Right(GetSpamReportStateSuccess(spamReportState)); + } catch (e) { + yield Left(GetSpamReportStateFailure(e)); + } + } +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/usecases/store_spam_report_state_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/store_spam_report_state_interactor.dart new file mode 100644 index 000000000..56cfbca37 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/usecases/store_spam_report_state_interactor.dart @@ -0,0 +1,23 @@ + +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/mailbox_dashboard/domain/model/spam_report_state.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/spam_report_repository.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/store_spam_report_state.dart'; + +class StoreSpamReportStateInteractor { + final SpamReportRepository _spamReportRepository; + + StoreSpamReportStateInteractor(this._spamReportRepository); + + Stream> execute(SpamReportState spamReportState) async* { + try { + yield Right(StoreSpamReportStateLoading()); + await _spamReportRepository.storeSpamReportState(spamReportState); + yield Right(StoreSpamReportStateSuccess()); + } catch (e) { + yield Left(StoreSpamReportStateFailure(e)); + } + } +} \ No newline at end of file