MCPcopy Index your code
hub / github.com/ether/etherpad / handlePadOptionsMessage

Function handlePadOptionsMessage

src/node/handler/PadMessageHandler.ts:343–374  ·  view source on GitHub ↗
(
    socket: any, message: PadOptionsMessage & {data: {payload: PadOptionsMessage}})

Source from the content-addressed store, hash-verified

341const isPadCreator = async (pad: any, authorId: string) => authorId === await pad.getRevisionAuthor(0);
342
343const 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/**

Callers 1

Calls 5

isPadCreatorFunction · 0.85
_getRoomSocketsFunction · 0.85
nowMethod · 0.80
setPadSettingsMethod · 0.80
saveToDatabaseMethod · 0.80

Tested by

no test coverage detected