diff --git a/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs b/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs index 88b53f5f..e5d59b51 100644 --- a/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs +++ b/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs @@ -40,7 +40,7 @@ public class AccountController( public async Task VerifyUserCredentials() { var user = HttpContext.GetUserOrFail(); - var res = await userRenderer.RenderAsync(user); + var res = await userRenderer.RenderAsync(user, user.UserProfile, true); return Ok(res); } diff --git a/Iceshrimp.Backend/Controllers/Mastodon/Renderers/UserRenderer.cs b/Iceshrimp.Backend/Controllers/Mastodon/Renderers/UserRenderer.cs index 23d1d8ba..9b024caf 100644 --- a/Iceshrimp.Backend/Controllers/Mastodon/Renderers/UserRenderer.cs +++ b/Iceshrimp.Backend/Controllers/Mastodon/Renderers/UserRenderer.cs @@ -11,7 +11,7 @@ public class UserRenderer(IOptions config, MfmConverter { private readonly string _transparent = $"https://{config.Value.WebDomain}/assets/transparent.png"; - public async Task RenderAsync(User user, UserProfile? profile) + public async Task RenderAsync(User user, UserProfile? profile, bool source = false) { var acct = user.Username; if (user.Host != null) @@ -41,6 +41,19 @@ public class UserRenderer(IOptions config, MfmConverter Fields = [] //TODO }; + if (source) + { + //TODO: populate these + res.Source = new AccountSource + { + Fields = [], + Language = "", + Note = profile?.Description ?? "", + Privacy = StatusEntity.EncodeVisibility(Note.NoteVisibility.Public), + Sensitive = false + }; + } + return res; } diff --git a/Iceshrimp.Backend/Controllers/Mastodon/Schemas/Entities/AccountEntity.cs b/Iceshrimp.Backend/Controllers/Mastodon/Schemas/Entities/AccountEntity.cs index d379cbd0..37622cb5 100644 --- a/Iceshrimp.Backend/Controllers/Mastodon/Schemas/Entities/AccountEntity.cs +++ b/Iceshrimp.Backend/Controllers/Mastodon/Schemas/Entities/AccountEntity.cs @@ -24,10 +24,10 @@ public class AccountEntity : IEntity [J("bot")] public required bool IsBot { get; set; } [J("discoverable")] public required bool IsDiscoverable { get; set; } [J("fields")] public required Field[] Fields { get; set; } + [J("source")] public AccountSource? Source { get; set; } - [J("source")] public object? Source => null; //FIXME - [J("emojis")] public object[] Emoji => []; //FIXME - [J("id")] public required string Id { get; set; } + [J("emojis")] public object[] Emoji => []; //FIXME + [J("id")] public required string Id { get; set; } } public class Field @@ -35,4 +35,13 @@ public class Field [J("name")] public required string Name { get; set; } [J("value")] public required string Value { get; set; } [J("verified_at")] public string? VerifiedAt { get; set; } +} + +public class AccountSource +{ + [J("note")] public required string Note; + [J("privacy")] public required string Privacy; + [J("language")] public required string Language; + [J("sensitive")] public required bool Sensitive; + [J("fields")] public required Field[] Fields { get; set; } } \ No newline at end of file