TF-3889 Fix cannot see input when typing email body with attachments on mobile
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -102,121 +102,43 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Obx(() {
|
Column(
|
||||||
if (controller.fromRecipientState.value == PrefixRecipientState.enabled) {
|
key: controller.headerEditorMobileWidgetKey,
|
||||||
return FromComposerMobileWidget(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
selectedIdentity: controller.identitySelected.value,
|
mainAxisSize: MainAxisSize.min,
|
||||||
imagePaths: controller.imagePaths,
|
children: [
|
||||||
responsiveUtils: controller.responsiveUtils,
|
Obx(() {
|
||||||
margin: ComposerStyle.mobileRecipientMargin,
|
if (controller.fromRecipientState.value == PrefixRecipientState.enabled) {
|
||||||
padding: ComposerStyle.mobileRecipientPadding,
|
return FromComposerMobileWidget(
|
||||||
onTap: () => controller.openSelectIdentityBottomSheet(context)
|
selectedIdentity: controller.identitySelected.value,
|
||||||
);
|
imagePaths: controller.imagePaths,
|
||||||
} else {
|
responsiveUtils: controller.responsiveUtils,
|
||||||
return const SizedBox.shrink();
|
margin: ComposerStyle.mobileRecipientMargin,
|
||||||
}
|
padding: ComposerStyle.mobileRecipientPadding,
|
||||||
}),
|
onTap: () => controller.openSelectIdentityBottomSheet(context)
|
||||||
Obx(() => RecipientComposerWidget(
|
);
|
||||||
prefix: PrefixEmailAddress.to,
|
} else {
|
||||||
listEmailAddress: controller.listToEmailAddress,
|
return const SizedBox.shrink();
|
||||||
imagePaths: controller.imagePaths,
|
}
|
||||||
maxWidth: constraints.maxWidth,
|
}),
|
||||||
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
Obx(() => RecipientComposerWidget(
|
||||||
fromState: controller.fromRecipientState.value,
|
prefix: PrefixEmailAddress.to,
|
||||||
ccState: controller.ccRecipientState.value,
|
listEmailAddress: controller.listToEmailAddress,
|
||||||
bccState: controller.bccRecipientState.value,
|
|
||||||
replyToState: controller.replyToRecipientState.value,
|
|
||||||
expandMode: controller.toAddressExpandMode.value,
|
|
||||||
controller: controller.toEmailAddressController,
|
|
||||||
focusNode: controller.toAddressFocusNode,
|
|
||||||
keyTagEditor: controller.keyToEmailTagEditor,
|
|
||||||
isInitial: controller.isInitialRecipient.value,
|
|
||||||
padding: ComposerStyle.mobileRecipientPadding,
|
|
||||||
margin: ComposerStyle.mobileRecipientMargin,
|
|
||||||
nextFocusNode: controller.getNextFocusOfToEmailAddress(),
|
|
||||||
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
|
||||||
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
|
||||||
onAddEmailAddressTypeAction: controller.addEmailAddressType,
|
|
||||||
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
|
||||||
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
|
||||||
onFocusNextAddressAction: controller.handleFocusNextAddressAction,
|
|
||||||
onEnableAllRecipientsInputAction: controller.handleEnableRecipientsInputAction,
|
|
||||||
onEditRecipientAction: controller.onEditRecipient,
|
|
||||||
onClearFocusAction: controller.onClearFocusAction,
|
|
||||||
)),
|
|
||||||
Obx(() {
|
|
||||||
if (controller.ccRecipientState.value == PrefixRecipientState.enabled) {
|
|
||||||
return RecipientComposerWidget(
|
|
||||||
prefix: PrefixEmailAddress.cc,
|
|
||||||
listEmailAddress: controller.listCcEmailAddress,
|
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
||||||
expandMode: controller.ccAddressExpandMode.value,
|
fromState: controller.fromRecipientState.value,
|
||||||
controller: controller.ccEmailAddressController,
|
ccState: controller.ccRecipientState.value,
|
||||||
focusNode: controller.ccAddressFocusNode,
|
bccState: controller.bccRecipientState.value,
|
||||||
keyTagEditor: controller.keyCcEmailTagEditor,
|
replyToState: controller.replyToRecipientState.value,
|
||||||
isInitial: controller.isInitialRecipient.value,
|
expandMode: controller.toAddressExpandMode.value,
|
||||||
nextFocusNode: controller.getNextFocusOfCcEmailAddress(),
|
controller: controller.toEmailAddressController,
|
||||||
padding: ComposerStyle.mobileRecipientPadding,
|
focusNode: controller.toAddressFocusNode,
|
||||||
margin: ComposerStyle.mobileRecipientMargin,
|
keyTagEditor: controller.keyToEmailTagEditor,
|
||||||
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
|
||||||
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
|
||||||
onDeleteEmailAddressTypeAction: controller.deleteEmailAddressType,
|
|
||||||
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
|
||||||
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
|
||||||
onFocusNextAddressAction: controller.handleFocusNextAddressAction,
|
|
||||||
onEditRecipientAction: controller.onEditRecipient,
|
|
||||||
onClearFocusAction: controller.onClearFocusAction,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return const SizedBox.shrink();
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
Obx(() {
|
|
||||||
if (controller.bccRecipientState.value == PrefixRecipientState.enabled) {
|
|
||||||
return RecipientComposerWidget(
|
|
||||||
prefix: PrefixEmailAddress.bcc,
|
|
||||||
listEmailAddress: controller.listBccEmailAddress,
|
|
||||||
imagePaths: controller.imagePaths,
|
|
||||||
maxWidth: constraints.maxWidth,
|
|
||||||
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
|
||||||
expandMode: controller.bccAddressExpandMode.value,
|
|
||||||
controller: controller.bccEmailAddressController,
|
|
||||||
focusNode: controller.bccAddressFocusNode,
|
|
||||||
keyTagEditor: controller.keyBccEmailTagEditor,
|
|
||||||
isInitial: controller.isInitialRecipient.value,
|
isInitial: controller.isInitialRecipient.value,
|
||||||
padding: ComposerStyle.mobileRecipientPadding,
|
padding: ComposerStyle.mobileRecipientPadding,
|
||||||
margin: ComposerStyle.mobileRecipientMargin,
|
margin: ComposerStyle.mobileRecipientMargin,
|
||||||
nextFocusNode: controller.getNextFocusOfBccEmailAddress(),
|
nextFocusNode: controller.getNextFocusOfToEmailAddress(),
|
||||||
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
|
||||||
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
|
||||||
onDeleteEmailAddressTypeAction: controller.deleteEmailAddressType,
|
|
||||||
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
|
||||||
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
|
||||||
onFocusNextAddressAction: controller.handleFocusNextAddressAction,
|
|
||||||
onEditRecipientAction: controller.onEditRecipient,
|
|
||||||
onClearFocusAction: controller.onClearFocusAction,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return const SizedBox.shrink();
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
Obx(() {
|
|
||||||
if (controller.replyToRecipientState.value == PrefixRecipientState.enabled) {
|
|
||||||
return RecipientComposerWidget(
|
|
||||||
prefix: PrefixEmailAddress.replyTo,
|
|
||||||
listEmailAddress: controller.listReplyToEmailAddress,
|
|
||||||
imagePaths: controller.imagePaths,
|
|
||||||
maxWidth: constraints.maxWidth,
|
|
||||||
expandMode: controller.replyToAddressExpandMode.value,
|
|
||||||
controller: controller.replyToEmailAddressController,
|
|
||||||
focusNode: controller.replyToAddressFocusNode,
|
|
||||||
keyTagEditor: controller.keyReplyToEmailTagEditor,
|
|
||||||
isInitial: controller.isInitialRecipient.value,
|
|
||||||
padding: ComposerStyle.mobileRecipientPadding,
|
|
||||||
margin: ComposerStyle.mobileRecipientMargin,
|
|
||||||
nextFocusNode: controller.subjectEmailInputFocusNode,
|
|
||||||
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
||||||
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
onAddEmailAddressTypeAction: controller.addEmailAddressType,
|
onAddEmailAddressTypeAction: controller.addEmailAddressType,
|
||||||
@@ -226,35 +148,120 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
onEnableAllRecipientsInputAction: controller.handleEnableRecipientsInputAction,
|
onEnableAllRecipientsInputAction: controller.handleEnableRecipientsInputAction,
|
||||||
onEditRecipientAction: controller.onEditRecipient,
|
onEditRecipientAction: controller.onEditRecipient,
|
||||||
onClearFocusAction: controller.onClearFocusAction,
|
onClearFocusAction: controller.onClearFocusAction,
|
||||||
);
|
)),
|
||||||
} else {
|
Obx(() {
|
||||||
return const SizedBox.shrink();
|
if (controller.ccRecipientState.value == PrefixRecipientState.enabled) {
|
||||||
}
|
return RecipientComposerWidget(
|
||||||
}),
|
prefix: PrefixEmailAddress.cc,
|
||||||
SubjectComposerWidget(
|
listEmailAddress: controller.listCcEmailAddress,
|
||||||
focusNode: controller.subjectEmailInputFocusNode,
|
imagePaths: controller.imagePaths,
|
||||||
textController: controller.subjectEmailInputController,
|
maxWidth: constraints.maxWidth,
|
||||||
onTextChange: controller.setSubjectEmail,
|
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
||||||
padding: ComposerStyle.mobileSubjectPadding,
|
expandMode: controller.ccAddressExpandMode.value,
|
||||||
margin: ComposerStyle.mobileSubjectMargin,
|
controller: controller.ccEmailAddressController,
|
||||||
|
focusNode: controller.ccAddressFocusNode,
|
||||||
|
keyTagEditor: controller.keyCcEmailTagEditor,
|
||||||
|
isInitial: controller.isInitialRecipient.value,
|
||||||
|
nextFocusNode: controller.getNextFocusOfCcEmailAddress(),
|
||||||
|
padding: ComposerStyle.mobileRecipientPadding,
|
||||||
|
margin: ComposerStyle.mobileRecipientMargin,
|
||||||
|
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
||||||
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
|
onDeleteEmailAddressTypeAction: controller.deleteEmailAddressType,
|
||||||
|
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
||||||
|
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
||||||
|
onFocusNextAddressAction: controller.handleFocusNextAddressAction,
|
||||||
|
onEditRecipientAction: controller.onEditRecipient,
|
||||||
|
onClearFocusAction: controller.onClearFocusAction,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
Obx(() {
|
||||||
|
if (controller.bccRecipientState.value == PrefixRecipientState.enabled) {
|
||||||
|
return RecipientComposerWidget(
|
||||||
|
prefix: PrefixEmailAddress.bcc,
|
||||||
|
listEmailAddress: controller.listBccEmailAddress,
|
||||||
|
imagePaths: controller.imagePaths,
|
||||||
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
||||||
|
expandMode: controller.bccAddressExpandMode.value,
|
||||||
|
controller: controller.bccEmailAddressController,
|
||||||
|
focusNode: controller.bccAddressFocusNode,
|
||||||
|
keyTagEditor: controller.keyBccEmailTagEditor,
|
||||||
|
isInitial: controller.isInitialRecipient.value,
|
||||||
|
padding: ComposerStyle.mobileRecipientPadding,
|
||||||
|
margin: ComposerStyle.mobileRecipientMargin,
|
||||||
|
nextFocusNode: controller.getNextFocusOfBccEmailAddress(),
|
||||||
|
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
||||||
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
|
onDeleteEmailAddressTypeAction: controller.deleteEmailAddressType,
|
||||||
|
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
||||||
|
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
||||||
|
onFocusNextAddressAction: controller.handleFocusNextAddressAction,
|
||||||
|
onEditRecipientAction: controller.onEditRecipient,
|
||||||
|
onClearFocusAction: controller.onClearFocusAction,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
Obx(() {
|
||||||
|
if (controller.replyToRecipientState.value == PrefixRecipientState.enabled) {
|
||||||
|
return RecipientComposerWidget(
|
||||||
|
prefix: PrefixEmailAddress.replyTo,
|
||||||
|
listEmailAddress: controller.listReplyToEmailAddress,
|
||||||
|
imagePaths: controller.imagePaths,
|
||||||
|
maxWidth: constraints.maxWidth,
|
||||||
|
expandMode: controller.replyToAddressExpandMode.value,
|
||||||
|
controller: controller.replyToEmailAddressController,
|
||||||
|
focusNode: controller.replyToAddressFocusNode,
|
||||||
|
keyTagEditor: controller.keyReplyToEmailTagEditor,
|
||||||
|
isInitial: controller.isInitialRecipient.value,
|
||||||
|
padding: ComposerStyle.mobileRecipientPadding,
|
||||||
|
margin: ComposerStyle.mobileRecipientMargin,
|
||||||
|
nextFocusNode: controller.subjectEmailInputFocusNode,
|
||||||
|
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
||||||
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
|
onAddEmailAddressTypeAction: controller.addEmailAddressType,
|
||||||
|
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
||||||
|
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
||||||
|
onFocusNextAddressAction: controller.handleFocusNextAddressAction,
|
||||||
|
onEnableAllRecipientsInputAction: controller.handleEnableRecipientsInputAction,
|
||||||
|
onEditRecipientAction: controller.onEditRecipient,
|
||||||
|
onClearFocusAction: controller.onClearFocusAction,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
SubjectComposerWidget(
|
||||||
|
focusNode: controller.subjectEmailInputFocusNode,
|
||||||
|
textController: controller.subjectEmailInputController,
|
||||||
|
onTextChange: controller.setSubjectEmail,
|
||||||
|
padding: ComposerStyle.mobileSubjectPadding,
|
||||||
|
margin: ComposerStyle.mobileSubjectMargin,
|
||||||
|
),
|
||||||
|
Obx(() {
|
||||||
|
if (controller.uploadController.listUploadAttachments.isNotEmpty) {
|
||||||
|
return MobileAttachmentComposerWidget(
|
||||||
|
listFileUploaded: controller.uploadController.listUploadAttachments,
|
||||||
|
onDeleteAttachmentAction: controller.deleteAttachmentUploaded,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
Obx(() => Center(
|
||||||
|
child: InsertImageLoadingBarWidget(
|
||||||
|
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
||||||
|
viewState: controller.viewState.value,
|
||||||
|
margin: ComposerStyle.insertImageLoadingBarMargin,
|
||||||
|
),
|
||||||
|
))
|
||||||
|
],
|
||||||
),
|
),
|
||||||
Obx(() {
|
|
||||||
if (controller.uploadController.listUploadAttachments.isNotEmpty) {
|
|
||||||
return MobileAttachmentComposerWidget(
|
|
||||||
listFileUploaded: controller.uploadController.listUploadAttachments,
|
|
||||||
onDeleteAttachmentAction: controller.deleteAttachmentUploaded,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return const SizedBox.shrink();
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
Obx(() => Center(
|
|
||||||
child: InsertImageLoadingBarWidget(
|
|
||||||
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
|
||||||
viewState: controller.viewState.value,
|
|
||||||
margin: ComposerStyle.insertImageLoadingBarMargin,
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
Obx(() => Padding(
|
Obx(() => Padding(
|
||||||
padding: ComposerStyle.mobileEditorPadding,
|
padding: ComposerStyle.mobileEditorPadding,
|
||||||
child: MobileEditorView(
|
child: MobileEditorView(
|
||||||
|
|||||||
Reference in New Issue
Block a user