fixed PATCH avatar

This commit is contained in:
Tzvetan Trave
2025-10-23 23:07:53 +02:00
parent 6ba25e04d1
commit 8d7f1748db

View File

@ -9,28 +9,17 @@ export async function uAvatar(request, reply, fastify, getUserInfo, setAvatarId,
if (!getUserInfo.get(userId)) {
return reply.code(404).send({ error: "User does not exist" });
}
deleteAvatarId.run(userId);
const parts = request.parts();
for await (const part of parts) {
if (part.file) {
let size = 0;
const chunks = [];
for await (const chunk of part.file) {
size += chunk.length;
chunks.push(chunk);
const buffer = request.body;
if (!buffer) {
return reply.code(400).send({ error: "No file uploaded" });
}
if (size === 5 * 1024 * 1024 + 1) {
if (buffer.length > 5 * 1024 * 1024) {
return reply.code(400).send({ error: "File too large" });
}
const buffer = Buffer.concat(chunks);
if (!part.filename || part.filename.trim() === '') {
return reply.code(400).send({ error: "Missing filename" });
}
if (!part.mimetype || part.mimetype.trim() === '') {
return reply.code(400).send({ error: "Missing mimetype" });
}
const webpBuffer = await sharp(buffer).toFormat('webp').toBuffer();
const imageId = postImage.run(part.filename, part.mimetype, webpBuffer);
const mimeType = request.headers['content-type'];
const fileName = `avatar_${userId}.webp`;
const imageId = postImage.run(fileName, mimeType, webpBuffer);
const oldImageId = getAvatarId.get(userId);
if (oldImageId.avatarId !== -1) {
deleteImage.run(oldImageId.avatarId);
@ -38,9 +27,6 @@ export async function uAvatar(request, reply, fastify, getUserInfo, setAvatarId,
}
setAvatarId.run(imageId.lastInsertRowid, userId);
return reply.code(200).send({ msg: "Avatar modified successfully" });
}
}
return reply.code(400).send({ error: "No avatar modified" });
} catch (err) {
fastify.log.error(err);
return reply.code(500).send({ error: "Internal server error" });