Iceshrimp.NET/Iceshrimp.Backend/Controllers/Mastodon/Schemas/Entities/Mention.cs

29 lines
No EOL
1 KiB
C#

using System.Diagnostics.CodeAnalysis;
using Iceshrimp.Backend.Core.Database.Tables;
using J = System.Text.Json.Serialization.JsonPropertyNameAttribute;
using JI = System.Text.Json.Serialization.JsonIgnoreAttribute;
namespace Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities;
public class Mention() {
[J("id")] public required string Id { get; set; }
[J("username")] public required string Username { get; set; }
[J("acct")] public required string Acct { get; set; }
[J("url")] public required string Url { get; set; }
// internal properties that won't be serialized
[JI] public required string Uri;
[JI] public required string? Host;
[SetsRequiredMembers]
public Mention(User u, string webDomain) : this() {
Id = u.Id;
Username = u.Username;
Host = u.Host;
Acct = u.Acct;
Uri = u.Uri ?? $"https://{webDomain}/users/{u.Id}";
Url = u.UserProfile != null
? u.UserProfile.Url ?? u.Uri ?? $"https://{webDomain}/@{u.Username}"
: u.Uri ?? $"https://{webDomain}/@{u.Username}";
}
}