import { Server } from 'socket.io' import { TSocket } from '../../../utilities/Types' import prisma from '../../../utilities/Prisma' import type { SpriteImage } from '@prisma/client' import path from 'path' import fs from 'fs' type uploadSpriteImage = SpriteImage & { base64: string } type Payload = { id: string name: string spriteImages: uploadSpriteImage[] } /** * Handle game master sprite update event * @param socket * @param io */ export default function (socket: TSocket, io: Server) { socket.on('gm:sprite:update', async (data: Payload, callback: (success: boolean) => void) => { if (socket.character?.role !== 'gm') { return } try { const sprite = await prisma.sprite.update({ where: { id: data.id }, data: { name: data.name, spriteImages: { deleteMany: { spriteId: data.id }, create: data.spriteImages } } }) // store the sprite image callback(true) } catch (error) { console.error(error) callback(false) } }) }