MCPcopy Index your code
hub / github.com/DeepNotesApp/DeepNotes / _handleMessage

Method _handleMessage

apps/collab-server/src/sockets.ts:389–438  ·  view source on GitHub ↗
(messageBuffer: ArrayBuffer)

Source from the content-addressed store, hash-verified

387 }
388
389 private async _handleMessage(messageBuffer: ArrayBuffer) {
390 const [sessionInvalidated, userPlan, pageGroupId, pageIsFree] =
391 await Promise.all([
392 dataAbstraction().hget('session', this.sessionId!, 'invalidated'),
393 dataAbstraction().hget('user', this.userId!, 'plan'),
394 dataAbstraction().hget('page', this.room.pageId, 'group-id'),
395 dataAbstraction().hget('page', this.room.pageId, 'free'),
396 ]);
397
398 // Check if session is invalidated
399
400 if (sessionInvalidated) {
401 this.destroySocket();
402
403 return;
404 }
405
406 // Check if has permission to edit
407
408 const role = await dataAbstraction().hget(
409 'group-member',
410 `${pageGroupId}:${this.userId}`,
411 'role',
412 );
413
414 if (
415 !rolesMap()[role]?.permissions.editGroupPages ||
416 (userPlan !== 'pro' && !pageIsFree)
417 ) {
418 moduleLogger.info('Ignored message from unauthorized user');
419 return;
420 }
421
422 const message = new Uint8Array(messageBuffer);
423
424 const decoder = decoding.createDecoder(message);
425
426 const messageType = decoding.readVarUint(decoder);
427
428 switch (messageType) {
429 case CollabMessageType.AWARENESS:
430 await this._handleAwarenessMessage(decoder, message);
431 break;
432 case CollabMessageType.DOC:
433 await this._handleDocMessage(decoder);
434 break;
435 default:
436 throw new Error('Unknown message type');
437 }
438 }
439
440 private async _handleAwarenessMessage(
441 decoder: decoding.Decoder,

Callers 1

constructorMethod · 0.95

Calls 4

destroySocketMethod · 0.95
_handleDocMessageMethod · 0.95
hgetMethod · 0.45

Tested by

no test coverage detected