(
socket: any, message: PadOptionsMessage & {data: {payload: PadOptionsMessage}})
| 341 | const isPadCreator = async (pad: any, authorId: string) => authorId === await pad.getRevisionAuthor(0); |
| 342 | |
| 343 | const handlePadOptionsMessage = async ( |
| 344 | socket: any, message: PadOptionsMessage & {data: {payload: PadOptionsMessage}}) => { |
| 345 | const session = sessioninfos[socket.id]; |
| 346 | if (!session || !session.author || !session.padId) throw new Error('session not ready'); |
| 347 | if (!settings.enablePadWideSettings) return; |
| 348 | if (!await padManager.doesPadExist(session.padId)) { |
| 349 | messageLogger.warn(`Ignoring padoptions for missing pad ${session.padId}`); |
| 350 | return; |
| 351 | } |
| 352 | const pad = await padManager.getPad(session.padId, null, session.author); |
| 353 | if (!await isPadCreator(pad, session.author)) { |
| 354 | socket.emit('shout', { |
| 355 | type: 'COLLABROOM', |
| 356 | data: { |
| 357 | type: 'shoutMessage', |
| 358 | payload: { |
| 359 | message: { |
| 360 | message: 'Only the pad creator can change pad settings', |
| 361 | sticky: false, |
| 362 | }, |
| 363 | timestamp: Date.now(), |
| 364 | }, |
| 365 | }, |
| 366 | }); |
| 367 | return; |
| 368 | } |
| 369 | pad.setPadSettings(message.data.payload.options); |
| 370 | await pad.saveToDatabase(); |
| 371 | _getRoomSockets(session.padId).forEach((socket) => { |
| 372 | socket.emit('message', message); |
| 373 | }); |
| 374 | }; |
| 375 | |
| 376 | |
| 377 | /** |
no test coverage detected