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
|
member = await context.Members
|
||||||
.Include(m => m.User)
|
.Include(m => m.User)
|
||||||
|
.Include(m => m.ProfileFlags)
|
||||||
.Where(m => !m.User.Deleted)
|
.Where(m => !m.User.Deleted)
|
||||||
.FirstOrDefaultAsync(m => m.Id == snowflake && m.UserId == userId, ct);
|
.FirstOrDefaultAsync(m => m.Id == snowflake && m.UserId == userId, ct);
|
||||||
if (member != null) return member;
|
if (member != null) return member;
|
||||||
|
@ -78,6 +79,7 @@ public static class DatabaseQueryExtensions
|
||||||
|
|
||||||
member = await context.Members
|
member = await context.Members
|
||||||
.Include(m => m.User)
|
.Include(m => m.User)
|
||||||
|
.Include(m => m.ProfileFlags)
|
||||||
.Where(m => !m.User.Deleted)
|
.Where(m => !m.User.Deleted)
|
||||||
.FirstOrDefaultAsync(m => m.Name == memberRef && m.UserId == userId, ct);
|
.FirstOrDefaultAsync(m => m.Name == memberRef && m.UserId == userId, ct);
|
||||||
if (member != null) return member;
|
if (member != null) return member;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using Foxnouns.Backend.Utils;
|
using Foxnouns.Backend.Utils;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Foxnouns.Backend.Middleware;
|
namespace Foxnouns.Backend.Middleware;
|
||||||
|
|
|
@ -24,13 +24,14 @@ public class MemberRendererService(DatabaseContext db, Config config)
|
||||||
return members.Select(m => RenderPartialMember(m, renderUnlisted));
|
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");
|
var renderUnlisted = token?.UserId == member.UserId && token.HasScope("user.read_hidden");
|
||||||
|
|
||||||
return new MemberResponse(
|
return new MemberResponse(
|
||||||
member.Id, member.Sid, member.Name, member.DisplayName, member.Bio,
|
member.Id, member.Sid, member.Name, member.DisplayName, member.Bio,
|
||||||
AvatarUrlFor(member), member.Links, member.Names, member.Pronouns, member.Fields,
|
AvatarUrlFor(member), member.Links, member.Names, member.Pronouns, member.Fields,
|
||||||
|
member.ProfileFlags.Select(f => RenderPrideFlag(f.PrideFlag)),
|
||||||
RenderPartialUser(member.User), renderUnlisted ? member.Unlisted : null);
|
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 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(
|
public record PartialMember(
|
||||||
Snowflake Id,
|
Snowflake Id,
|
||||||
string Sid,
|
string Sid,
|
||||||
|
@ -73,6 +77,7 @@ public class MemberRendererService(DatabaseContext db, Config config)
|
||||||
IEnumerable<FieldEntry> Names,
|
IEnumerable<FieldEntry> Names,
|
||||||
IEnumerable<Pronoun> Pronouns,
|
IEnumerable<Pronoun> Pronouns,
|
||||||
IEnumerable<Field> Fields,
|
IEnumerable<Field> Fields,
|
||||||
|
IEnumerable<UserRendererService.PrideFlagResponse> Flags,
|
||||||
UserRendererService.PartialUser User,
|
UserRendererService.PartialUser User,
|
||||||
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||||||
bool? Unlisted);
|
bool? Unlisted);
|
||||||
|
|
Loading…
Reference in a new issue