Add per-account folder customization page (#855)

Introduce a dedicated settings page that lets users reorder, hide,
and pin/unpin folders per account. Folders are organized into Pinned,
Categories (Gmail only), and More sections with drag-to-reorder via
ListView. New Order column on MailItemFolder persists the custom
layout; the default sort falls back to alphabetic when no custom
order is set. A reset action wipes all customization in a single
transaction and restores system-folder stickiness.

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Burak Kaan Köse
2026-04-16 14:07:17 +02:00
committed by GitHub
parent 0b136b3d66
commit 98eed39fe6
17 changed files with 599 additions and 10 deletions
@@ -0,0 +1,26 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Wino.Core.Domain.Entities.Mail;
namespace Wino.Mail.ViewModels.Data;
/// <summary>
/// Per-folder row shown on the Folder Customization page. Wraps the underlying
/// <see cref="MailItemFolder"/> entity and exposes observable flags for binding.
/// </summary>
public partial class FolderCustomizationItemViewModel : ObservableObject
{
public MailItemFolder Folder { get; }
[ObservableProperty]
public partial bool IsHidden { get; set; }
public string FolderName => Folder.FolderName;
public bool IsSystemFolder => Folder.IsSystemFolder;
public Core.Domain.Enums.SpecialFolderType SpecialFolderType => Folder.SpecialFolderType;
public FolderCustomizationItemViewModel(MailItemFolder folder)
{
Folder = folder;
IsHidden = folder.IsHidden;
}
}