TF-1915 Add SendingState property to SendingEmail

(cherry picked from commit 678593583b598f3f06f2a838ce4cd788ed1de513)
This commit is contained in:
dab246
2023-06-08 15:16:55 +07:00
committed by Dat Vu
parent cada3c2607
commit d0888e9847
11 changed files with 157 additions and 14 deletions
@@ -15,6 +15,7 @@ import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/email_extension.dart';
import 'package:model/mailbox/select_mode.dart';
import 'package:tmail_ui_user/features/offline_mode/model/sending_state.dart';
class SendingEmail with EquatableMixin {
final String sendingId;
@@ -28,6 +29,7 @@ class SendingEmail with EquatableMixin {
final Id? creationIdRequest;
final DateTime createTime;
final SelectMode selectMode;
final SendingState sendingState;
SendingEmail({
required this.sendingId,
@@ -40,7 +42,8 @@ class SendingEmail with EquatableMixin {
this.identityId,
this.mailboxNameRequest,
this.creationIdRequest,
this.selectMode = SelectMode.INACTIVE
this.selectMode = SelectMode.INACTIVE,
this.sendingState = SendingState.ready
});
Map<String, dynamic> toJson() {
@@ -96,6 +99,10 @@ class SendingEmail with EquatableMixin {
bool get isSelected => selectMode == SelectMode.ACTIVE;
bool get isDelivering => sendingState == SendingState.delivering;
bool get isReady => sendingState == SendingState.ready;
@override
List<Object?> get props => [
sendingId,
@@ -108,6 +115,7 @@ class SendingEmail with EquatableMixin {
identityId,
mailboxNameRequest,
creationIdRequest,
selectMode
selectMode,
sendingState,
];
}
@@ -0,0 +1,77 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
enum SendingState {
ready,
delivering,
error;
String getTitle(BuildContext context) {
switch(this) {
case SendingState.delivering:
return AppLocalizations.of(context).delivering;
case SendingState.error:
return AppLocalizations.of(context).error;
case SendingState.ready:
return '';
}
}
String getIcon(ImagePaths imagePaths) {
switch(this) {
case SendingState.delivering:
return imagePaths.icDelivering;
case SendingState.error:
return imagePaths.icError;
case SendingState.ready:
return '';
}
}
String getAvatarGroup(ImagePaths imagePaths) {
switch(this) {
case SendingState.delivering:
return imagePaths.icAvatarGroupDelivering;
case SendingState.error:
return imagePaths.icAvatarGroup;
case SendingState.ready:
return imagePaths.icAvatarGroup;
}
}
String getAvatarPersonal(ImagePaths imagePaths) {
switch(this) {
case SendingState.delivering:
return imagePaths.icAvatarPersonalDelivering;
case SendingState.error:
return imagePaths.icAvatarPersonal;
case SendingState.ready:
return imagePaths.icAvatarPersonal;
}
}
Color getTitleColor() {
switch(this) {
case SendingState.delivering:
return AppColor.colorTitleSendingItem;
case SendingState.error:
return AppColor.colorErrorState;
case SendingState.ready:
return Colors.transparent;
}
}
Color getBackgroundColor() {
switch(this) {
case SendingState.delivering:
return AppColor.colorBackgroundDeliveringState;
case SendingState.error:
return AppColor.colorBackgroundErrorState;
case SendingState.ready:
return Colors.transparent;
}
}
}