TF-3502 Fix composer image loading icon
This commit is contained in:
@@ -5,12 +5,12 @@ class CircleLoadingWidget extends StatelessWidget {
|
|||||||
|
|
||||||
final double? size;
|
final double? size;
|
||||||
final double? strokeWidth;
|
final double? strokeWidth;
|
||||||
final EdgeInsetsGeometry? padding;
|
final EdgeInsetsGeometry? margin;
|
||||||
|
|
||||||
const CircleLoadingWidget({
|
const CircleLoadingWidget({
|
||||||
super.key,
|
super.key,
|
||||||
this.size,
|
this.size,
|
||||||
this.padding,
|
this.margin,
|
||||||
this.strokeWidth,
|
this.strokeWidth,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ class CircleLoadingWidget extends StatelessWidget {
|
|||||||
final loadingStrokeWidth = strokeWidth ?? CircleLoadingWidgetStyles.width;
|
final loadingStrokeWidth = strokeWidth ?? CircleLoadingWidgetStyles.width;
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
padding: padding,
|
margin: margin,
|
||||||
width: loadingSize,
|
width: loadingSize,
|
||||||
height: loadingSize,
|
height: loadingSize,
|
||||||
child: CircularProgressIndicator(
|
child: CircularProgressIndicator(
|
||||||
|
|||||||
@@ -256,7 +256,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
child: InsertImageLoadingBarWidget(
|
child: InsertImageLoadingBarWidget(
|
||||||
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
||||||
viewState: controller.viewState.value,
|
viewState: controller.viewState.value,
|
||||||
padding: ComposerStyle.insertImageLoadingBarPadding,
|
margin: ComposerStyle.insertImageLoadingBarMargin,
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
Obx(() => Padding(
|
Obx(() => Padding(
|
||||||
@@ -435,7 +435,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
child: InsertImageLoadingBarWidget(
|
child: InsertImageLoadingBarWidget(
|
||||||
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
||||||
viewState: controller.viewState.value,
|
viewState: controller.viewState.value,
|
||||||
padding: ComposerStyle.insertImageLoadingBarPadding,
|
margin: ComposerStyle.insertImageLoadingBarMargin,
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
Obx(() => Padding(
|
Obx(() => Padding(
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
child: Obx(() => InsertImageLoadingBarWidget(
|
child: Obx(() => InsertImageLoadingBarWidget(
|
||||||
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
||||||
viewState: controller.viewState.value,
|
viewState: controller.viewState.value,
|
||||||
padding: ComposerStyle.insertImageLoadingBarPadding,
|
margin: ComposerStyle.insertImageLoadingBarMargin,
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
@@ -600,7 +600,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
child: Obx(() => InsertImageLoadingBarWidget(
|
child: Obx(() => InsertImageLoadingBarWidget(
|
||||||
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
||||||
viewState: controller.viewState.value,
|
viewState: controller.viewState.value,
|
||||||
padding: ComposerStyle.insertImageLoadingBarPadding,
|
margin: ComposerStyle.insertImageLoadingBarMargin,
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
@@ -917,7 +917,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
child: Obx(() => InsertImageLoadingBarWidget(
|
child: Obx(() => InsertImageLoadingBarWidget(
|
||||||
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
||||||
viewState: controller.viewState.value,
|
viewState: controller.viewState.value,
|
||||||
padding: ComposerStyle.insertImageLoadingBarPadding,
|
margin: ComposerStyle.insertImageLoadingBarMargin,
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class ComposerStyle {
|
|||||||
static const EdgeInsetsGeometry mobileSubjectPadding = EdgeInsetsDirectional.only(end: 16);
|
static const EdgeInsetsGeometry mobileSubjectPadding = EdgeInsetsDirectional.only(end: 16);
|
||||||
static const EdgeInsetsGeometry mobileEditorPadding = EdgeInsetsDirectional.symmetric(horizontal: 12);
|
static const EdgeInsetsGeometry mobileEditorPadding = EdgeInsetsDirectional.symmetric(horizontal: 12);
|
||||||
static const EdgeInsetsGeometry popupItemPadding = EdgeInsetsDirectional.symmetric(horizontal: 12);
|
static const EdgeInsetsGeometry popupItemPadding = EdgeInsetsDirectional.symmetric(horizontal: 12);
|
||||||
static const EdgeInsetsGeometry insertImageLoadingBarPadding = EdgeInsetsDirectional.only(top: 12);
|
static const EdgeInsetsGeometry insertImageLoadingBarMargin = EdgeInsetsDirectional.only(top: 12);
|
||||||
|
|
||||||
static const TextStyle popupItemTextStyle = TextStyle(
|
static const TextStyle popupItemTextStyle = TextStyle(
|
||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/circle_loading_widget.dart';
|
|
||||||
import 'package:tmail_ui_user/features/composer/domain/state/download_image_as_base64_state.dart';
|
import 'package:tmail_ui_user/features/composer/domain/state/download_image_as_base64_state.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/domain/state/attachment_upload_state.dart';
|
import 'package:tmail_ui_user/features/upload/domain/state/attachment_upload_state.dart';
|
||||||
|
|
||||||
@@ -10,27 +10,36 @@ class InsertImageLoadingBarWidget extends StatelessWidget {
|
|||||||
|
|
||||||
final Either<Failure, Success> viewState;
|
final Either<Failure, Success> viewState;
|
||||||
final Either<Failure, Success> uploadInlineViewState;
|
final Either<Failure, Success> uploadInlineViewState;
|
||||||
final EdgeInsetsGeometry? padding;
|
final EdgeInsetsGeometry? margin;
|
||||||
|
|
||||||
const InsertImageLoadingBarWidget({
|
const InsertImageLoadingBarWidget({
|
||||||
super.key,
|
super.key,
|
||||||
required this.viewState,
|
required this.viewState,
|
||||||
required this.uploadInlineViewState,
|
required this.uploadInlineViewState,
|
||||||
this.padding,
|
this.margin,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return uploadInlineViewState.fold(
|
final child = uploadInlineViewState.fold(
|
||||||
(failure) => _viewStateToUI(viewState),
|
(failure) => _viewStateToUI(viewState),
|
||||||
(success) {
|
(success) {
|
||||||
if (success is UploadingAttachmentUploadState) {
|
if (success is UploadingAttachmentUploadState) {
|
||||||
return CircleLoadingWidget(padding: padding);
|
return const LinearProgressIndicator(
|
||||||
|
color: AppColor.primaryColor,
|
||||||
|
backgroundColor: AppColor.colorBgMailboxSelected,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return _viewStateToUI(viewState);
|
return _viewStateToUI(viewState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return Container(
|
||||||
|
height: 2,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _viewStateToUI(Either<Failure, Success> viewState) {
|
Widget _viewStateToUI(Either<Failure, Success> viewState) {
|
||||||
@@ -38,7 +47,10 @@ class InsertImageLoadingBarWidget extends StatelessWidget {
|
|||||||
(failure) => const SizedBox.shrink(),
|
(failure) => const SizedBox.shrink(),
|
||||||
(success) {
|
(success) {
|
||||||
if (success is DownloadingImageAsBase64) {
|
if (success is DownloadingImageAsBase64) {
|
||||||
return CircleLoadingWidget(padding: padding);
|
return const LinearProgressIndicator(
|
||||||
|
color: AppColor.primaryColor,
|
||||||
|
backgroundColor: AppColor.colorBgMailboxSelected,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -24,7 +24,7 @@ class IdentityLoadingWidget extends StatelessWidget {
|
|||||||
(failure) => const SizedBox.shrink(),
|
(failure) => const SizedBox.shrink(),
|
||||||
(success) {
|
(success) {
|
||||||
if (success is GetAllIdentitiesLoading || success is GetSessionLoading) {
|
if (success is GetAllIdentitiesLoading || success is GetSessionLoading) {
|
||||||
return const CircleLoadingWidget(padding: EdgeInsets.all(16.0));
|
return const CircleLoadingWidget(margin: EdgeInsets.all(16.0));
|
||||||
} else {
|
} else {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,7 @@ class IdentityLoadingWidget extends StatelessWidget {
|
|||||||
(failure) => const SizedBox.shrink(),
|
(failure) => const SizedBox.shrink(),
|
||||||
(success) {
|
(success) {
|
||||||
if (success is GetAllIdentitiesLoading || success is GetSessionLoading) {
|
if (success is GetAllIdentitiesLoading || success is GetSessionLoading) {
|
||||||
return const CircleLoadingWidget(padding: EdgeInsets.all(16.0));
|
return const CircleLoadingWidget(margin: EdgeInsets.all(16.0));
|
||||||
} else {
|
} else {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user