diff --git a/assets/images/ic_avatar_group_delivering.svg b/assets/images/ic_avatar_group_delivering.svg
new file mode 100644
index 000000000..73d7eb9b5
--- /dev/null
+++ b/assets/images/ic_avatar_group_delivering.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/images/ic_avatar_personal_delivering.svg b/assets/images/ic_avatar_personal_delivering.svg
new file mode 100644
index 000000000..8edc70a74
--- /dev/null
+++ b/assets/images/ic_avatar_personal_delivering.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/images/ic_delivering.svg b/assets/images/ic_delivering.svg
new file mode 100644
index 000000000..496e32780
--- /dev/null
+++ b/assets/images/ic_delivering.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/ic_error.svg b/assets/images/ic_error.svg
new file mode 100644
index 000000000..503936c0e
--- /dev/null
+++ b/assets/images/ic_error.svg
@@ -0,0 +1,5 @@
+
diff --git a/core/lib/presentation/extensions/color_extension.dart b/core/lib/presentation/extensions/color_extension.dart
index 21c7ec65c..84c31c022 100644
--- a/core/lib/presentation/extensions/color_extension.dart
+++ b/core/lib/presentation/extensions/color_extension.dart
@@ -177,6 +177,10 @@ extension AppColor on Color {
static const colorTitleAUnSubscribedMailbox = Color(0xFF818C99);
static const colorTitleSendingItem = Color(0xFF818C99);
static const colorBannerMessageSendingQueue = Color(0xFFF7F8FA);
+ static const colorDeliveringState = Color(0xFFAEB7C2);
+ static const colorErrorState = Color(0xFFE64646);
+ static const colorBackgroundErrorState = Color(0xFFFAEBEB);
+ static const colorBackgroundDeliveringState = Color(0xFFF2F3F5);
static const mapGradientColor = [
[Color(0xFF21D4FD), Color(0xFFB721FF)],
diff --git a/core/lib/presentation/resources/image_paths.dart b/core/lib/presentation/resources/image_paths.dart
index afc1fd8c8..61bd47931 100644
--- a/core/lib/presentation/resources/image_paths.dart
+++ b/core/lib/presentation/resources/image_paths.dart
@@ -182,9 +182,13 @@ class ImagePaths {
String get icMailboxSendingQueue => _getImagePath('ic_mailbox_sending_queue.svg');
String get icMailboxOutbox => _getImagePath('ic_mailbox_outbox.svg');
String get icAvatarGroup => _getImagePath('ic_avatar_group.svg');
+ String get icAvatarGroupDelivering => _getImagePath('ic_avatar_group_delivering.svg');
String get icAvatarPersonal => _getImagePath('ic_avatar_personal.svg');
+ String get icAvatarPersonalDelivering => _getImagePath('ic_avatar_personal_delivering.svg');
String get icDialogOfflineMode => _getImagePath('ic_dialog_offline_mode.svg');
String get icMenuMailbox => _getImagePath('ic_menu_mailbox.svg');
+ String get icDelivering => _getImagePath('ic_delivering.svg');
+ String get icError => _getImagePath('ic_error.svg');
String _getImagePath(String imageName) {
return AssetsPaths.images + imageName;
diff --git a/core/lib/presentation/utils/responsive_utils.dart b/core/lib/presentation/utils/responsive_utils.dart
index bc010a25a..91b39dcaf 100644
--- a/core/lib/presentation/utils/responsive_utils.dart
+++ b/core/lib/presentation/utils/responsive_utils.dart
@@ -8,20 +8,20 @@ class ResponsiveUtils {
static const double defaultSizeDrawer = 320;
static const double defaultSizeMenu = 256;
- final int heightShortest = 600;
+ static const int heightShortest = 600;
- final int minDesktopWidth = 1200;
- final int minTabletWidth = 600;
- final int minTabletLargeWidth = 900;
+ static const int minDesktopWidth = 1200;
+ static const int minTabletWidth = 600;
+ static const int minTabletLargeWidth = 900;
- final double _loginTextFieldWidthSmallScreen = 280.0;
- final double _loginTextFieldWidthLargeScreen = 320.0;
- final double _loginButtonWidth = 240.0;
+ static const double _loginTextFieldWidthSmallScreen = 280.0;
+ static const double _loginTextFieldWidthLargeScreen = 320.0;
+ static const double _loginButtonWidth = 240.0;
- final double tabletHorizontalMargin = 120.0;
- final double tabletVerticalMargin = 200.0;
- final double desktopVerticalMargin = 120.0;
- final double desktopHorizontalMargin = 200.0;
+ static const double tabletHorizontalMargin = 120.0;
+ static const double tabletVerticalMargin = 200.0;
+ static const double desktopVerticalMargin = 120.0;
+ static const double desktopHorizontalMargin = 200.0;
bool isScreenWithShortestSide(BuildContext context) => context.mediaQueryShortestSide < minTabletWidth;
@@ -116,4 +116,6 @@ class ResponsiveUtils {
isDesktop(context));
}
}
+
+ static bool isMatchedMobileWidth(double width) => width < minTabletWidth;
}
\ No newline at end of file
diff --git a/lib/features/composer/domain/model/sending_email.dart b/lib/features/composer/domain/model/sending_email.dart
index 4fdfc95a6..18813647c 100644
--- a/lib/features/composer/domain/model/sending_email.dart
+++ b/lib/features/composer/domain/model/sending_email.dart
@@ -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 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