silverbullet/web/syscalls/collab.ts

39 lines
877 B
TypeScript

import { SysCallMapping } from "../../plugos/system.ts";
import type { Editor } from "../editor.tsx";
export function collabSyscalls(editor: Editor): SysCallMapping {
return {
"collab.start": (
_ctx,
serverUrl: string,
token: string,
username: string,
) => {
editor.startCollab(serverUrl, token, username);
},
"collab.stop": (
_ctx,
) => {
editor.stopCollab();
},
"collab.ping": async (
_ctx,
clientId: string,
currentPage: string,
) => {
const resp = await editor.remoteSpacePrimitives.authenticatedFetch(
editor.remoteSpacePrimitives.url,
{
method: "POST",
body: JSON.stringify({
operation: "ping",
clientId,
page: currentPage,
}),
},
);
return resp.json();
},
};
}