feat(backend): add member GET endpoints, POST /users/@me/members endpoint

This commit is contained in:
sam 2024-07-13 19:38:40 +02:00
parent 16f230b97d
commit e7ec0e6661
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
10 changed files with 152 additions and 55 deletions

View file

@ -16,6 +16,7 @@ public class UserRendererService(DatabaseContext db, MemberRendererService membe
{
var isSelfUser = selfUser?.Id == user.Id;
var tokenCanReadHiddenMembers = token.HasScope("member.read") && isSelfUser;
var tokenHidden = token.HasScope("user.read_hidden") && isSelfUser;
var tokenPrivileged = token.HasScope("user.read_privileged") && isSelfUser;
renderMembers = renderMembers &&
@ -45,10 +46,14 @@ public class UserRendererService(DatabaseContext db, MemberRendererService membe
a.RemoteUsername, a.FediverseApplication?.Domain
))
: null,
tokenPrivileged ? user.LastActive : null
tokenHidden ? user.ListHidden : null,
tokenHidden ? user.LastActive : null
);
}
public PartialUser RenderPartialUser(User user) =>
new(user.Id, user.Username, user.DisplayName, AvatarUrlFor(user));
private string? AvatarUrlFor(User user) =>
user.Avatar != null ? $"{config.MediaBaseUrl}/users/{user.Id}/avatars/{user.Avatar}.webp" : null;
@ -68,6 +73,8 @@ public class UserRendererService(DatabaseContext db, MemberRendererService membe
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
IEnumerable<AuthenticationMethodResponse>? AuthMethods,
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
bool? MemberListHidden,
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
Instant? LastActive
);
@ -81,4 +88,11 @@ public class UserRendererService(DatabaseContext db, MemberRendererService membe
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
string? FediverseInstance
);
public record PartialUser(
Snowflake Id,
string Username,
string? DisplayName,
string? AvatarUrl
);
}