77 lines
2.7 KiB
C#
77 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using SQLite;
|
|
using Wino.Domain;
|
|
using Wino.Domain.Enums;
|
|
using Wino.Domain.Models.Folders;
|
|
|
|
namespace Wino.Domain.Entities
|
|
{
|
|
[DebuggerDisplay("{FolderName} - {SpecialFolderType}")]
|
|
public class MailItemFolder : IMailItemFolder
|
|
{
|
|
[PrimaryKey]
|
|
public Guid Id { get; set; }
|
|
|
|
public string RemoteFolderId { get; set; }
|
|
public string ParentRemoteFolderId { get; set; }
|
|
|
|
public Guid MailAccountId { get; set; }
|
|
public string FolderName { get; set; }
|
|
public SpecialFolderType SpecialFolderType { get; set; }
|
|
public bool IsSystemFolder { get; set; }
|
|
public bool IsSticky { get; set; }
|
|
public bool IsSynchronizationEnabled { get; set; }
|
|
public bool IsHidden { get; set; }
|
|
public bool ShowUnreadCount { get; set; }
|
|
public DateTime? LastSynchronizedDate { get; set; }
|
|
|
|
// For IMAP
|
|
public uint UidValidity { get; set; }
|
|
public long HighestModeSeq { get; set; }
|
|
|
|
/// <summary>
|
|
/// Outlook shares delta changes per-folder. Gmail is for per-account.
|
|
/// This is only used for Outlook provider.
|
|
/// </summary>
|
|
public string DeltaToken { get; set; }
|
|
|
|
// For GMail Labels
|
|
public string TextColorHex { get; set; }
|
|
public string BackgroundColorHex { get; set; }
|
|
|
|
[Ignore]
|
|
public List<IMailItemFolder> ChildFolders { get; set; } = [];
|
|
|
|
// Category and Move type folders are not valid move targets.
|
|
// These folders are virtual. They don't exist on the server.
|
|
public bool IsMoveTarget => !(SpecialFolderType == SpecialFolderType.More || SpecialFolderType == SpecialFolderType.Category);
|
|
|
|
public bool ContainsSpecialFolderType(SpecialFolderType type)
|
|
{
|
|
if (SpecialFolderType == type)
|
|
return true;
|
|
|
|
foreach (var child in ChildFolders)
|
|
{
|
|
if (child.SpecialFolderType == type)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return child.ContainsSpecialFolderType(type);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static MailItemFolder CreateMoreFolder() => new MailItemFolder() { IsSticky = true, SpecialFolderType = SpecialFolderType.More, FolderName = Translator.MoreFolderNameOverride };
|
|
public static MailItemFolder CreateCategoriesFolder() => new MailItemFolder() { IsSticky = true, SpecialFolderType = SpecialFolderType.Category, FolderName = Translator.CategoriesFolderNameOverride };
|
|
|
|
public override string ToString() => FolderName;
|
|
}
|
|
}
|