using MongoDB.Entities; namespace PrivaPub.Models.User { public class Avatar : Entity { public string Url { get; set; }//url public string Name { get; set; }//name public string UserName { get; set; }//preferredUsername public string Biography { get; set; }//summary public Dictionary SharedPersonalContacts { get; set; } = new(); public string PrivateKey { get; set; } public string PublicKey { get; set; } public AvatarAccountState AccountState { get; set; } = AvatarAccountState.Normal; public AvatarSettings Settings { get; set; } = new(); public Dictionary Fields { get; set; } = new(); public string Domain { get; set; } public string PersonalNote { get; set; } public string ModerationNote { get; set; } public string InboxURL { get; set; } public string OutboxURL { get; set; } public string MovedToURL { get; set; } public string PictureURL { get; set; }//icon public string ThumbnailURL { get; set; }//image public AvatarType AvatarType { get; set; } = AvatarType.Person; public AvatarServer AvatarServer { get; set; } = AvatarServer.PrivaPub; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime? SilencedAt { get; set; } public DateTime? SuspendedAt { get; set; } public DateTime? BannedAt { get; set; } public DateTime? DeletionAt { get; set; } } public class ForeignAvatar : Entity { public string Url { get; set; }//url public string Name { get; set; }//name public string UserName { get; set; }//preferredUsername public string Biography { get; set; }//summary public Dictionary SharedPersonalContacts { get; set; } = new(); public string PrivateKey { get; set; } public string PublicKey { get; set; } public AvatarAccountState AccountState { get; set; } = AvatarAccountState.Normal; public AvatarSettings Settings { get; set; } = new(); public Dictionary Fields { get; set; } = new(); public string Domain { get; set; } public string PersonalNote { get; set; } public string ModerationNote { get; set; } public bool IsDiscoverable { get; set; } = true; public string InboxURL { get; set; } public string OutboxURL { get; set; } public string MovedToURL { get; set; } public string PictureURL { get; set; }//icon public string ThumbnailURL { get; set; }//image public AvatarType AvatarType { get; set; } = AvatarType.Person; public AvatarServer AvatarServer { get; set; } = AvatarServer.Unknown; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime? SilencedAt { get; set; } public DateTime? SuspendedAt { get; set; } public DateTime? BannedAt { get; set; } public DateTime? DeletionAt { get; set; } } public class AvatarSettings { public string LanguageCode { get; set; } = "en-GB"; public bool IsDefault { get; set; } = true; public short IconsThemeIndexColour { get; set; } = 25; public short LightThemeIndexColour { get; set; } = 25; public short DarkThemeIndexColour { get; set; } = 215; public bool PreferSystemTheming { get; set; } = true; public bool ThemeIsDarkMode { get; set; } = false; public bool ThemeIsDarkGray { get; set; } = false; public bool ThemeIsLightGray { get; set; } = true; } public enum AvatarServer { Unknown, Pleroma, Mastodon, Akkoma, Misskey, PrivaPub } public enum AvatarType { Application, Group, Organization, Person, Service } public enum AvatarAccountState { Normal, Silenced, Suspended, Banned, Deleted } }