TF-1363: [Domain] [Domain] Store, Get, Delete spamReportState in UseCase

This commit is contained in:
HuyNguyen
2023-01-16 12:39:39 +07:00
committed by Dat H. Pham
parent d5b61a2a7d
commit a3dae605a4
13 changed files with 237 additions and 7 deletions
+23 -6
View File
@@ -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
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
+1 -1
View 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
@@ -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<SpamReportState> getSpamReportState() {
throw UnimplementedError();
}
@override
Future<void> storeSpamReportState(SpamReportState spamReportState) {
throw UnimplementedError();
}
@override
Future<void> deletestoreSpamReportState() {
throw UnimplementedError();
}
}
@@ -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';
}
}
}
@@ -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<SpamReportState> getSpamReportState();
Future<void> storeSpamReportState(SpamReportState spamReportState);
Future<void> deletestoreSpamReportState();
}
@@ -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<Object> get props => [];
}
class DeleteLastTimeDismissedSpamReportedFailure extends FeatureFailure {
final dynamic exception;
DeleteLastTimeDismissedSpamReportedFailure(this.exception);
@override
List<Object> get props => [exception];
}
@@ -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<Object> get props => [];
}
class DeleteSpamReportStateFailure extends FeatureFailure {
final dynamic exception;
DeleteSpamReportStateFailure(this.exception);
@override
List<Object> get props => [exception];
}
@@ -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<Object> get props => [spamReportState];
}
class GetSpamReportStateFailure extends FeatureFailure {
final dynamic exception;
GetSpamReportStateFailure(this.exception);
@override
List<Object> get props => [exception];
}
@@ -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<Object> get props => [];
}
class StoreSpamReportStateFailure extends FeatureFailure {
final dynamic exception;
StoreSpamReportStateFailure(this.exception);
@override
List<Object> get props => [exception];
}
@@ -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<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(DeleteLastTimeDismissedSpamReportedLoading());
await _spamReportRepository.deleteLastTimeDismissedSpamReported();
yield Right<Failure, Success>(DeleteLastTimeDismissedSpamReportedSuccess());
} catch (e) {
yield Left<Failure, Success>(DeleteLastTimeDismissedSpamReportedFailure(e));
}
}
}
@@ -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<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(DeleteSpamReportStateLoading());
await _spamReportRepository.deletestoreSpamReportState();
yield Right<Failure, Success>(DeleteSpamReportStateSuccess());
} catch (e) {
yield Left<Failure, Success>(DeleteSpamReportStateFailure(e));
}
}
}
@@ -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<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(GetSpamReportStateLoading());
final spamReportState = await _spamReportRepository.getSpamReportState();
yield Right<Failure, Success>(GetSpamReportStateSuccess(spamReportState));
} catch (e) {
yield Left<Failure, Success>(GetSpamReportStateFailure(e));
}
}
}
@@ -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<Either<Failure, Success>> execute(SpamReportState spamReportState) async* {
try {
yield Right<Failure, Success>(StoreSpamReportStateLoading());
await _spamReportRepository.storeSpamReportState(spamReportState);
yield Right<Failure, Success>(StoreSpamReportStateSuccess());
} catch (e) {
yield Left<Failure, Success>(StoreSpamReportStateFailure(e));
}
}
}