TF-123 Create objects for caching mailbox

This commit is contained in:
dab246
2021-09-28 15:00:00 +07:00
committed by Dat H. Pham
parent 89cbb8fcc2
commit dd0d1bbe87
16 changed files with 368 additions and 2 deletions
+7
View File
@@ -0,0 +1,7 @@
class CachingConstants {
static const int MAILBOX_CACHE_IDENTIFY = 1;
static const int MAILBOX_RIGHTS_CACHE_IDENTIFY = 2;
static const int STATE_DAO_IDENTIFY = 3;
static const int STATE_TYPE_IDENTIFY = 4;
}
@@ -0,0 +1,74 @@
import 'package:equatable/equatable.dart';
import 'package:hive/hive.dart';
import 'package:model/caching/mailbox/mailbox_rights_cache.dart';
import 'package:model/model.dart';
part 'mailbox_cache.g.dart';
@HiveType(typeId: CachingConstants.MAILBOX_CACHE_IDENTIFY)
class MailboxCache extends HiveObject with EquatableMixin {
@HiveField(0)
final String id;
@HiveField(1)
final String? name;
@HiveField(2)
final String? parentId;
@HiveField(3)
final String? role;
@HiveField(4)
final int? sortOrder;
@HiveField(5)
final int? totalEmails;
@HiveField(6)
final int? unreadEmails;
@HiveField(7)
final int? totalThreads;
@HiveField(8)
final int? unreadThreads;
@HiveField(9)
final MailboxRightsCache? myRights;
@HiveField(10)
final bool? isSubscribed;
@HiveField(11)
final DateTime? lastOpened;
MailboxCache(
this.id,
{
this.name,
this.parentId,
this.role,
this.sortOrder,
this.totalEmails,
this.unreadEmails,
this.totalThreads,
this.unreadThreads,
this.myRights,
this.isSubscribed,
this.lastOpened
}
);
@override
List<Object?> get props => [
id,
name,
parentId,
role,
unreadEmails,
lastOpened,
];
}
@@ -0,0 +1,62 @@
import 'package:equatable/equatable.dart';
import 'package:hive/hive.dart';
import 'package:model/model.dart';
part 'mailbox_rights_cache.g.dart';
@HiveType(typeId: CachingConstants.MAILBOX_RIGHTS_CACHE_IDENTIFY)
class MailboxRightsCache extends HiveObject with EquatableMixin {
@HiveField(0)
final bool mayReadItems;
@HiveField(1)
final bool mayAddItems;
@HiveField(2)
final bool mayRemoveItems;
@HiveField(3)
final bool maySetSeen;
@HiveField(4)
final bool maySetKeywords;
@HiveField(5)
final bool mayCreateChild;
@HiveField(6)
final bool mayRename;
@HiveField(7)
final bool mayDelete;
@HiveField(8)
final bool maySubmit;
MailboxRightsCache(
this.mayReadItems,
this.mayAddItems,
this.mayRemoveItems,
this.maySetSeen,
this.maySetKeywords,
this.mayCreateChild,
this.mayRename,
this.mayDelete,
this.maySubmit
);
@override
List<Object?> get props => [
mayReadItems,
mayAddItems,
mayRemoveItems,
maySetSeen,
maySetKeywords,
mayCreateChild,
mayRename,
mayDelete,
maySubmit
];
}
+21
View File
@@ -0,0 +1,21 @@
import 'package:equatable/equatable.dart';
import 'package:hive/hive.dart';
import 'package:model/model.dart';
part 'state_dao.g.dart';
@HiveType(typeId: CachingConstants.STATE_DAO_IDENTIFY)
class StateDao extends HiveObject with EquatableMixin {
@HiveField(0)
final StateType type;
@HiveField(1)
final String state;
StateDao(this.type, this.state);
@override
List<Object?> get props => [type, state];
}
+21
View File
@@ -0,0 +1,21 @@
import 'package:hive/hive.dart';
import 'package:model/model.dart';
part 'state_type.g.dart';
@HiveType(typeId: CachingConstants.STATE_TYPE_IDENTIFY)
enum StateType {
@HiveField(0)
mailbox
}
extension StateTypeExtension on StateType {
String get value {
switch(this) {
case StateType.mailbox:
return 'mailbox';
}
}
}