origin/packages/common/src/collaboration/y-auth.ts

30 lines
723 B
TypeScript
Raw Normal View History

2024-12-30 08:26:40 +08:00
import * as Y from 'yjs'
import * as encoding from 'lib0/encoding'
import * as decoding from 'lib0/decoding'
export const messagePermissionDenied = 0
export const writePermissionDenied = (
encoder: encoding.Encoder,
reason: string
): void => {
encoding.writeVarUint(encoder, messagePermissionDenied)
encoding.writeVarString(encoder, reason)
}
export type PermissionDeniedHandler = (
y: Y.Doc,
reason: string
) => void
export const readAuthMessage = (
decoder: decoding.Decoder,
y: Y.Doc,
permissionDeniedHandler: PermissionDeniedHandler
): void => {
switch (decoding.readVarUint(decoder)) {
case messagePermissionDenied:
permissionDeniedHandler(y, decoding.readVarString(decoder))
}
}