TF-1363: [Date] Implement Store, Get, Delete spamReportState in Repository and datasource
This commit is contained in:
@@ -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 SpamReportDataSource {
|
||||
@@ -17,4 +18,10 @@ abstract class SpamReportDataSource {
|
||||
UnsignedInt? limit
|
||||
}
|
||||
);
|
||||
|
||||
Future<SpamReportState> getSpamReportState();
|
||||
|
||||
Future<void> storeSpamReportState(SpamReportState spamReportState);
|
||||
|
||||
Future<void> deletestoreSpamReportState();
|
||||
}
|
||||
+28
@@ -3,6 +3,7 @@ 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/data/local/share_preference_spam_report_data_source.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/main/exceptions/exception_thrower.dart';
|
||||
|
||||
@@ -48,4 +49,31 @@ class SharePreferenceSpamReportDataSourceImpl extends SpamReportDataSource {
|
||||
) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> deletestoreSpamReportState() {
|
||||
return Future.sync(() async {
|
||||
return await _sharePreferenceSpamReportDataSource.deleteLastTimeDismissedSpamReported();
|
||||
}).catchError((error) {
|
||||
_exceptionThrower.throwException(error);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SpamReportState> getSpamReportState() {
|
||||
return Future.sync(() async {
|
||||
return await _sharePreferenceSpamReportDataSource.getSpamReportState();
|
||||
}).catchError((error) {
|
||||
_exceptionThrower.throwException(error);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> storeSpamReportState(SpamReportState spamReportState) {
|
||||
return Future.sync(() async {
|
||||
return await _sharePreferenceSpamReportDataSource.storeSpamReportState(spamReportState);
|
||||
}).catchError((error) {
|
||||
_exceptionThrower.throwException(error);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ 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/data/network/spam_report_api.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/main/exceptions/exception_thrower.dart';
|
||||
|
||||
@@ -45,4 +46,19 @@ class SpamReportDataSourceImpl extends SpamReportDataSource {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> deletestoreSpamReportState() {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SpamReportState> getSpamReportState() {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> storeSpamReportState(SpamReportState spamReportState) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
}
|
||||
+18
@@ -3,6 +3,7 @@ import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_filter_condition.dart';
|
||||
import 'package:shared_preferences/shared_preferences.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/utils/mailbox_dashboard_constant.dart';
|
||||
|
||||
@@ -39,4 +40,21 @@ class SharePreferenceSpamReportDataSource extends SpamReportDataSource {
|
||||
) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> deletestoreSpamReportState() async {
|
||||
return await _sharedPreferences.remove(MailboxDashboardConstant.keySpamReportState);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SpamReportState> getSpamReportState() async {
|
||||
final _spamReportState = _sharedPreferences.getString(MailboxDashboardConstant.keySpamReportState) ?? '';
|
||||
return _spamReportState == SpamReportState.disabled.keyValue ? SpamReportState.disabled : SpamReportState.enabled;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> storeSpamReportState(SpamReportState spamReportState) async {
|
||||
final _spamReportState = spamReportState.keyValue;
|
||||
return await _sharedPreferences.setString(MailboxDashboardConstant.keySpamReportState, _spamReportState);
|
||||
}
|
||||
}
|
||||
@@ -42,17 +42,17 @@ class SpamReportRepositoryImpl extends SpamReportRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SpamReportState> getSpamReportState() {
|
||||
throw UnimplementedError();
|
||||
Future<SpamReportState> getSpamReportState() async {
|
||||
return await mapDataSource[DataSourceType.local]!.getSpamReportState();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> storeSpamReportState(SpamReportState spamReportState) {
|
||||
throw UnimplementedError();
|
||||
return mapDataSource[DataSourceType.local]!.storeSpamReportState(spamReportState);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> deletestoreSpamReportState() {
|
||||
throw UnimplementedError();
|
||||
return mapDataSource[DataSourceType.local]!.deletestoreSpamReportState();
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
class MailboxDashboardConstant {
|
||||
static const String keyLastTimeDismissedSpamReported = 'KEY_LAST_TIME_DISMISSED_SPAM_REPORTED';
|
||||
|
||||
static const String keySpamReportState = 'KEY_SPAM_REPORT_STATE';
|
||||
}
|
||||
Reference in New Issue
Block a user