mirror of
https://github.com/spacebarchat/server.git
synced 2026-10-22 17:32:30 +00:00
Some more avatar decorations work
This commit is contained in:
1 parent
404da008ba
commit
5de5934b65
13 files changed
+116
-40
No files matched your search
@@ -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();
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
import { Router, Response, Request } from "express";
|
||||
import { route } from "@spacebar/api/middlewares";
|
||||
import { AvatarDecorations } from "@spacebar/database";
|
||||
import { AvatarDecoration } from "@spacebar/database";
|
||||
import { PublicAvatarDecorationResponse, UpdateAvatarDecorationSchema } from "@spacebar/schemas/api/spacebar/AvatarDecorations";
|
||||
import { ApiError } from "@spacebar/util";
|
||||
|
||||
@@ -38,7 +38,7 @@ router.patch(
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const changes = req.body as UpdateAvatarDecorationSchema;
|
||||
const deco = await AvatarDecorations.findOneOrFail({ where: { id: req.params.id as string } });
|
||||
const deco = await AvatarDecoration.findOneOrFail({ where: { id: req.params.id as string } });
|
||||
|
||||
if (deco.uploader_id !== req.user_id) throw new ApiError("You do not have permission to update this avatar decoration", 0, 403);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
import { Router, Response, Request } from "express";
|
||||
import { Raw } from "typeorm";
|
||||
import { route } from "@spacebar/api/middlewares";
|
||||
import { AvatarDecorations, Member } from "@spacebar/database";
|
||||
import { AvatarDecoration, Member } from "@spacebar/database";
|
||||
import { PublicAvatarDecorationListResponse } from "@spacebar/schemas/api/spacebar/AvatarDecorations";
|
||||
import { arrayDistinctBy } from "@spacebar/extensions";
|
||||
|
||||
@@ -40,7 +40,7 @@ router.get(
|
||||
const memberships = await Member.find({ select: { guild_id: true, roles: { id: true } }, relations: { roles: true }, where: { id: req.user_id } });
|
||||
|
||||
const decos = (
|
||||
await AvatarDecorations.find({
|
||||
await AvatarDecoration.find({
|
||||
where: [
|
||||
{ approved: true, public: true },
|
||||
{ approved: true, uploader_id: req.user_id },
|
||||
|
||||
Reference in new issue
Block a user