TF-1915 SendingState of SendingEmail updates according to the work done in WorkManager when network connectivity is restored

(cherry picked from commit 744c8bc8dc8a82cb3afb75aead5a744adaae5501)
This commit is contained in:
dab246
2023-06-09 15:23:22 +07:00
committed by Dat Vu
parent 20168f5e8d
commit 6aa87ff012
51 changed files with 523 additions and 374 deletions
@@ -0,0 +1,91 @@
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/extensions/email_extension.dart';
import 'package:model/extensions/email_id_extensions.dart';
import 'package:model/extensions/identity_id_extension.dart';
import 'package:model/extensions/mailbox_id_extension.dart';
import 'package:model/mailbox/select_mode.dart';
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
import 'package:tmail_ui_user/features/offline_mode/model/sending_email_hive_cache.dart';
import 'package:tmail_ui_user/features/offline_mode/model/sending_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart';
extension SendingEmailExtension on SendingEmail {
SendingEmailHiveCache toHiveCache() {
return SendingEmailHiveCache(
sendingId,
email.asString(),
emailActionType.name,
createTime,
sentMailboxId?.asString,
emailIdDestroyed?.asString,
emailIdAnsweredOrForwarded?.asString,
identityId?.asString,
mailboxNameRequest?.name,
creationIdRequest?.value,
sendingState.name,
);
}
EmailRequest toEmailRequest({Email? newEmail}) {
return EmailRequest(
email: newEmail ?? email,
emailActionType: emailActionType,
sentMailboxId: sentMailboxId,
emailIdDestroyed: emailIdDestroyed,
emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded,
identityId: identityId,
storedSendingId: sendingId
);
}
SendingEmail toggleSelection() {
return SendingEmail(
sendingId: sendingId,
email: email,
emailActionType: emailActionType,
createTime: createTime,
sentMailboxId: sentMailboxId,
emailIdDestroyed: emailIdDestroyed,
emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded,
identityId: identityId,
mailboxNameRequest: mailboxNameRequest,
creationIdRequest: creationIdRequest,
sendingState: sendingState,
selectMode: selectMode == SelectMode.INACTIVE ? SelectMode.ACTIVE : SelectMode.INACTIVE
);
}
SendingEmail unSelected() {
return SendingEmail(
sendingId: sendingId,
email: email,
emailActionType: emailActionType,
createTime: createTime,
sentMailboxId: sentMailboxId,
emailIdDestroyed: emailIdDestroyed,
emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded,
identityId: identityId,
mailboxNameRequest: mailboxNameRequest,
creationIdRequest: creationIdRequest,
sendingState: sendingState,
selectMode: SelectMode.INACTIVE
);
}
SendingEmail updatingSendingState(SendingState newState) {
return SendingEmail(
sendingId: sendingId,
email: email,
emailActionType: emailActionType,
createTime: createTime,
sentMailboxId: sentMailboxId,
emailIdDestroyed: emailIdDestroyed,
emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded,
identityId: identityId,
mailboxNameRequest: mailboxNameRequest,
creationIdRequest: creationIdRequest,
sendingState: newState,
selectMode: selectMode
);
}
}