* feat: Enhanced sender avatars with gravatar and favicons integration * chore: Remove unused known companies thumbnails * feat(thumbnail): add IThumbnailService and refactor usage - Introduced a new interface `IThumbnailService` for handling thumbnail-related functionalities. - Registered `IThumbnailService` with its implementation `ThumbnailService` in the service container. - Updated `NotificationBuilder` to use an instance of `IThumbnailService` instead of static methods. - Refactored `ThumbnailService` from a static class to a regular class with instance methods and variables. - Modified `ImagePreviewControl` to utilize the new `IThumbnailService` instance. - Completed integration of `IThumbnailService` in the application by registering it in `App.xaml.cs`. * style: Show favicons as squares - Changed `hintCrop` in `NotificationBuilder` to `None` for app logo display. - Added `FaviconSquircle`, `FaviconImage`, and `isFavicon` to `ImagePreviewControl` for favicon handling. - Updated `UpdateInformation` method to manage favicon visibility. - Introduced `GetBitmapImageAsync` for converting Base64 to Bitmap images. - Enhanced XAML to include `FaviconSquircle` for improved UI appearance. * refactor thumbnail service * Removed old code and added clear method * added prefetch function * Change key from host to email * Remove redundant code * Test event * Fixed an issue with the thumbnail updated event. * Fix cutted favicons * exclude some domain from favicons * add yandex.ru * fix buttons in settings * remove prefetch method * Added thumbnails propagation to mailRenderingPage * Revert MailItemViewModel to object * Remove redundant code * spaces * await load parameter added * fix spaces * fix case sensativity for mail list thumbnails * change duckdns to google * Some cleanup. --------- Co-authored-by: Aleh Khantsevich <aleh.khantsevich@gmail.com> Co-authored-by: Burak Kaan Köse <bkaankose@outlook.com>
107 lines
3.2 KiB
C#
107 lines
3.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using Wino.Core.Domain;
|
|
using Wino.Core.Domain.Enums;
|
|
using Wino.Core.Domain.Interfaces;
|
|
|
|
namespace Wino.Mail.ViewModels;
|
|
|
|
public partial class MessageListPageViewModel : MailBaseViewModel
|
|
{
|
|
public IPreferencesService PreferencesService { get; }
|
|
private readonly IThumbnailService _thumbnailService;
|
|
|
|
private int selectedMarkAsOptionIndex;
|
|
public int SelectedMarkAsOptionIndex
|
|
{
|
|
get => selectedMarkAsOptionIndex;
|
|
set
|
|
{
|
|
if (SetProperty(ref selectedMarkAsOptionIndex, value))
|
|
{
|
|
if (value >= 0)
|
|
{
|
|
PreferencesService.MarkAsPreference = (MailMarkAsOption)Enum.GetValues<MailMarkAsOption>().GetValue(value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private readonly List<MailOperation> availableHoverActions =
|
|
[
|
|
MailOperation.Archive,
|
|
MailOperation.SoftDelete,
|
|
MailOperation.SetFlag,
|
|
MailOperation.MarkAsRead,
|
|
MailOperation.MoveToJunk
|
|
];
|
|
|
|
public List<string> AvailableHoverActionsTranslations { get; set; } =
|
|
[
|
|
Translator.HoverActionOption_Archive,
|
|
Translator.HoverActionOption_Delete,
|
|
Translator.HoverActionOption_ToggleFlag,
|
|
Translator.HoverActionOption_ToggleRead,
|
|
Translator.HoverActionOption_MoveJunk
|
|
];
|
|
|
|
#region Properties
|
|
private int leftHoverActionIndex;
|
|
public int LeftHoverActionIndex
|
|
{
|
|
get => leftHoverActionIndex;
|
|
set
|
|
{
|
|
if (SetProperty(ref leftHoverActionIndex, value))
|
|
{
|
|
PreferencesService.LeftHoverAction = availableHoverActions[value];
|
|
}
|
|
}
|
|
}
|
|
|
|
private int centerHoverActionIndex;
|
|
public int CenterHoverActionIndex
|
|
{
|
|
get => centerHoverActionIndex;
|
|
set
|
|
{
|
|
if (SetProperty(ref centerHoverActionIndex, value))
|
|
{
|
|
PreferencesService.CenterHoverAction = availableHoverActions[value];
|
|
}
|
|
}
|
|
}
|
|
|
|
private int rightHoverActionIndex;
|
|
public int RightHoverActionIndex
|
|
{
|
|
get => rightHoverActionIndex;
|
|
set
|
|
{
|
|
if (SetProperty(ref rightHoverActionIndex, value))
|
|
{
|
|
PreferencesService.RightHoverAction = availableHoverActions[value];
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
public MessageListPageViewModel(IPreferencesService preferencesService, IThumbnailService thumbnailService)
|
|
{
|
|
PreferencesService = preferencesService;
|
|
_thumbnailService = thumbnailService;
|
|
leftHoverActionIndex = availableHoverActions.IndexOf(PreferencesService.LeftHoverAction);
|
|
centerHoverActionIndex = availableHoverActions.IndexOf(PreferencesService.CenterHoverAction);
|
|
rightHoverActionIndex = availableHoverActions.IndexOf(PreferencesService.RightHoverAction);
|
|
SelectedMarkAsOptionIndex = Array.IndexOf(Enum.GetValues<MailMarkAsOption>(), PreferencesService.MarkAsPreference);
|
|
}
|
|
|
|
[RelayCommand]
|
|
private async Task ClearAvatarsCacheAsync()
|
|
{
|
|
await _thumbnailService.ClearCache();
|
|
}
|
|
}
|