feat(backend): ability to set profile flags, return profile flags in get user endpoint
This commit is contained in:
		
							parent
							
								
									6a4aa8064a
								
							
						
					
					
						commit
						a3cbdc1a08
					
				
					 4 changed files with 62 additions and 15 deletions
				
			
		|  | @ -25,10 +25,12 @@ public class UserRendererService(DatabaseContext db, MemberRendererService membe | |||
|         renderAuthMethods = renderAuthMethods && tokenPrivileged; | ||||
| 
 | ||||
|         IEnumerable<Member> members = | ||||
|             renderMembers ? await db.Members.Where(m => m.UserId == user.Id).ToListAsync(ct) : []; | ||||
|             renderMembers ? await db.Members.Where(m => m.UserId == user.Id).OrderBy(m => m.Name).ToListAsync(ct) : []; | ||||
|         // Unless the user is requesting their own members AND the token can read hidden members, we filter out unlisted members. | ||||
|         if (!(isSelfUser && tokenCanReadHiddenMembers)) members = members.Where(m => !m.Unlisted); | ||||
| 
 | ||||
|         var flags = await db.UserFlags.Where(f => f.UserId == user.Id).OrderBy(f => f.Id).ToListAsync(ct); | ||||
| 
 | ||||
|         var authMethods = renderAuthMethods | ||||
|             ? await db.AuthMethods | ||||
|                 .Where(a => a.UserId == user.Id) | ||||
|  | @ -40,6 +42,7 @@ public class UserRendererService(DatabaseContext db, MemberRendererService membe | |||
|             user.Id, user.Sid, user.Username, user.DisplayName, user.Bio, user.MemberTitle, AvatarUrlFor(user), | ||||
|             user.Links, | ||||
|             user.Names, user.Pronouns, user.Fields, user.CustomPreferences, | ||||
|             flags.Select(f => RenderPrideFlag(f.PrideFlag)), | ||||
|             renderMembers ? members.Select(m => memberRenderer.RenderPartialMember(m, tokenHidden)) : null, | ||||
|             renderAuthMethods | ||||
|                 ? authMethods.Select(a => new AuthenticationMethodResponse( | ||||
|  | @ -58,7 +61,7 @@ public class UserRendererService(DatabaseContext db, MemberRendererService membe | |||
| 
 | ||||
|     private string? AvatarUrlFor(User user) => | ||||
|         user.Avatar != null ? $"{config.MediaBaseUrl}/users/{user.Id}/avatars/{user.Avatar}.webp" : null; | ||||
|      | ||||
| 
 | ||||
|     public string ImageUrlFor(PrideFlag flag) => $"{config.MediaBaseUrl}/flags/{flag.Hash}.webp"; | ||||
| 
 | ||||
|     public record UserResponse( | ||||
|  | @ -74,6 +77,7 @@ public class UserRendererService(DatabaseContext db, MemberRendererService membe | |||
|         IEnumerable<Pronoun> Pronouns, | ||||
|         IEnumerable<Field> Fields, | ||||
|         Dictionary<Snowflake, User.CustomPreference> CustomPreferences, | ||||
|         IEnumerable<PrideFlagResponse> Flags, | ||||
|         [property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] | ||||
|         IEnumerable<MemberRendererService.PartialMember>? Members, | ||||
|         [property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] | ||||
|  | @ -105,4 +109,13 @@ public class UserRendererService(DatabaseContext db, MemberRendererService membe | |||
|         string? AvatarUrl, | ||||
|         Dictionary<Snowflake, User.CustomPreference> CustomPreferences | ||||
|     ); | ||||
| 
 | ||||
|     public PrideFlagResponse RenderPrideFlag(PrideFlag flag) => | ||||
|         new(flag.Id, ImageUrlFor(flag), flag.Name, flag.Description); | ||||
| 
 | ||||
|     public record PrideFlagResponse( | ||||
|         Snowflake Id, | ||||
|         string ImageUrl, | ||||
|         string Name, | ||||
|         string? Description); | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue