[backend/akko-client] Handle remote custom emojis

This commit is contained in:
pancakes 2024-09-19 23:26:13 +10:00 committed by Laura Hausmann
parent 9bd46e6a61
commit f39c6bb80d
No known key found for this signature in database
GPG key ID: D044E84C5BE01605

View file

@ -83,7 +83,7 @@ public class StatusController(
[Authenticate("read:statuses")]
[ProducesResults(HttpStatusCode.OK)]
[ProducesErrors(HttpStatusCode.Forbidden, HttpStatusCode.NotFound)]
public async Task<List<ReactionEntity>> GetSpecificNoteReaction(string id, string reaction)
public async Task<IEnumerable<ReactionEntity>> GetSpecificNoteReaction(string id, string reaction)
{
var user = HttpContext.GetUser();
if (security.Value.PublicPreview == Enums.PublicPreview.Lockdown && user == null)
@ -98,15 +98,17 @@ public class StatusController(
if (security.Value.PublicPreview <= Enums.PublicPreview.Restricted && note.UserHost != null && user == null)
throw GracefulException.Forbidden("Public preview is disabled on this instance");
var res = (await noteRenderer.GetReactions([note], user)).First(r => r.Name == Regex.Unescape(reaction));
var res = (await noteRenderer.GetReactions([note], user)).Where(r => r.Name.Split("@").First() == Regex.Unescape(reaction));
if (res.AccountIds != null)
foreach (var item in res)
{
var accounts = await db.Users.Where(u => res.AccountIds.Contains(u.Id)).ToArrayAsync();
res.Accounts = (await userRenderer.RenderManyAsync(accounts, user)).ToList();
if (item.AccountIds == null) continue;
var accounts = await db.Users.Where(u => item.AccountIds.Contains(u.Id)).ToArrayAsync();
item.Accounts = (await userRenderer.RenderManyAsync(accounts, user)).ToList();
}
return [res];
return res;
}
[HttpPut("{id}/reactions/{reaction}")]