feat(backend): render flags in member response
This commit is contained in:
parent
e11e60e16b
commit
f539902711
3 changed files with 9 additions and 1 deletions
|
@ -71,6 +71,7 @@ public static class DatabaseQueryExtensions
|
|||
{
|
||||
member = await context.Members
|
||||
.Include(m => m.User)
|
||||
.Include(m => m.ProfileFlags)
|
||||
.Where(m => !m.User.Deleted)
|
||||
.FirstOrDefaultAsync(m => m.Id == snowflake && m.UserId == userId, ct);
|
||||
if (member != null) return member;
|
||||
|
@ -78,6 +79,7 @@ public static class DatabaseQueryExtensions
|
|||
|
||||
member = await context.Members
|
||||
.Include(m => m.User)
|
||||
.Include(m => m.ProfileFlags)
|
||||
.Where(m => !m.User.Deleted)
|
||||
.FirstOrDefaultAsync(m => m.Name == memberRef && m.UserId == userId, ct);
|
||||
if (member != null) return member;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using System.Net;
|
||||
using Foxnouns.Backend.Utils;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Foxnouns.Backend.Middleware;
|
||||
|
|
|
@ -24,13 +24,14 @@ public class MemberRendererService(DatabaseContext db, Config config)
|
|||
return members.Select(m => RenderPartialMember(m, renderUnlisted));
|
||||
}
|
||||
|
||||
public MemberResponse RenderMember(Member member, Token? token)
|
||||
public MemberResponse RenderMember(Member member, Token? token = null)
|
||||
{
|
||||
var renderUnlisted = token?.UserId == member.UserId && token.HasScope("user.read_hidden");
|
||||
|
||||
return new MemberResponse(
|
||||
member.Id, member.Sid, member.Name, member.DisplayName, member.Bio,
|
||||
AvatarUrlFor(member), member.Links, member.Names, member.Pronouns, member.Fields,
|
||||
member.ProfileFlags.Select(f => RenderPrideFlag(f.PrideFlag)),
|
||||
RenderPartialUser(member.User), renderUnlisted ? member.Unlisted : null);
|
||||
}
|
||||
|
||||
|
@ -50,6 +51,9 @@ public class MemberRendererService(DatabaseContext db, Config config)
|
|||
|
||||
private string ImageUrlFor(PrideFlag flag) => $"{config.MediaBaseUrl}/flags/{flag.Hash}.webp";
|
||||
|
||||
private UserRendererService.PrideFlagResponse RenderPrideFlag(PrideFlag flag) =>
|
||||
new(flag.Id, ImageUrlFor(flag), flag.Name, flag.Description);
|
||||
|
||||
public record PartialMember(
|
||||
Snowflake Id,
|
||||
string Sid,
|
||||
|
@ -73,6 +77,7 @@ public class MemberRendererService(DatabaseContext db, Config config)
|
|||
IEnumerable<FieldEntry> Names,
|
||||
IEnumerable<Pronoun> Pronouns,
|
||||
IEnumerable<Field> Fields,
|
||||
IEnumerable<UserRendererService.PrideFlagResponse> Flags,
|
||||
UserRendererService.PartialUser User,
|
||||
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||||
bool? Unlisted);
|
||||
|
|
Loading…
Reference in a new issue