From 4b5db1c2f455eb0bb8c9bbad3dafe7bd4b942766 Mon Sep 17 00:00:00 2001 From: Rory& Date: Sat, 18 Oct 2025 09:14:34 +0200 Subject: [PATCH] Partial usersetting update schema --- assets/openapi.json | Bin 1372803 -> 1373069 bytes assets/schemas.json | Bin 3991750 -> 3995767 bytes src/api/routes/users/@me/settings.ts | 9 +++++---- .../users/UserSettings.ts} | 6 ++++-- src/schemas/api/users/index.ts | 1 + src/schemas/uncategorised/index.ts | 1 - 6 files changed, 10 insertions(+), 7 deletions(-) rename src/schemas/{uncategorised/UserSettingsSchema.ts => api/users/UserSettings.ts} (95%) diff --git a/assets/openapi.json b/assets/openapi.json index 726022e3bc936ee7d645da22f427c487e47e28d9..953b213395753188af3d64e1b456b59bd3a33318 100644 GIT binary patch delta 1205 zcmcJPTS!z<6oxr-IcN6S=Q0<=qK26?s}XHPA579TN`fxrI-1JEvLfR4)z8Vz2R829pxUe^K-EZISh2PaRhFk=EgCz zojc3_nbF^zKPJ9a+_S|n98EOXnoD@-=_2bvS;lMxbyyy*GqBhkLjo8x{A$ zxJ9gmU_{iRw^ul90%eG?#%=8G5oVJEO}PY{a{2ESI1uJ9zJ#C0RTBz!7KWT19Lx># z+2A#s(h`Ly`}lRxzeLMjF7Q)b*d-K%yU9a%-ECl@zF5izWt40mI!NbeBHrG_8?fOR z{iaWhvm8bPTuLDo=sZamS0*NB%XtZ|KjqUximN7EDeeZvXQ+aiBUFOMZc+)hK`Nqs zTFB5rODTUS<`jZTZ36osO@ZKusE;9fXz3+RC^=2^&@iRK^s$Lx`e%A&;C~dtGo!+Z zpO0msD!Rf5;M0`=a(neDYOO?*aFevqOS(QtlZjMb&=sTPOvUNYdN2 FKLGE=%g_J- delta 1622 zcmb`HZAepL6vuhC-IwRyyWKf&87bqAPz$l$v|yF#iogg8$q&6yuxYngmK(e4jlhhE zMK2@{cBlvz5fqYH3lBospcjaumO;>qI--aus0d1eqMJeVp^H#{_``v7{=erOp7T6M zUpMc6)tvD_m)9=vMtgMUrmf*N@DZjg6=D`aaLDC@hA^o}<-1E#ANqL6l+s^;KP-#~ z*@7o%v-0N`P(G{H=nQ9``Sewr$_0w_zob;`O0KPufr6B6}{}d`;&q6^`|+}1`od2 z84xm@6Z<>3F)}ISbeh`(nRh$`F`KXma!DRG#hDQ#+RnA)a5{TvGnZHKiQ@dXjn)kyuE^cD8YUAq(hcpm{#cufvP&$ z^gZVW$Z#S>?UwYOft-y_!|9KuyHozs!uanwp|yvBzJpF7d45d7^JC6OZ}GxQ*O3(< zewNCh>7+ox{X*Uag+_S{)Y)zep>N-%=IefOI7zNGobUiQUoJclu~?kR`JQ!o?ur| eBfeaS2+@_TrzV@nOdK2i)S8xJ3OG3>p`yFN+VK zhkNe#{O&pDcbcC0?27K%@)g}lX9?nw=qBU_qwd)`*B-=o`t49h%y+{2u-Sxm$>u^b zWMEuv^G@ql!|A>j4_H)Z{o7zBVZIx=pG)+(0E-Xpcj;V6cZdyZW751+`o^$QV7{A; z+Wx&1QaQ8o&-$}!K!R$jyHobTXI?6D7w8iC`P99pM3FNr zTuVPF_<)w}G4X7V+1Yq%QAuWqPBvfdRze%fJx z+Eum_slL`4#6_5bxs|v`IoUwmq=IZDmBd4; zc&e#!M$C=+jQnJ$7k~bat@8q&9P>)r^nyw@lL%=bjiia(!KW9R2c9Zg qDMg3UWMTNdH!AQiJEL#9*PWtKtH>78LRzVHu^;vP(lfEI9{K}hR@^ZF delta 3075 zcmd_sZ)h8390zc&=FcscORh`m@~_FowrSd$CY{}yWpNGcPklA(p9wlg~F3#XZ)vA?}fFgtjqz0MUMeo^xlbF zsp$`@&LHlAM+W8ZJUS5Gq|~JRwspG3&|FsbEnPbycU>K7u6+sqTX=P`IV zs;F1W!FRk%M~0WUc?#|xV3@5BzB%e##U@s46ly|GAqkQq8IqHVjsEb;;OJB!7B zpPqO(7>Z9h-x`lQBGK?W!O?ik8HtXc^~ZzGSj0aX4EUptcrX@s#Nz(=csS&Y1*2!- zikGp1Fv4gde48F1iWOSZ)VNR)L(vWrzO7gfH6k|wcaAYFu-2xWgkeL!1@7i{(lB_7 zSx6PTTR{Luz1?XDcH)$5H>KJv!DbUX8WWW{$1Kw%`3iHDYD8dyV3D2D?MD5d%Yw|3 zR6=A?X1Fnp{bTDrNxSar=Iw5h&3EBRe{s{-nYFn_6j}YbmXX3?WuPJ3`cWQW-s@t1 zNJ;WTtl_0Pe}}3U+zKdtYSeH;?iy2)-k`bdbGoxe5H$mJ=X!*!#fuviTF>esxHRknZWl zBTlaW24s_}N#c9pQc%S8xe=r!JKMa}PELMoICfD?##+$RXcy8UJu)C8GND#vMi!Ec z@jq>BS#0$fMlQ#!NeLuZrLRG6dwbVKf!9Oi9<2eqpd#h4wOr=_M_i`%dv?hD=#q;Y zX)Ah$Y^2*%LhXq}9F97W4RsO$S92R(}%s24dg-W6QllJ(b?Yhc47HjMhvZuA`L zM|;p-Y=0o1cnphp^fiO>k3No$xX>oeijrJiAnV#LxRiJp>Edk{` zOGD{>s|Jz_9yb*B@fL6u6lO@yFdV#?XU(KE&wj?HeBDN<$oA;T(L8&GA?X?K_hWwo DQ>(7{ diff --git a/src/api/routes/users/@me/settings.ts b/src/api/routes/users/@me/settings.ts index 82ca5add..beef662b 100644 --- a/src/api/routes/users/@me/settings.ts +++ b/src/api/routes/users/@me/settings.ts @@ -19,7 +19,7 @@ import { route } from "@spacebar/api"; import { User, UserSettings } from "@spacebar/util"; import { Request, Response, Router } from "express"; -import { UserSettingsSchema } from "@spacebar/schemas" +import { UserSettingsUpdateSchema, UserSettingsSchema } from "@spacebar/schemas" const router = Router({ mergeParams: true }); @@ -44,7 +44,7 @@ router.get( router.patch( "/", route({ - requestBody: "UserSettingsSchema", + requestBody: "UserSettingsUpdateSchema", responses: { 200: { body: "UserSettings", @@ -58,7 +58,8 @@ router.patch( }, }), async (req: Request, res: Response) => { - const body = req.body as UserSettingsSchema; + const body = req.body as UserSettingsUpdateSchema; + if (!body) return res.status(400).json({ code: 400, message: "Invalid request body" }); if (body.locale === "en") body.locale = "en-US"; // fix discord client crash on unknown locale const user = await User.findOneOrFail({ @@ -67,7 +68,7 @@ router.patch( }); if (!user.settings) - user.settings = UserSettings.create(body as Partial); + user.settings = UserSettings.create(body as UserSettingsUpdateSchema); else user.settings.assign(body); diff --git a/src/schemas/uncategorised/UserSettingsSchema.ts b/src/schemas/api/users/UserSettings.ts similarity index 95% rename from src/schemas/uncategorised/UserSettingsSchema.ts rename to src/schemas/api/users/UserSettings.ts index b9d0ec8a..410c35df 100644 --- a/src/schemas/uncategorised/UserSettingsSchema.ts +++ b/src/schemas/api/users/UserSettings.ts @@ -16,6 +16,8 @@ along with this program. If not, see . */ +export type UserSettingsUpdateSchema = Partial; + export interface UserSettingsSchema { afk_timeout: number; allow_accessibility_detection: boolean; @@ -49,7 +51,7 @@ export interface UserSettingsSchema { stream_notifications_enabled: boolean; theme: "dark" | "light"; // dark timezone_offset: number; // e.g -60 - view_nsfw_guilds: boolean + view_nsfw_guilds: boolean; } export interface CustomStatus { @@ -68,4 +70,4 @@ export interface GuildFolder { export interface FriendSourceFlags { all: boolean; -} \ No newline at end of file +} diff --git a/src/schemas/api/users/index.ts b/src/schemas/api/users/index.ts index abc763e4..a95a3282 100644 --- a/src/schemas/api/users/index.ts +++ b/src/schemas/api/users/index.ts @@ -18,3 +18,4 @@ export * from "./ConnectedAccount"; export * from "./Member"; export * from "./User"; +export * from "./UserSettings"; \ No newline at end of file diff --git a/src/schemas/uncategorised/index.ts b/src/schemas/uncategorised/index.ts index c0ebde0d..8a23b16a 100644 --- a/src/schemas/uncategorised/index.ts +++ b/src/schemas/uncategorised/index.ts @@ -82,7 +82,6 @@ export * from "./UserGuildSettingsSchema"; export * from "./UserModifySchema"; export * from "./UserNoteUpdateSchema"; export * from "./UserProfileModifySchema"; -export * from "./UserSettingsSchema"; export * from "./VanityUrlSchema"; export * from "./VerifyEmailSchema"; export * from "./VoiceStateUpdateSchema";