mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-17 08:34:54 -04:00
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
import { RealtimeUser, RemoteCursor } from './realtime-user.js'
|
|
|
|
export enum MessageType {
|
|
NOTE_CONTENT_STATE_REQUEST = 'NOTE_CONTENT_STATE_REQUEST',
|
|
NOTE_CONTENT_UPDATE = 'NOTE_CONTENT_UPDATE',
|
|
PING = 'PING',
|
|
PONG = 'PONG',
|
|
METADATA_UPDATED = 'METADATA_UPDATED',
|
|
DOCUMENT_DELETED = 'DOCUMENT_DELETED',
|
|
SERVER_VERSION_UPDATED = 'SERVER_VERSION_UPDATED',
|
|
REALTIME_USER_STATE_SET = 'REALTIME_USER_STATE_SET',
|
|
REALTIME_USER_SINGLE_UPDATE = 'REALTIME_USER_SINGLE_UPDATE',
|
|
REALTIME_USER_STATE_REQUEST = 'REALTIME_USER_STATE_REQUEST',
|
|
REALTIME_USER_SET_ACTIVITY = 'REALTIME_USER_SET_ACTIVITY',
|
|
|
|
READY = 'READY'
|
|
}
|
|
|
|
export interface MessagePayloads {
|
|
[MessageType.NOTE_CONTENT_STATE_REQUEST]: number[]
|
|
[MessageType.NOTE_CONTENT_UPDATE]: number[]
|
|
[MessageType.REALTIME_USER_STATE_SET]: {
|
|
users: RealtimeUser[]
|
|
ownUser: {
|
|
displayName: string
|
|
styleIndex: number
|
|
}
|
|
}
|
|
[MessageType.REALTIME_USER_SINGLE_UPDATE]: RemoteCursor
|
|
|
|
[MessageType.REALTIME_USER_SET_ACTIVITY]: {
|
|
active: boolean
|
|
}
|
|
}
|
|
|
|
export type Message<T extends MessageType> = T extends keyof MessagePayloads
|
|
? {
|
|
type: T
|
|
payload: MessagePayloads[T]
|
|
}
|
|
: {
|
|
type: T
|
|
}
|