save mail when reload page

This commit is contained in:
ManhNTX
2022-07-11 01:40:54 +07:00
committed by Dat H. Pham
parent 1cde4b5d5b
commit 2add68d760
13 changed files with 289 additions and 0 deletions
@@ -0,0 +1,34 @@
import 'dart:convert';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/data/model/email_cache.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/email_cache_datasource.dart';
import 'package:universal_html/html.dart' as html;
class EmailCacheDataSourceImpl extends EmailCacheDataSource {
@override
EmailCache? getEmailCacheOnWeb() {
final result = html.window.localStorage.entries
.where((e) => e.key == EmailActionType.edit.name)
.toList();
if (result.isNotEmpty) {
final jsonHandle = json.decode(result.first.value) as Map<String, dynamic>;
final emailCache = EmailCache.fromJson(jsonHandle);
return emailCache;
} else {
return null;
}
}
@override
void removeEmailCacheOnWeb() {
html.window.localStorage.removeWhere((key, value) => key == EmailActionType.edit.name);
}
@override
void saveEmailCacheOnWeb(Email email) {
Map<String,String> entries = { EmailActionType.edit.name: json.encode(email.toJson()) };
html.window.localStorage.addAll(entries);
}
}