Server termination and refactoring message dialogs.
This commit is contained in:
@@ -95,7 +95,9 @@ namespace Wino.Mail.ViewModels
|
||||
{
|
||||
// Discord disclaimer message about server.
|
||||
if (stringUrl == DiscordChannelUrl)
|
||||
await DialogService.ShowMessageAsync(Translator.DiscordChannelDisclaimerMessage, Translator.DiscordChannelDisclaimerTitle);
|
||||
await DialogService.ShowMessageAsync(Translator.DiscordChannelDisclaimerMessage,
|
||||
Translator.DiscordChannelDisclaimerTitle,
|
||||
WinoCustomMessageDialogIcon.Warning);
|
||||
|
||||
await _nativeAppService.LaunchUriAsync(new Uri(stringUrl));
|
||||
}
|
||||
|
||||
@@ -98,14 +98,18 @@ namespace Wino.Mail.ViewModels
|
||||
// Check existence.
|
||||
if (AccountAliases.Any(a => a.AliasAddress == newAlias.AliasAddress))
|
||||
{
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_AliasExistsTitle, Translator.DialogMessage_AliasExistsMessage);
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_AliasExistsTitle,
|
||||
Translator.DialogMessage_AliasExistsMessage,
|
||||
WinoCustomMessageDialogIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
// Validate all addresses.
|
||||
if (!EmailValidator.Validate(newAlias.AliasAddress) || (!string.IsNullOrEmpty(newAlias.ReplyToAddress) && !EmailValidator.Validate(newAlias.ReplyToAddress)))
|
||||
{
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_InvalidAliasMessage, Translator.DialogMessage_InvalidAliasTitle);
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_InvalidAliasMessage,
|
||||
Translator.DialogMessage_InvalidAliasTitle,
|
||||
WinoCustomMessageDialogIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -125,14 +129,18 @@ namespace Wino.Mail.ViewModels
|
||||
// Primary aliases can't be deleted.
|
||||
if (alias.IsPrimary)
|
||||
{
|
||||
await DialogService.ShowMessageAsync(Translator.Info_CantDeletePrimaryAliasMessage, Translator.GeneralTitle_Warning);
|
||||
await DialogService.ShowMessageAsync(Translator.Info_CantDeletePrimaryAliasMessage,
|
||||
Translator.GeneralTitle_Warning,
|
||||
WinoCustomMessageDialogIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
// Root aliases can't be deleted.
|
||||
if (alias.IsRootAlias)
|
||||
{
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_CantDeleteRootAliasTitle, Translator.DialogMessage_CantDeleteRootAliasMessage);
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_CantDeleteRootAliasTitle,
|
||||
Translator.DialogMessage_CantDeleteRootAliasMessage,
|
||||
WinoCustomMessageDialogIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,8 @@ namespace Wino.Mail.ViewModels
|
||||
IRecipient<MergedInboxRenamed>,
|
||||
IRecipient<LanguageChanged>,
|
||||
IRecipient<AccountMenuItemsReordered>,
|
||||
IRecipient<AccountSynchronizationProgressUpdatedMessage>
|
||||
IRecipient<AccountSynchronizationProgressUpdatedMessage>,
|
||||
IRecipient<NavigateAppPreferencesRequested>
|
||||
{
|
||||
#region Menu Items
|
||||
|
||||
@@ -65,6 +66,7 @@ namespace Wino.Mail.ViewModels
|
||||
public IWinoNavigationService NavigationService { get; }
|
||||
|
||||
private readonly IFolderService _folderService;
|
||||
private readonly IConfigurationService _configurationService;
|
||||
private readonly IAccountService _accountService;
|
||||
private readonly IContextMenuItemService _contextMenuItemService;
|
||||
private readonly IStoreRatingService _storeRatingService;
|
||||
@@ -98,7 +100,8 @@ namespace Wino.Mail.ViewModels
|
||||
IWinoRequestDelegator winoRequestDelegator,
|
||||
IFolderService folderService,
|
||||
IStatePersistanceService statePersistanceService,
|
||||
IWinoServerConnectionManager serverConnectionManager) : base(dialogService)
|
||||
IWinoServerConnectionManager serverConnectionManager,
|
||||
IConfigurationService configurationService) : base(dialogService)
|
||||
{
|
||||
StatePersistenceService = statePersistanceService;
|
||||
ServerConnectionManager = serverConnectionManager;
|
||||
@@ -115,6 +118,7 @@ namespace Wino.Mail.ViewModels
|
||||
PreferencesService = preferencesService;
|
||||
NavigationService = navigationService;
|
||||
|
||||
_configurationService = configurationService;
|
||||
_backgroundTaskService = backgroundTaskService;
|
||||
_mimeFileService = mimeFileService;
|
||||
_nativeAppService = nativeAppService;
|
||||
@@ -229,7 +233,6 @@ namespace Wino.Mail.ViewModels
|
||||
public override async void OnNavigatedTo(NavigationMode mode, object parameters)
|
||||
{
|
||||
base.OnNavigatedTo(mode, parameters);
|
||||
|
||||
await CreateFooterItemsAsync();
|
||||
|
||||
await RecreateMenuItemsAsync();
|
||||
@@ -527,7 +530,7 @@ namespace Wino.Mail.ViewModels
|
||||
StatePersistenceService.CoreWindowTitle = "Wino Mail";
|
||||
}
|
||||
|
||||
public async Task MenuItemInvokedOrSelectedAsync(IMenuItem clickedMenuItem)
|
||||
public async Task MenuItemInvokedOrSelectedAsync(IMenuItem clickedMenuItem, object parameter = null)
|
||||
{
|
||||
if (clickedMenuItem == null) return;
|
||||
|
||||
@@ -561,11 +564,11 @@ namespace Wino.Mail.ViewModels
|
||||
}
|
||||
else if (clickedMenuItem is SettingsItem)
|
||||
{
|
||||
NavigationService.Navigate(WinoPage.SettingsPage);
|
||||
NavigationService.Navigate(WinoPage.SettingsPage, parameter, NavigationReferenceFrame.ShellFrame, NavigationTransitionType.None);
|
||||
}
|
||||
else if (clickedMenuItem is ManageAccountsMenuItem)
|
||||
{
|
||||
NavigationService.Navigate(WinoPage.AccountManagementPage);
|
||||
NavigationService.Navigate(WinoPage.AccountManagementPage, parameter, NavigationReferenceFrame.ShellFrame, NavigationTransitionType.None);
|
||||
}
|
||||
else if (clickedMenuItem is IAccountMenuItem clickedAccountMenuItem && latestSelectedAccountMenuItem != clickedAccountMenuItem)
|
||||
{
|
||||
@@ -721,7 +724,19 @@ namespace Wino.Mail.ViewModels
|
||||
|
||||
if (!accounts.Any())
|
||||
{
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_NoAccountsForCreateMailMessage, Translator.DialogMessage_NoAccountsForCreateMailTitle);
|
||||
var isManageAccountClicked = await DialogService.ShowWinoCustomMessageDialogAsync(Translator.DialogMessage_NoAccountsForCreateMailMessage,
|
||||
Translator.DialogMessage_NoAccountsForCreateMailTitle,
|
||||
Translator.MenuManageAccounts,
|
||||
WinoCustomMessageDialogIcon.Information,
|
||||
string.Empty);
|
||||
|
||||
|
||||
|
||||
if (isManageAccountClicked)
|
||||
{
|
||||
SelectedMenuItem = ManageAccountsMenuItem;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -794,11 +809,16 @@ namespace Wino.Mail.ViewModels
|
||||
|
||||
protected override async void OnAccountUpdated(MailAccount updatedAccount)
|
||||
{
|
||||
await ExecuteUIThread(() =>
|
||||
await ExecuteUIThread(async () =>
|
||||
{
|
||||
if (MenuItems.TryGetAccountMenuItem(updatedAccount.Id, out IAccountMenuItem foundAccountMenuItem))
|
||||
{
|
||||
foundAccountMenuItem.UpdateAccount(updatedAccount);
|
||||
|
||||
if (latestSelectedAccountMenuItem == foundAccountMenuItem)
|
||||
{
|
||||
await ChangeLoadedAccountAsync(foundAccountMenuItem, false);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -850,7 +870,9 @@ namespace Wino.Mail.ViewModels
|
||||
|
||||
if (!accounts.Any())
|
||||
{
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_NoAccountsForCreateMailMessage, Translator.DialogMessage_NoAccountsForCreateMailTitle);
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_NoAccountsForCreateMailMessage,
|
||||
Translator.DialogMessage_NoAccountsForCreateMailTitle,
|
||||
WinoCustomMessageDialogIcon.Warning);
|
||||
}
|
||||
else if (accounts.Count == 1)
|
||||
{
|
||||
@@ -961,5 +983,10 @@ namespace Wino.Mail.ViewModels
|
||||
|
||||
await ExecuteUIThread(() => { accountMenuItem.SynchronizationProgress = message.Progress; });
|
||||
}
|
||||
|
||||
public async void Receive(NavigateAppPreferencesRequested message)
|
||||
{
|
||||
await MenuItemInvokedOrSelectedAsync(SettingsItem, WinoPage.AppPreferencesPage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,7 +161,9 @@ namespace Wino.Mail.ViewModels
|
||||
|
||||
if (!ToItems.Any())
|
||||
{
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_ComposerMissingRecipientMessage, Translator.DialogMessage_ComposerValidationFailedTitle);
|
||||
await DialogService.ShowMessageAsync(Translator.DialogMessage_ComposerMissingRecipientMessage,
|
||||
Translator.DialogMessage_ComposerValidationFailedTitle,
|
||||
WinoCustomMessageDialogIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,13 +6,6 @@ namespace Wino.Mail.ViewModels.Messages
|
||||
/// When the rendering page is active, but new item is requested to be rendered.
|
||||
/// To not trigger navigation again and re-use existing Chromium.
|
||||
/// </summary>
|
||||
public class NewMailItemRenderingRequestedEvent
|
||||
{
|
||||
public NewMailItemRenderingRequestedEvent(MailItemViewModel mailItemViewModel)
|
||||
{
|
||||
MailItemViewModel = mailItemViewModel;
|
||||
}
|
||||
|
||||
public MailItemViewModel MailItemViewModel { get; }
|
||||
}
|
||||
/// <param name="MailItemViewModel"></param>
|
||||
public record NewMailItemRenderingRequestedEvent(MailItemViewModel MailItemViewModel);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user