TF-1362: [Presentation] : Implement StoreLastTimeDismissed and show detail for spam report banner

This commit is contained in:
HuyNguyen
2023-01-13 12:45:30 +07:00
committed by Dat Vu
parent 46b50842ce
commit cd04a1b8d0
22 changed files with 335 additions and 225 deletions
@@ -6,11 +6,11 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/data/local/share_prefer
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';
class LocalSpamReportDataSourceImpl extends SpamReportDataSource {
class SharePreferenceSpamReportDataSourceImpl extends SpamReportDataSource {
final SharePreferenceSpamReportDataSource _sharePreferenceSpamReportDataSource;
final ExceptionThrower _exceptionThrower;
LocalSpamReportDataSourceImpl(this._sharePreferenceSpamReportDataSource, this._exceptionThrower);
SharePreferenceSpamReportDataSourceImpl(this._sharePreferenceSpamReportDataSource, this._exceptionThrower);
@override
Future<DateTime> getLastTimeDismissedSpamReported() async {
return Future.sync(() async {
@@ -27,7 +27,7 @@ class SpamReportDataSourceImpl extends SpamReportDataSource {
}
) {
return Future.sync(() async {
final _unreadSpamEmailsResponse = await _spamReportApi.findNumberOfUnreadSpamEmails(
final _unreadSpamEmailsResponse = await _spamReportApi.getUnreadSpamEmailbox(
accountId, mailboxFilterCondition: mailboxFilterCondition, limit: limit);
return _unreadSpamEmailsResponse;
}).catchError((error) {
@@ -20,7 +20,7 @@ class SharePreferenceSpamReportDataSource extends SpamReportDataSource {
@override
Future<bool> storeLastTimeDismissedSpamReported(DateTime lastTimeDismissedSpamReported) async {
final _timeStamp = lastTimeDismissedSpamReported.microsecondsSinceEpoch;
final _timeStamp = lastTimeDismissedSpamReported.millisecondsSinceEpoch;
return await _sharedPreferences.setInt(MailboxDashboardConstant.keyLastTimeDismissedSpamReported,_timeStamp);
}
@@ -1,4 +1,3 @@
import 'package:jmap_dart_client/http/http_client.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/request/reference_path.dart';
@@ -12,10 +11,11 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/unread_spa
class SpamReportApi {
final HttpClient _httpClient;
static const int _deafaultLimit = 1;
SpamReportApi(this._httpClient);
Future<UnreadSpamEmailsResponse> findNumberOfUnreadSpamEmails(
Future<UnreadSpamEmailsResponse> getUnreadSpamEmailbox(
AccountId accountId,
{
MailboxFilterCondition? mailboxFilterCondition,
@@ -24,11 +24,11 @@ class SpamReportApi {
) async {
final processingInvocation = ProcessingInvocation();
final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation);
final spamReportQueryMethod = QueryMailboxMethod(accountId)..addLimit(limit ?? UnsignedInt(_deafaultLimit));
final spamReportQueryMethod = QueryMailboxMethod(accountId)..addLimit(limit ?? UnsignedInt(1));
if(mailboxFilterCondition != null) spamReportQueryMethod.addFilters(mailboxFilterCondition);
final spamReportQueryMethodInvocation = requestBuilder.invocation(spamReportQueryMethod);
final getMailBoxMethod = GetMailboxMethod(accountId)
..addReferenceIds(processingInvocation.createResultReference(
spamReportQueryMethodInvocation.methodCallId,
@@ -42,11 +42,10 @@ class SpamReportApi {
final _mailboxResponse = result
.parse<GetMailboxResponse>(getMailboxInvocation.methodCallId, GetMailboxResponse.deserialize);
final _unreadSpamEmailNumber = _mailboxResponse?.list.first.unreadEmails?.value.value.toInt();
return Future.sync(() async {
return UnreadSpamEmailsResponse(unreadSpamEmailNumber: _unreadSpamEmailNumber);
final _unreadSpamMailbox = _mailboxResponse?.list.first;
return UnreadSpamEmailsResponse(unreadSpamMailbox: _unreadSpamMailbox);
}).catchError((error) {
throw error;
});
@@ -27,7 +27,7 @@ class SpamReportRepositoryImpl extends SpamReportRepository {
}
@override
Future<UnreadSpamEmailsResponse> findNumberOfUnreadSpamEmails(
Future<UnreadSpamEmailsResponse> getUnreadSpamMailbox(
AccountId accountId,
{
MailboxFilterCondition? mailboxFilterCondition,
@@ -35,6 +35,8 @@ class SpamReportRepositoryImpl extends SpamReportRepository {
}
) {
return mapDataSource[DataSourceType.network]!.findNumberOfUnreadSpamEmails(
accountId, mailboxFilterCondition: mailboxFilterCondition, limit: limit);
accountId,
mailboxFilterCondition: mailboxFilterCondition,
limit: limit);
}
}