TF-3847 Fix blank user avatar on Stalwart server
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
+9
-3
@@ -113,6 +113,7 @@ 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/model/dashboard_routes.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/download/download_task_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_state.dart';
|
||||
@@ -259,6 +260,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 = {};
|
||||
@@ -757,6 +759,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
_isFirstSessionLoad = true;
|
||||
sessionCurrent = session;
|
||||
accountId.value = currentAccountId;
|
||||
synchronizeOwnEmailAddress(session.getOwnEmailAddressOrEmpty());
|
||||
|
||||
injectAutoCompleteBindings(session, currentAccountId);
|
||||
injectRuleFilterBindings(session, currentAccountId);
|
||||
@@ -3099,12 +3102,17 @@ class MailboxDashBoardController extends ReloadableController
|
||||
|
||||
void _handleGetAllIdentitiesSuccess(GetAllIdentitiesSuccess success) {
|
||||
log('MailboxDashBoardController::_handleGetAllIdentitiesSuccess: IDENTITIES_SIZE = ${_identities?.length}');
|
||||
final listIdentitiesMayDeleted = success.identities?.toListMayDeleted() ?? [];
|
||||
final listIdentities = success.identities ?? [];
|
||||
|
||||
final listIdentitiesMayDeleted = listIdentities.toListMayDeleted();
|
||||
_identities = listIdentitiesMayDeleted;
|
||||
|
||||
updateOwnEmailAddressFromIdentities(listIdentities);
|
||||
}
|
||||
|
||||
void _handleGetAllIdentitiesFailure() {
|
||||
_identities = null;
|
||||
synchronizeOwnEmailAddress(sessionCurrent?.getUserDisplayName() ?? '');
|
||||
}
|
||||
|
||||
List<Identity> get listIdentities => _identities ?? [];
|
||||
@@ -3160,8 +3168,6 @@ class MailboxDashBoardController extends ReloadableController
|
||||
}
|
||||
}
|
||||
|
||||
String getOwnEmailAddress() => sessionCurrent?.getOwnEmailAddressOrEmpty() ?? '';
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
if (PlatformInfo.isWeb) {
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
|
||||
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() ?? '');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -78,30 +78,34 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
|
||||
return Obx(() {
|
||||
final accountId = controller.accountId.value;
|
||||
|
||||
return NavigationBarWidget(
|
||||
imagePaths: controller.imagePaths,
|
||||
accountId: accountId,
|
||||
ownEmailAddress: controller.getOwnEmailAddress(),
|
||||
contactSupportCapability: accountId != null
|
||||
final ownEmailAddress = controller.ownEmailAddress.value;
|
||||
final contactSupportCapability = accountId != null
|
||||
? controller.sessionCurrent?.getContactSupportCapability(accountId)
|
||||
: null,
|
||||
searchForm: SearchInputFormWidget(),
|
||||
appGridController: controller.appGridDashboardController,
|
||||
settingActionTypes: ProfileSettingActionType.values,
|
||||
onTapApplicationLogoAction: controller.redirectToInboxAction,
|
||||
onTapContactSupportAction: (contactSupport) =>
|
||||
controller.onGetHelpOrReportBug(contactSupport),
|
||||
onProfileSettingActionTypeClick: (actionType) =>
|
||||
controller.handleProfileSettingActionTypeClick(
|
||||
: null;
|
||||
|
||||
return NavigationBarWidget(
|
||||
imagePaths: controller.imagePaths,
|
||||
accountId: accountId,
|
||||
ownEmailAddress: ownEmailAddress,
|
||||
contactSupportCapability: contactSupportCapability,
|
||||
searchForm: SearchInputFormWidget(),
|
||||
appGridController:
|
||||
controller.appGridDashboardController,
|
||||
settingActionTypes: ProfileSettingActionType.values,
|
||||
onTapApplicationLogoAction:
|
||||
controller.redirectToInboxAction,
|
||||
onTapContactSupportAction: (contactSupport) =>
|
||||
controller.onGetHelpOrReportBug(contactSupport),
|
||||
onProfileSettingActionTypeClick: (actionType) =>
|
||||
controller.handleProfileSettingActionTypeClick(
|
||||
context: context,
|
||||
actionType: actionType,
|
||||
),
|
||||
);
|
||||
});
|
||||
}
|
||||
},
|
||||
),
|
||||
Expanded(child: Row(children: [
|
||||
Expanded(child: Row(children: [
|
||||
Column(children: [
|
||||
ComposeButtonWidget(
|
||||
imagePaths: controller.imagePaths,
|
||||
@@ -144,13 +148,8 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
),
|
||||
const Spacer(),
|
||||
Obx(() {
|
||||
final accountId = controller.accountId.value;
|
||||
final ownEmailAddress = accountId == null
|
||||
? ''
|
||||
: controller.getOwnEmailAddress();
|
||||
|
||||
return ProfileSettingIcon(
|
||||
ownEmailAddress: ownEmailAddress,
|
||||
ownEmailAddress: controller.ownEmailAddress.value,
|
||||
settingActionTypes: ProfileSettingActionType.values,
|
||||
onProfileSettingActionTypeClick: (actionType) =>
|
||||
controller.handleProfileSettingActionTypeClick(
|
||||
|
||||
Reference in New Issue
Block a user