TF-3894 Fix blank email content when opening email
This commit is contained in:
+4
-5
@@ -31,6 +31,7 @@ import 'package:rxdart/transformers.dart';
|
||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/contact_support_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/message_dialog_action_manager.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/own_email_address_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/exceptions/set_method_exception.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/extensions/email_request_extension.dart';
|
||||
@@ -126,7 +127,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/reopen_composer_cache_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/set_error_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_own_email_address_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/web_auth_redirect_processor_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/download/download_task_state.dart';
|
||||
@@ -203,7 +203,7 @@ import 'package:server_settings/server_settings/tmail_server_settings_extension.
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
class MailboxDashBoardController extends ReloadableController
|
||||
with ContactSupportMixin {
|
||||
with ContactSupportMixin, OwnEmailAddressMixin {
|
||||
|
||||
final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor = Get.find<RemoveEmailDraftsInteractor>();
|
||||
final EmailReceiveManager _emailReceiveManager = Get.find<EmailReceiveManager>();
|
||||
@@ -285,9 +285,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
final isDrawerOpened = RxBool(false);
|
||||
final isContextMenuOpened = RxBool(false);
|
||||
final isPopupMenuOpened = RxBool(false);
|
||||
final ownEmailAddress = RxString('');
|
||||
|
||||
Session? sessionCurrent;
|
||||
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
|
||||
Map<MailboxId, PresentationMailbox> mapMailboxById = {};
|
||||
final emailsInCurrentMailbox = <PresentationEmail>[].obs;
|
||||
@@ -1986,6 +1984,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
return searchController.quickSearchEmails(
|
||||
session: sessionCurrent!,
|
||||
accountId: accountId.value!,
|
||||
ownEmailAddress: ownEmailAddress.value,
|
||||
query: query
|
||||
);
|
||||
} else {
|
||||
@@ -3226,7 +3225,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
|
||||
void _handleGetAllIdentitiesFailure() {
|
||||
_identities = null;
|
||||
synchronizeOwnEmailAddress(sessionCurrent?.getUserDisplayName() ?? '');
|
||||
updateOwnEmailAddressFromIdentities([]);
|
||||
}
|
||||
|
||||
List<Identity> get listIdentities => _identities ?? [];
|
||||
|
||||
@@ -17,7 +17,6 @@ import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/email_filter_condition_extension.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/date_range_picker_mixin.dart';
|
||||
@@ -91,6 +90,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
Future<List<PresentationEmail>> quickSearchEmails({
|
||||
required Session session,
|
||||
required AccountId accountId,
|
||||
required String ownEmailAddress,
|
||||
required String query,
|
||||
}) async {
|
||||
currentSearchText = query;
|
||||
@@ -102,7 +102,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
EmailComparator(EmailComparatorProperty.receivedAt)
|
||||
..setIsAscending(false)),
|
||||
filter: _mappingToFilterOnSuggestionForm(
|
||||
currentUserEmail: session.getOwnEmailAddressOrEmpty(),
|
||||
currentUserEmail: ownEmailAddress,
|
||||
query: query,
|
||||
),
|
||||
properties: EmailUtils.getPropertiesForEmailGetMethod(session, accountId),
|
||||
@@ -127,7 +127,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
hasAttachment: listFilterOnSuggestionForm.contains(QuickSearchFilter.hasAttachment)
|
||||
? true
|
||||
: null,
|
||||
from: listFilterOnSuggestionForm.contains(QuickSearchFilter.fromMe)
|
||||
from: listFilterOnSuggestionForm.contains(QuickSearchFilter.fromMe) && currentUserEmail.isNotEmpty
|
||||
? currentUserEmail
|
||||
: null,
|
||||
hasKeyword: listFilterOnSuggestionForm.contains(QuickSearchFilter.starred)
|
||||
@@ -140,7 +140,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
: null;
|
||||
}
|
||||
|
||||
void applyFilterSuggestionToSearchFilter(String? currentUserEmail) {
|
||||
void applyFilterSuggestionToSearchFilter(String currentUserEmail) {
|
||||
final receiveTime = listFilterOnSuggestionForm.contains(QuickSearchFilter.last7Days)
|
||||
? EmailReceiveTimeType.last7Days
|
||||
: EmailReceiveTimeType.allTime;
|
||||
@@ -148,7 +148,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
final hasAttachment = listFilterOnSuggestionForm.contains(QuickSearchFilter.hasAttachment) ? true : false;
|
||||
|
||||
var listFromAddress = searchEmailFilter.value.from;
|
||||
if (currentUserEmail != null) {
|
||||
if (currentUserEmail.isNotEmpty) {
|
||||
if (listFilterOnSuggestionForm.contains(QuickSearchFilter.fromMe)) {
|
||||
listFromAddress.add(currentUserEmail);
|
||||
} else {
|
||||
|
||||
+7
-1
@@ -1,5 +1,6 @@
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/profile_setting/profile_setting_action_type.dart';
|
||||
|
||||
@@ -10,7 +11,12 @@ extension HandleProfileSettingActionTypeClickExtension on MailboxDashBoardContro
|
||||
}) {
|
||||
switch (actionType) {
|
||||
case ProfileSettingActionType.signOut:
|
||||
logout(context, sessionCurrent, accountId.value);
|
||||
String accountDisplayName = ownEmailAddress.value;
|
||||
if (accountDisplayName.trim().isEmpty) {
|
||||
accountDisplayName =
|
||||
sessionCurrent?.getOwnEmailAddressOrUsername() ?? '';
|
||||
}
|
||||
logout(context, sessionCurrent, accountId.value, accountDisplayName);
|
||||
break;
|
||||
case ProfileSettingActionType.manageAccount:
|
||||
goToSettings();
|
||||
|
||||
-24
@@ -1,24 +0,0 @@
|
||||
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:jmap_dart_client/jmap/identities/identity.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
|
||||
extension UpdateOwnEmailAddressExtension on MailboxDashBoardController {
|
||||
|
||||
void synchronizeOwnEmailAddress(String emailAddress) {
|
||||
log('UpdateOwnEmailAddressExtension::synchronizeOwnEmailAddress:OwnEmailAddress = ${ownEmailAddress.value}, NewEmailAddress = $emailAddress');
|
||||
if (ownEmailAddress.value.isNotEmpty || emailAddress.isEmpty) return;
|
||||
ownEmailAddress.value = emailAddress;
|
||||
}
|
||||
|
||||
void updateOwnEmailAddressFromIdentities(List<Identity> listIdentities) {
|
||||
final identityEmailAddress = listIdentities.firstOrNull?.email ?? '';
|
||||
|
||||
if (identityEmailAddress.isNotEmpty) {
|
||||
synchronizeOwnEmailAddress(identityEmailAddress);
|
||||
} else {
|
||||
synchronizeOwnEmailAddress(sessionCurrent?.getUserDisplayName() ?? '');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -81,15 +81,20 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
|
||||
return Obx(() {
|
||||
final accountId = controller.accountId.value;
|
||||
final ownEmailAddress = controller.ownEmailAddress.value;
|
||||
String accountDisplayName = controller.ownEmailAddress.value;
|
||||
final contactSupportCapability = accountId != null
|
||||
? controller.sessionCurrent?.getContactSupportCapability(accountId)
|
||||
: null;
|
||||
if (accountDisplayName.trim().isEmpty) {
|
||||
accountDisplayName = controller
|
||||
.sessionCurrent
|
||||
?.getOwnEmailAddressOrUsername() ?? '';
|
||||
}
|
||||
|
||||
return NavigationBarWidget(
|
||||
imagePaths: controller.imagePaths,
|
||||
accountId: accountId,
|
||||
ownEmailAddress: ownEmailAddress,
|
||||
ownEmailAddress: accountDisplayName,
|
||||
contactSupportCapability: contactSupportCapability,
|
||||
searchForm: SearchInputFormWidget(),
|
||||
appGridController:
|
||||
@@ -151,8 +156,15 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
),
|
||||
const Spacer(),
|
||||
Obx(() {
|
||||
String accountDisplayName =
|
||||
controller.ownEmailAddress.value;
|
||||
if (accountDisplayName.trim().isEmpty) {
|
||||
accountDisplayName = controller
|
||||
.sessionCurrent
|
||||
?.getOwnEmailAddressOrUsername() ?? '';
|
||||
}
|
||||
return ProfileSettingIcon(
|
||||
ownEmailAddress: controller.ownEmailAddress.value,
|
||||
ownEmailAddress: accountDisplayName,
|
||||
settingActionTypes: ProfileSettingActionType.values,
|
||||
onProfileSettingActionTypeClick: (actionType) =>
|
||||
controller.handleProfileSettingActionTypeClick(
|
||||
|
||||
@@ -17,7 +17,6 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
|
||||
@@ -173,7 +172,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
sortOrderType: _dashBoardController.currentSortOrder,
|
||||
);
|
||||
_searchController.applyFilterSuggestionToSearchFilter(
|
||||
_dashBoardController.sessionCurrent?.getOwnEmailAddressOrEmpty(),
|
||||
_dashBoardController.ownEmailAddress.value,
|
||||
);
|
||||
_dashBoardController.searchEmailByQueryString(queryString);
|
||||
} else {
|
||||
@@ -213,7 +212,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
sortOrderType: _dashBoardController.currentSortOrder,
|
||||
);
|
||||
_searchController.applyFilterSuggestionToSearchFilter(
|
||||
_dashBoardController.sessionCurrent?.getOwnEmailAddressOrEmpty(),
|
||||
_dashBoardController.ownEmailAddress.value,
|
||||
);
|
||||
_dashBoardController.searchEmailByQueryString(recent.value);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user