TF-1363: [Domain] [Domain] Store, Get, Delete spamReportState in UseCase
This commit is contained in:
+23
-6
@@ -1,6 +1,23 @@
|
|||||||
FIREBASE_ANDROID_API_KEY=example
|
FIREBASE_ANDROID_API_KEY=AIzaSyDPn3T4BMShrcedtqzA-8Lh3Fsm1EGB7S8
|
||||||
FIREBASE_ANDROID_APP_ID=example
|
FIREBASE_ANDROID_APP_ID=1:611786135906:android:6fa64d94eb8f8603e3743b
|
||||||
FIREBASE_ANDROID_MESSAGING_SENDER_ID=example
|
FIREBASE_ANDROID_MESSAGING_SENDER_ID=611786135906
|
||||||
FIREBASE_ANDROID_PROJECT_ID=example
|
FIREBASE_ANDROID_PROJECT_ID=fir-jmap-poc
|
||||||
FIREBASE_ANDROID_DATABASE_URL=https://example.com
|
FIREBASE_ANDROID_DATABASE_URL=https://fir-jmap-poc-default-rtdb.asia-southeast1.firebasedatabase.app
|
||||||
FIREBASE_ANDROID_STORAGE_BUCKET=example.com
|
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,4 +1,4 @@
|
|||||||
SERVER_URL=http://localhost/
|
SERVER_URL=https://gateway.upn.integration-open-paas.org
|
||||||
DOMAIN_REDIRECT_URL=http://localhost:3000
|
DOMAIN_REDIRECT_URL=http://localhost:3000
|
||||||
WEB_OIDC_CLIENT_ID=teammail-web
|
WEB_OIDC_CLIENT_ID=teammail-web
|
||||||
APP_GRID_AVAILABLE=supported
|
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/core/unsigned_int.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_filter_condition.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/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/model/unread_spam_emails_response.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/spam_report_repository.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,
|
mailboxFilterCondition: mailboxFilterCondition,
|
||||||
limit: limit);
|
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/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.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: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';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/unread_spam_emails_response.dart';
|
||||||
|
|
||||||
abstract class SpamReportRepository {
|
abstract class SpamReportRepository {
|
||||||
@@ -17,4 +18,10 @@ abstract class SpamReportRepository {
|
|||||||
UnsignedInt? limit
|
UnsignedInt? limit
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Future<SpamReportState> getSpamReportState();
|
||||||
|
|
||||||
|
Future<void> storeSpamReportState(SpamReportState spamReportState);
|
||||||
|
|
||||||
|
Future<void> deletestoreSpamReportState();
|
||||||
}
|
}
|
||||||
+21
@@ -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];
|
||||||
|
}
|
||||||
+21
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+21
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+23
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user