From e5ce3b54cec102521075c708dddd04f5c219efca Mon Sep 17 00:00:00 2001 From: Rory& Date: Tue, 3 Feb 2026 07:00:37 +0100 Subject: [PATCH] Update schemas for profile customisation --- assets/openapi.json | Bin 902348 -> 905819 bytes assets/schemas.json | Bin 386872 -> 389535 bytes src/api/routes/users/@me/index.ts | 26 +++++++++++++++++- src/schemas/api/users/User.ts | 10 ++++++- src/schemas/uncategorised/UserModifySchema.ts | 6 ++++ 5 files changed, 40 insertions(+), 2 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index ef7607f36c0e26af59adf3a229eac05501c0b7f5..d361c5d1dd004411fbff09d97dd1c266e86b38bf 100644 GIT binary patch delta 456 zcmX@pX?}Z&dBYY)!wJ(rTws!zexZwzb-Ta=mS)CDnUd4r%QLf0Pta#co_3bSV>E8JmW!_-hU-QI|WXL_A1i|+Ib%NX^h^GdSBZT~Qv zQAUtd9nV=NKXBoiekPDtcyiQX*~tkPm8OfwF!4>FznM|G-F7qMcH7NN2j@(8aAuX7 zzTg21*L3H*ET^Z>eZa!YnwplDnmpYxfk|olg=5UJlMUKArX{nAgXqZ)9C6b>ykQjs zai&Yofrw5wn8PXr7P)YRDFSQ=Q(FFX!T-$47$!_VV9iuN{elHV=XQHrCQ-)84ZiyA zx&h4Fbpu#zgQhKI?wI}{mC19u!y*>e>0WPG#M|F4V%h$75o@U{3E|xi3~wN217da{ U<^W<&Am##M?(O$q@VvbZ0FkD#1^@s6 delta 199 zcmcb;#QaRBdBYY)!wHicF1SyBw~f(q`h_Ys?&$|w*bJv%c*@8zJ^w5t+jiN>j0RlO z7i?$b*7|UOJYa!#pa4*i>Di*m4ZiyA2GPvh4We0WgC=h%l$*X_E33!! z{%Fq(^S%H`hh}nUd1Bf|+ Pm4DQ1NU{n{m;c7Xx?Qh_c_QQV3)zhI)8$H8b*3+9WaQhf5X9)m zG2J1ViG90%5A%G+$s5kGOg|9I$g#aDitzy-E}3~Olk2Rw+WGPrxAWyOai>jB_`oPI zeQpmk&-BOFnPjFHurhf}FGyoFpFXFDnRoi#*Ua+MIGJUq-zj0{pX}gXGud&s?qmfa zQG`C0wEVo1$&BYEk=4mhuM}bx0BYcz{{JtNtbCI{Fmp_fckiAa1LEv=XpUGkR1#K3V_L*0hw$Hr6yhVJvK^kMmWQR@R)7Po9u(cm}!@T{#84B3SHib>M(_|5zt}vZhc)G(ZMwaRFtgQF8XNNGZWS_j@9Lx5A zJjP`#(`^?pvTx5$VzlN03AO_Tff7u+v!*R(s+oRf4I@W8&t0bNJa?Hlh)*|&W67Pq aL7Ro8z5Xln_WG|ZRlHd2*$%X);SB(To-?Wd diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts index 187862f10..469dddef7 100644 --- a/src/api/routes/users/@me/index.ts +++ b/src/api/routes/users/@me/index.ts @@ -20,7 +20,7 @@ import { route } from "@spacebar/api"; import { Config, emitEvent, FieldErrors, generateToken, handleFile, User, UserUpdateEvent } from "@spacebar/util"; import bcrypt from "bcrypt"; import { Request, Response, Router } from "express"; -import { PrivateUserProjection, UserModifySchema } from "@spacebar/schemas"; +import { DisplayNameStyle, PrivateUserProjection, UserModifySchema } from "@spacebar/schemas"; const router: Router = Router({ mergeParams: true }); @@ -191,6 +191,30 @@ router.patch( } } + if ("display_name_font_id" in body) { + if (!body.display_name_font_id) user.display_name_styles = undefined; + else { + user.display_name_styles ??= {} as unknown as DisplayNameStyle; + user.display_name_styles!.font_id = body.display_name_font_id; + } + } + + if ("display_name_effect_id" in body) { + if (!body.display_name_effect_id) user.display_name_styles = undefined; + else { + user.display_name_styles ??= {} as unknown as DisplayNameStyle; + user.display_name_styles!.effect_id = body.display_name_effect_id; + } + } + + if ("display_name_colors" in body) { + if (!body.display_name_colors) user.display_name_styles = undefined; + else { + user.display_name_styles ??= {} as unknown as DisplayNameStyle; + user.display_name_styles!.colors = body.display_name_colors; + } + } + user.assign(body); user.validate(); await user.save(); diff --git a/src/schemas/api/users/User.ts b/src/schemas/api/users/User.ts index 41d606730..29b211d46 100644 --- a/src/schemas/api/users/User.ts +++ b/src/schemas/api/users/User.ts @@ -57,6 +57,10 @@ interface UserEntityPleaseRewriteThankYou { fingerprints: string[]; settings?: UserSettingsSchema; badge_ids?: string[]; + avatar_decoration_data?: AvatarDecorationData; + display_name_styles?: DisplayNameStyle; + collectibles?: Collectibles; + primary_guild?: PrimaryGuild; } export interface PartialUser { @@ -97,7 +101,7 @@ export interface NameplateData { export interface DisplayNameStyle { font_id: number; effect_id: number; - colors: number; + colors: number[]; } export interface PrimaryGuild { @@ -122,6 +126,10 @@ export enum PublicUserEnum { theme_colors, pronouns, badge_ids, + avatar_decoration_data, + display_name_styles, + collectibles, + primary_guild, } export type PublicUserKeys = keyof typeof PublicUserEnum; diff --git a/src/schemas/uncategorised/UserModifySchema.ts b/src/schemas/uncategorised/UserModifySchema.ts index c7228e7b9..45c1ae909 100644 --- a/src/schemas/uncategorised/UserModifySchema.ts +++ b/src/schemas/uncategorised/UserModifySchema.ts @@ -16,6 +16,8 @@ along with this program. If not, see . */ +import { User_DisplayNameEffect, User_DisplayNameFont } from "discord-protos"; + export interface UserModifySchema { /** * @minLength 2 @@ -49,4 +51,8 @@ export interface UserModifySchema { * @maxLength 4 */ discriminator?: string; + + display_name_colors?: number[]; + display_name_effect_id?: User_DisplayNameEffect; + display_name_font_id?: User_DisplayNameFont; }