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().GetValue(value); } } } } private readonly List availableHoverActions = [ MailOperation.Archive, MailOperation.SoftDelete, MailOperation.SetFlag, MailOperation.MarkAsRead, MailOperation.MoveToJunk ]; public List 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(), PreferencesService.MarkAsPreference); } [RelayCommand] private async Task ClearAvatarsCacheAsync() { await _thumbnailService.ClearCache(); } }