TF-644 Fix email content lost when attachment download failed

This commit is contained in:
dab246
2022-06-14 10:29:32 +07:00
committed by Dat H. Pham
parent ba4663257d
commit 944e9eb83b
+35 -25
View File
@@ -22,7 +22,7 @@ class EmailView extends GetView with NetworkConnectionMixin {
final responsiveUtils = Get.find<ResponsiveUtils>(); final responsiveUtils = Get.find<ResponsiveUtils>();
final imagePaths = Get.find<ImagePaths>(); final imagePaths = Get.find<ImagePaths>();
static const int LIMIT_ADDRESS_DISPLAY = 1; static const int limitAddressDisplay = 1;
EmailView({Key? key}) : super(key: key); EmailView({Key? key}) : super(key: key);
@@ -182,6 +182,7 @@ class EmailView extends GetView with NetworkConnectionMixin {
emailController.isDisplayFullEmailAddress.value) emailController.isDisplayFullEmailAddress.value)
: const SizedBox.shrink()), : const SizedBox.shrink()),
_buildDivider(edgeInsets: const EdgeInsets.only(top: 8)), _buildDivider(edgeInsets: const EdgeInsets.only(top: 8)),
_buildLoadingView(),
_buildAttachments(context), _buildAttachments(context),
if (kIsWeb) if (kIsWeb)
Expanded(child: _buildEmailContent(context, constraints)) Expanded(child: _buildEmailContent(context, constraints))
@@ -194,6 +195,29 @@ class EmailView extends GetView with NetworkConnectionMixin {
); );
} }
Widget _buildLoadingView() {
return Obx(() {
if (emailController.emailContents.isEmpty) {
return emailController.viewState.value.fold(
(failure) => const SizedBox.shrink(),
(success) {
if (success is LoadingState) {
return const Align(alignment: Alignment.topCenter, child: Padding(
padding: EdgeInsets.all(16),
child: SizedBox(
width: 30,
height: 30,
child: CupertinoActivityIndicator(color: AppColor.colorLoading))));
} else {
return const SizedBox.shrink();
}
});
} else {
return const SizedBox.shrink();
}
});
}
Widget _buildEmailTime(BuildContext context) { Widget _buildEmailTime(BuildContext context) {
return Transform( return Transform(
transform: Matrix4.translationValues(0.0, 12.0, 0.0), transform: Matrix4.translationValues(0.0, 12.0, 0.0),
@@ -263,7 +287,10 @@ class EmailView extends GetView with NetworkConnectionMixin {
PrefixEmailAddress prefixEmailAddress, PrefixEmailAddress prefixEmailAddress,
bool isDisplayFull, bool isDisplayFull,
) { ) {
final displayedEmailAddress = isDisplayFull ? listEmailAddress : listEmailAddress.sublist(0, LIMIT_ADDRESS_DISPLAY); final displayedEmailAddress = isDisplayFull
? listEmailAddress
: listEmailAddress.sublist(0, limitAddressDisplay);
return Padding( return Padding(
padding: const EdgeInsets.only(top: 4), padding: const EdgeInsets.only(top: 4),
child: Wrap( child: Wrap(
@@ -319,10 +346,10 @@ class EmailView extends GetView with NetworkConnectionMixin {
} }
String _getRemainCountAddressReceiver(PresentationEmail email) { String _getRemainCountAddressReceiver(PresentationEmail email) {
if (email.numberOfAllEmailAddress() - LIMIT_ADDRESS_DISPLAY >= 999) { if (email.numberOfAllEmailAddress() - limitAddressDisplay >= 999) {
return '999'; return '999';
} }
return '${email.numberOfAllEmailAddress() - LIMIT_ADDRESS_DISPLAY}'; return '${email.numberOfAllEmailAddress() - limitAddressDisplay}';
} }
Widget _buildEmailAddressCounter(BuildContext context, PresentationEmail email) { Widget _buildEmailAddressCounter(BuildContext context, PresentationEmail email) {
@@ -345,18 +372,12 @@ class EmailView extends GetView with NetworkConnectionMixin {
} }
Widget _buildAttachments(BuildContext context) { Widget _buildAttachments(BuildContext context) {
return Obx(() => emailController.viewState.value.fold( return Obx(() {
(failure) => const SizedBox.shrink(),
(success) {
if (success is LoadingState) {
return const SizedBox.shrink();
} else {
final attachments = emailController.attachments.listAttachmentsDisplayedOutSide; final attachments = emailController.attachments.listAttachmentsDisplayedOutSide;
return attachments.isNotEmpty return attachments.isNotEmpty
? _buildAttachmentsBody(context, attachments) ? _buildAttachmentsBody(context, attachments)
: const SizedBox.shrink(); : const SizedBox.shrink();
} });
}));
} }
int _getAttachmentLimitDisplayed(BuildContext context) { int _getAttachmentLimitDisplayed(BuildContext context) {
@@ -466,17 +487,7 @@ class EmailView extends GetView with NetworkConnectionMixin {
} }
Widget _buildEmailContent(BuildContext context, BoxConstraints constraints) { Widget _buildEmailContent(BuildContext context, BoxConstraints constraints) {
return Obx(() => emailController.viewState.value.fold( return Obx(() {
(failure) => const SizedBox.shrink(),
(success) {
if (success is LoadingState) {
return const Align(alignment: Alignment.topCenter, child: Padding(
padding: EdgeInsets.all(16),
child: SizedBox(
width: 30,
height: 30,
child: CupertinoActivityIndicator(color: AppColor.colorLoading))));
} else {
if (emailController.emailContents.isNotEmpty) { if (emailController.emailContents.isNotEmpty) {
final allEmailContents = emailController.emailContents.asHtmlString; final allEmailContents = emailController.emailContents.asHtmlString;
@@ -496,8 +507,7 @@ class EmailView extends GetView with NetworkConnectionMixin {
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
} }
} });
}));
} }
List<Widget> _emailActionMoreActionTile(BuildContext context, PresentationEmail email) { List<Widget> _emailActionMoreActionTile(BuildContext context, PresentationEmail email) {