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:
Tiktack
2024-09-10 10:14:13 +02:00
committed by GitHub
parent 7715d4bdda
commit 7761cf6dbe
4 changed files with 76 additions and 174 deletions

View File

@@ -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();

View File

@@ -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)

View File

@@ -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