summary refs log tree commit diff
path: root/src/api/routes
diff options
context:
space:
mode:
authorTheArcaneBrony <myrainbowdash949@gmail.com>2023-01-20 00:44:46 +0100
committerTheArcaneBrony <myrainbowdash949@gmail.com>2023-01-20 00:44:46 +0100
commit82e7bf9f96bb334f94a483e9c9de0c5c583a7314 (patch)
treee080e29a7cf9f338b569bfb15339b685dae93a05 /src/api/routes
parentfix: route file regex (#956) (diff)
downloadserver-dev/fix-emoji-uploads.tar.xz
Add detection for gifs when uploading emojis !!UNTESTED!! dev/fix-emoji-uploads
Signed-off-by: TheArcaneBrony <myrainbowdash949@gmail.com>
Diffstat (limited to 'src/api/routes')
-rw-r--r--src/api/routes/guilds/#guild_id/emojis.ts26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/api/routes/guilds/#guild_id/emojis.ts b/src/api/routes/guilds/#guild_id/emojis.ts

index 491c9be2..67c888b7 100644 --- a/src/api/routes/guilds/#guild_id/emojis.ts +++ b/src/api/routes/guilds/#guild_id/emojis.ts
@@ -29,8 +29,9 @@ import { User, EmojiCreateSchema, EmojiModifySchema, + arrayBufferMatchesArr, } from "@fosscord/util"; -import { route } from "@fosscord/api"; +import { route, toByteArray } from "@fosscord/api"; const router = Router(); @@ -85,6 +86,27 @@ router.post( const user = await User.findOneOrFail({ where: { id: req.user_id } }); body.image = (await handleFile(`/emojis/${id}`, body.image)) as string; + // Rory - 20/01/2023 - Check for animated emojis + let animated = false; + let buffer = toByteArray(body.image); + if ( + arrayBufferMatchesArr( + buffer, + [0x47, 0x49, 0x46, 0x38, 0x39, 0x61], + 0, + ) + ) + animated = true; //gif87 + if ( + arrayBufferMatchesArr( + buffer, + [0x47, 0x49, 0x46, 0x38, 0x37, 0x61], + 0, + ) + ) + animated = true; //gif89 + // TODO: identify more formats + const emoji = await Emoji.create({ id: id, guild_id: guild_id, @@ -92,7 +114,7 @@ router.post( require_colons: body.require_colons ?? undefined, // schema allows nulls, db does not user: user, managed: false, - animated: false, // TODO: Add support animated emojis + animated, available: true, roles: [], }).save();