TF-1363: [Date] Implement Store, Get, Delete spamReportState in Repository and datasource

This commit is contained in:
HuyNguyen
2023-01-16 12:56:37 +07:00
committed by Dat H. Pham
parent a3dae605a4
commit 7a85c15f98
6 changed files with 75 additions and 4 deletions
@@ -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();
}
@@ -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();
}
}
@@ -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';
}