Code Quality: Fixed multiple paddings, disabled backspace addon (#354)
* Changed paddings and size for unsubscribe button to avoid shifts * Fix bottom paddings * Disable backspace addon, simplify attachments logic, convert switches * Remove redundant code from Mail Rendering page * Replace Font Icon to Path
This commit is contained in:
@@ -81,8 +81,6 @@ namespace Wino.Mail.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasMultipleAttachments => Attachments.Count > 1;
|
|
||||||
|
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
[NotifyPropertyChangedFor(nameof(ShouldDisplayDownloadProgress))]
|
[NotifyPropertyChangedFor(nameof(ShouldDisplayDownloadProgress))]
|
||||||
private bool isIndetermineProgress;
|
private bool isIndetermineProgress;
|
||||||
@@ -295,14 +293,14 @@ namespace Wino.Mail.ViewModels
|
|||||||
{
|
{
|
||||||
base.OnNavigatedTo(mode, parameters);
|
base.OnNavigatedTo(mode, parameters);
|
||||||
|
|
||||||
Attachments.CollectionChanged -= AttachmentsUpdated;
|
|
||||||
Attachments.CollectionChanged += AttachmentsUpdated;
|
|
||||||
|
|
||||||
renderCancellationTokenSource.Cancel();
|
renderCancellationTokenSource.Cancel();
|
||||||
|
|
||||||
initializedMailItemViewModel = null;
|
initializedMailItemViewModel = null;
|
||||||
initializedMimeMessageInformation = null;
|
initializedMimeMessageInformation = null;
|
||||||
|
|
||||||
|
// Dispose existing content first.
|
||||||
|
Messenger.Send(new CancelRenderingContentRequested());
|
||||||
|
|
||||||
// This page can be accessed for 2 purposes.
|
// This page can be accessed for 2 purposes.
|
||||||
// 1. Rendering a mail item when the user selects.
|
// 1. Rendering a mail item when the user selects.
|
||||||
// 2. Rendering an existing EML file with MimeMessage.
|
// 2. Rendering an existing EML file with MimeMessage.
|
||||||
@@ -313,8 +311,6 @@ namespace Wino.Mail.ViewModels
|
|||||||
// Configure common rendering properties first.
|
// Configure common rendering properties first.
|
||||||
IsDarkWebviewRenderer = _underlyingThemeService.IsUnderlyingThemeDark();
|
IsDarkWebviewRenderer = _underlyingThemeService.IsUnderlyingThemeDark();
|
||||||
|
|
||||||
await ResetPagePropertiesAsync();
|
|
||||||
|
|
||||||
renderCancellationTokenSource = new CancellationTokenSource();
|
renderCancellationTokenSource = new CancellationTokenSource();
|
||||||
|
|
||||||
// Mime content might not be available for now and might require a download.
|
// Mime content might not be available for now and might require a download.
|
||||||
@@ -340,11 +336,6 @@ namespace Wino.Mail.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void AttachmentsUpdated(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
|
|
||||||
{
|
|
||||||
await ExecuteUIThread(() => { OnPropertyChanged(nameof(HasMultipleAttachments)); });
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task HandleSingleItemDownloadAsync(MailItemViewModel mailItemViewModel)
|
private async Task HandleSingleItemDownloadAsync(MailItemViewModel mailItemViewModel)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -371,6 +362,7 @@ namespace Wino.Mail.ViewModels
|
|||||||
|
|
||||||
private async Task RenderAsync(MailItemViewModel mailItemViewModel, CancellationToken cancellationToken = default)
|
private async Task RenderAsync(MailItemViewModel mailItemViewModel, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
|
ResetProgress();
|
||||||
var isMimeExists = await _mimeFileService.IsMimeExistAsync(mailItemViewModel.AssignedAccount.Id, mailItemViewModel.MailCopy.FileId);
|
var isMimeExists = await _mimeFileService.IsMimeExistAsync(mailItemViewModel.AssignedAccount.Id, mailItemViewModel.MailCopy.FileId);
|
||||||
|
|
||||||
if (!isMimeExists)
|
if (!isMimeExists)
|
||||||
@@ -460,8 +452,6 @@ namespace Wino.Mail.ViewModels
|
|||||||
{
|
{
|
||||||
base.OnNavigatedFrom(mode, parameters);
|
base.OnNavigatedFrom(mode, parameters);
|
||||||
|
|
||||||
Attachments.CollectionChanged -= AttachmentsUpdated;
|
|
||||||
|
|
||||||
renderCancellationTokenSource.Cancel();
|
renderCancellationTokenSource.Cancel();
|
||||||
CurrentDownloadPercentage = 0d;
|
CurrentDownloadPercentage = 0d;
|
||||||
|
|
||||||
@@ -470,12 +460,6 @@ namespace Wino.Mail.ViewModels
|
|||||||
|
|
||||||
forceImageLoading = false;
|
forceImageLoading = false;
|
||||||
|
|
||||||
ToItems.Clear();
|
|
||||||
CCItemsItems.Clear();
|
|
||||||
BCCItems.Clear();
|
|
||||||
Attachments.Clear();
|
|
||||||
MenuItems.Clear();
|
|
||||||
|
|
||||||
StatePersistenceService.IsReadingMail = false;
|
StatePersistenceService.IsReadingMail = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -501,22 +485,6 @@ namespace Wino.Mail.ViewModels
|
|||||||
IsIndetermineProgress = false;
|
IsIndetermineProgress = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ResetPagePropertiesAsync()
|
|
||||||
{
|
|
||||||
await ExecuteUIThread(() =>
|
|
||||||
{
|
|
||||||
ResetProgress();
|
|
||||||
|
|
||||||
ToItems.Clear();
|
|
||||||
CCItemsItems.Clear();
|
|
||||||
BCCItems.Clear();
|
|
||||||
Attachments.Clear();
|
|
||||||
|
|
||||||
// Dispose existing content first.
|
|
||||||
Messenger.Send(new CancelRenderingContentRequested());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InitializeCommandBarItems()
|
private void InitializeCommandBarItems()
|
||||||
{
|
{
|
||||||
MenuItems.Clear();
|
MenuItems.Clear();
|
||||||
|
|||||||
@@ -28,21 +28,17 @@ namespace Wino.Helpers
|
|||||||
public static bool CountToBooleanConverter(int value) => value > 0;
|
public static bool CountToBooleanConverter(int value) => value > 0;
|
||||||
public static bool ObjectEquals(object obj1, object obj2) => object.Equals(obj1, obj2);
|
public static bool ObjectEquals(object obj1, object obj2) => object.Equals(obj1, obj2);
|
||||||
public static Visibility CountToVisibilityConverter(int value) => value > 0 ? Visibility.Visible : Visibility.Collapsed;
|
public static Visibility CountToVisibilityConverter(int value) => value > 0 ? Visibility.Visible : Visibility.Collapsed;
|
||||||
|
public static Visibility CountToVisibilityConverterWithThreshold(int value, int threshold) => value > threshold ? Visibility.Visible : Visibility.Collapsed;
|
||||||
public static InfoBarSeverity InfoBarSeverityConverter(InfoBarMessageType messageType)
|
public static InfoBarSeverity InfoBarSeverityConverter(InfoBarMessageType messageType)
|
||||||
{
|
{
|
||||||
switch (messageType)
|
return messageType switch
|
||||||
{
|
{
|
||||||
case InfoBarMessageType.Information:
|
InfoBarMessageType.Information => InfoBarSeverity.Informational,
|
||||||
return InfoBarSeverity.Informational;
|
InfoBarMessageType.Success => InfoBarSeverity.Success,
|
||||||
case InfoBarMessageType.Success:
|
InfoBarMessageType.Warning => InfoBarSeverity.Warning,
|
||||||
return InfoBarSeverity.Success;
|
InfoBarMessageType.Error => InfoBarSeverity.Error,
|
||||||
case InfoBarMessageType.Warning:
|
_ => InfoBarSeverity.Informational,
|
||||||
return InfoBarSeverity.Warning;
|
};
|
||||||
case InfoBarMessageType.Error:
|
|
||||||
return InfoBarSeverity.Error;
|
|
||||||
default:
|
|
||||||
return InfoBarSeverity.Informational;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public static SolidColorBrush GetSolidColorBrushFromHex(string colorHex) => string.IsNullOrEmpty(colorHex) ? new SolidColorBrush(Colors.Transparent) : new SolidColorBrush(colorHex.ToColor());
|
public static SolidColorBrush GetSolidColorBrushFromHex(string colorHex) => string.IsNullOrEmpty(colorHex) ? new SolidColorBrush(Colors.Transparent) : new SolidColorBrush(colorHex.ToColor());
|
||||||
public static Visibility IsSelectionModeMultiple(ListViewSelectionMode mode) => mode == ListViewSelectionMode.Multiple ? Visibility.Visible : Visibility.Collapsed;
|
public static Visibility IsSelectionModeMultiple(ListViewSelectionMode mode) => mode == ListViewSelectionMode.Multiple ? Visibility.Visible : Visibility.Collapsed;
|
||||||
@@ -177,95 +173,59 @@ namespace Wino.Helpers
|
|||||||
|
|
||||||
public static WinoIconGlyph GetPathGeometry(FolderOperation operation)
|
public static WinoIconGlyph GetPathGeometry(FolderOperation operation)
|
||||||
{
|
{
|
||||||
switch (operation)
|
return operation switch
|
||||||
{
|
{
|
||||||
case FolderOperation.None:
|
FolderOperation.None => WinoIconGlyph.None,
|
||||||
return WinoIconGlyph.None;
|
FolderOperation.Pin => WinoIconGlyph.Pin,
|
||||||
case FolderOperation.Pin:
|
FolderOperation.Unpin => WinoIconGlyph.UnPin,
|
||||||
return WinoIconGlyph.Pin;
|
FolderOperation.MarkAllAsRead => WinoIconGlyph.MarkRead,
|
||||||
case FolderOperation.Unpin:
|
FolderOperation.DontSync => WinoIconGlyph.DontSync,
|
||||||
return WinoIconGlyph.UnPin;
|
FolderOperation.Empty => WinoIconGlyph.EmptyFolder,
|
||||||
case FolderOperation.MarkAllAsRead:
|
FolderOperation.Rename => WinoIconGlyph.Rename,
|
||||||
return WinoIconGlyph.MarkRead;
|
FolderOperation.Delete => WinoIconGlyph.Delete,
|
||||||
case FolderOperation.DontSync:
|
FolderOperation.Move => WinoIconGlyph.Forward,
|
||||||
return WinoIconGlyph.DontSync;
|
FolderOperation.TurnOffNotifications => WinoIconGlyph.TurnOfNotifications,
|
||||||
case FolderOperation.Empty:
|
FolderOperation.CreateSubFolder => WinoIconGlyph.CreateFolder,
|
||||||
return WinoIconGlyph.EmptyFolder;
|
_ => WinoIconGlyph.None,
|
||||||
case FolderOperation.Rename:
|
};
|
||||||
return WinoIconGlyph.Rename;
|
|
||||||
case FolderOperation.Delete:
|
|
||||||
return WinoIconGlyph.Delete;
|
|
||||||
case FolderOperation.Move:
|
|
||||||
return WinoIconGlyph.Forward;
|
|
||||||
case FolderOperation.TurnOffNotifications:
|
|
||||||
return WinoIconGlyph.TurnOfNotifications;
|
|
||||||
case FolderOperation.CreateSubFolder:
|
|
||||||
return WinoIconGlyph.CreateFolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
return WinoIconGlyph.None;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WinoIconGlyph GetSpecialFolderPathIconGeometry(SpecialFolderType specialFolderType)
|
public static WinoIconGlyph GetSpecialFolderPathIconGeometry(SpecialFolderType specialFolderType)
|
||||||
{
|
{
|
||||||
switch (specialFolderType)
|
return specialFolderType switch
|
||||||
{
|
{
|
||||||
case SpecialFolderType.Inbox:
|
SpecialFolderType.Inbox => WinoIconGlyph.SpecialFolderInbox,
|
||||||
return WinoIconGlyph.SpecialFolderInbox;
|
SpecialFolderType.Starred => WinoIconGlyph.SpecialFolderStarred,
|
||||||
case SpecialFolderType.Starred:
|
SpecialFolderType.Important => WinoIconGlyph.SpecialFolderImportant,
|
||||||
return WinoIconGlyph.SpecialFolderStarred;
|
SpecialFolderType.Sent => WinoIconGlyph.SpecialFolderSent,
|
||||||
case SpecialFolderType.Important:
|
SpecialFolderType.Draft => WinoIconGlyph.SpecialFolderDraft,
|
||||||
return WinoIconGlyph.SpecialFolderImportant;
|
SpecialFolderType.Archive => WinoIconGlyph.SpecialFolderArchive,
|
||||||
case SpecialFolderType.Sent:
|
SpecialFolderType.Deleted => WinoIconGlyph.SpecialFolderDeleted,
|
||||||
return WinoIconGlyph.SpecialFolderSent;
|
SpecialFolderType.Junk => WinoIconGlyph.SpecialFolderJunk,
|
||||||
case SpecialFolderType.Draft:
|
SpecialFolderType.Chat => WinoIconGlyph.SpecialFolderChat,
|
||||||
return WinoIconGlyph.SpecialFolderDraft;
|
SpecialFolderType.Category => WinoIconGlyph.SpecialFolderCategory,
|
||||||
case SpecialFolderType.Archive:
|
SpecialFolderType.Unread => WinoIconGlyph.SpecialFolderUnread,
|
||||||
return WinoIconGlyph.SpecialFolderArchive;
|
SpecialFolderType.Forums => WinoIconGlyph.SpecialFolderForums,
|
||||||
case SpecialFolderType.Deleted:
|
SpecialFolderType.Updates => WinoIconGlyph.SpecialFolderUpdated,
|
||||||
return WinoIconGlyph.SpecialFolderDeleted;
|
SpecialFolderType.Personal => WinoIconGlyph.SpecialFolderPersonal,
|
||||||
case SpecialFolderType.Junk:
|
SpecialFolderType.Promotions => WinoIconGlyph.SpecialFolderPromotions,
|
||||||
return WinoIconGlyph.SpecialFolderJunk;
|
SpecialFolderType.Social => WinoIconGlyph.SpecialFolderSocial,
|
||||||
case SpecialFolderType.Chat:
|
SpecialFolderType.Other => WinoIconGlyph.SpecialFolderOther,
|
||||||
return WinoIconGlyph.SpecialFolderChat;
|
SpecialFolderType.More => WinoIconGlyph.SpecialFolderMore,
|
||||||
case SpecialFolderType.Category:
|
_ => WinoIconGlyph.None,
|
||||||
return WinoIconGlyph.SpecialFolderCategory;
|
};
|
||||||
case SpecialFolderType.Unread:
|
|
||||||
return WinoIconGlyph.SpecialFolderUnread;
|
|
||||||
case SpecialFolderType.Forums:
|
|
||||||
return WinoIconGlyph.SpecialFolderForums;
|
|
||||||
case SpecialFolderType.Updates:
|
|
||||||
return WinoIconGlyph.SpecialFolderUpdated;
|
|
||||||
case SpecialFolderType.Personal:
|
|
||||||
return WinoIconGlyph.SpecialFolderPersonal;
|
|
||||||
case SpecialFolderType.Promotions:
|
|
||||||
return WinoIconGlyph.SpecialFolderPromotions;
|
|
||||||
case SpecialFolderType.Social:
|
|
||||||
return WinoIconGlyph.SpecialFolderSocial;
|
|
||||||
case SpecialFolderType.Other:
|
|
||||||
return WinoIconGlyph.SpecialFolderOther;
|
|
||||||
case SpecialFolderType.More:
|
|
||||||
return WinoIconGlyph.SpecialFolderMore;
|
|
||||||
}
|
|
||||||
|
|
||||||
return WinoIconGlyph.None;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WinoIconGlyph GetProviderIcon(MailProviderType providerType)
|
public static WinoIconGlyph GetProviderIcon(MailProviderType providerType)
|
||||||
{
|
{
|
||||||
switch (providerType)
|
return providerType switch
|
||||||
{
|
{
|
||||||
case MailProviderType.Outlook:
|
MailProviderType.Outlook => WinoIconGlyph.Microsoft,
|
||||||
return WinoIconGlyph.Microsoft;
|
MailProviderType.Gmail => WinoIconGlyph.Google,
|
||||||
case MailProviderType.Gmail:
|
MailProviderType.Office365 => WinoIconGlyph.Microsoft,
|
||||||
return WinoIconGlyph.Google;
|
MailProviderType.IMAP4 => WinoIconGlyph.Mail,
|
||||||
case MailProviderType.Office365:
|
_ => WinoIconGlyph.None,
|
||||||
return WinoIconGlyph.Microsoft;
|
};
|
||||||
case MailProviderType.IMAP4:
|
|
||||||
return WinoIconGlyph.Mail;
|
|
||||||
}
|
|
||||||
|
|
||||||
return WinoIconGlyph.None;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Geometry GetPathGeometry(string pathMarkup)
|
public static Geometry GetPathGeometry(string pathMarkup)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const joditConfig = {
|
|||||||
"showCharsCounter": false,
|
"showCharsCounter": false,
|
||||||
"showWordsCounter": false,
|
"showWordsCounter": false,
|
||||||
"showXPathInStatusbar": false,
|
"showXPathInStatusbar": false,
|
||||||
"disablePlugins": "add-new-line",
|
"disablePlugins": "add-new-line,backspace",
|
||||||
"showPlaceholder": false,
|
"showPlaceholder": false,
|
||||||
"uploader": {
|
"uploader": {
|
||||||
"insertImageAsBase64URI": true
|
"insertImageAsBase64URI": true
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user