summary refs log tree commit diff
path: root/src/api/routes/users/@me
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-09-23 13:29:15 +0200
committerRory& <root@rory.gay>2026-09-23 13:29:15 +0200
commit5de5934b65b932afc6adac409aac38ea24c33d8c (patch)
tree80629008a17274a36fab663d06592d860638df94 /src/api/routes/users/@me
parentExport spacebar specific schemas (diff)
downloadserver-ts-5de5934b65b932afc6adac409aac38ea24c33d8c.tar.xz
Some more avatar decorations work
Diffstat (limited to 'src/api/routes/users/@me')
-rw-r--r--src/api/routes/users/@me/index.ts19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts

index f58f87ff2..341dbf1f3 100644 --- a/src/api/routes/users/@me/index.ts +++ b/src/api/routes/users/@me/index.ts
@@ -19,8 +19,8 @@ import bcrypt from "bcrypt"; import { Request, Response, Router } from "express"; import { route } from "@spacebar/api/middlewares"; -import { User } from "@spacebar/database"; -import { Config, emitEvent, FieldErrors, generateToken, handleFile, UserUpdateEvent } from "@spacebar/util"; +import { AvatarDecoration, User } from "@spacebar/database"; +import { ApiError, Config, DiscordApiErrors, emitEvent, FieldErrors, generateToken, handleFile, UserUpdateEvent } from "@spacebar/util"; import { DisplayNameStyle, PrivateUserProjection, UserModifySchema } from "@spacebar/schemas"; const router: Router = Router({ mergeParams: true }); @@ -216,6 +216,21 @@ router.patch( } } + if ("avatar_decoration_sku_id" in body) { + if (!body.avatar_decoration_sku_id) { + user.avatar_decoration_data = undefined; + user.avatar_decoration_id = undefined; + } else { + const avatarDecoration = await AvatarDecoration.findOne({ where: { id: body.avatar_decoration_sku_id } }); + if (!avatarDecoration) throw FieldErrors({ avatar_decoration_sku_id: { code: "50057", message: "Invalid SKU" } }); + + if (!(await avatarDecoration.canUseAvatarDecoration(req.user_id))) + throw FieldErrors({ avatar_decoration_sku_id: { code: "40018", message: "You do not have access to this avatar decoration" } }); // TODO: find a better code + + user.avatar_decoration_id = body.avatar_decoration_sku_id; + } + } + user.assign(body); user.validate(); await user.save();