Spaces:
Runtime error
Runtime error
adding new hooks
Browse files
frontend/src/app.d.ts
CHANGED
@@ -7,12 +7,14 @@ declare global {
|
|
7 |
namespace App {
|
8 |
// interface Locals {}
|
9 |
// interface PageData {}
|
10 |
-
// interface Error {}
|
11 |
// interface Platform {}
|
12 |
interface Window {
|
13 |
parentIFrame: unknown;
|
14 |
}
|
15 |
}
|
|
|
|
|
|
|
16 |
interface Event {
|
17 |
relatedTarget: EventTarget | null;
|
18 |
transform: ZoomTransform;
|
|
|
7 |
namespace App {
|
8 |
// interface Locals {}
|
9 |
// interface PageData {}
|
|
|
10 |
// interface Platform {}
|
11 |
interface Window {
|
12 |
parentIFrame: unknown;
|
13 |
}
|
14 |
}
|
15 |
+
interface Error {
|
16 |
+
code: number;
|
17 |
+
}
|
18 |
interface Event {
|
19 |
relatedTarget: EventTarget | null;
|
20 |
transform: ZoomTransform;
|
frontend/src/lib/liveblocks/index.ts
CHANGED
@@ -10,7 +10,9 @@ export * from "./useUndo";
|
|
10 |
export * from "./useRedo";
|
11 |
export * from "./useBatch";
|
12 |
export * from "./useHistory";
|
13 |
-
|
|
|
|
|
14 |
/**
|
15 |
* These components were built to (mostly) match the
|
16 |
* liveblocks-react library
|
|
|
10 |
export * from "./useRedo";
|
11 |
export * from "./useBatch";
|
12 |
export * from "./useHistory";
|
13 |
+
export * from "./useErrorListener";
|
14 |
+
export * from "./useEventListener";
|
15 |
+
export * from "./useBroadcastEvent";
|
16 |
/**
|
17 |
* These components were built to (mostly) match the
|
18 |
* liveblocks-react library
|
frontend/src/lib/liveblocks/useBroadcastEvent.ts
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import { useRoom } from "./useRoom";
|
3 |
+
import type { Json, BroadcastOptions } from "@liveblocks/client";
|
4 |
+
|
5 |
+
export function useBroadcastEvent<TRoomEvent extends Json>(): (
|
6 |
+
event: TRoomEvent,
|
7 |
+
options?: BroadcastOptions
|
8 |
+
) => void {
|
9 |
+
const room = useRoom();
|
10 |
+
|
11 |
+
return (
|
12 |
+
event: TRoomEvent,
|
13 |
+
options: BroadcastOptions = { shouldQueueEventIfNotReady: false }
|
14 |
+
) => {
|
15 |
+
room.broadcastEvent(event, options);
|
16 |
+
}
|
17 |
+
}
|
frontend/src/lib/liveblocks/useErrorListener.ts
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import { onDestroy } from "svelte";
|
3 |
+
import { useRoom } from "./useRoom";
|
4 |
+
|
5 |
+
|
6 |
+
export function useErrorListener(callback: (err: Error) => void): void {
|
7 |
+
const room = useRoom();
|
8 |
+
|
9 |
+
const unsubscribe = room.events.error.subscribe((e: Error) => callback(e))
|
10 |
+
|
11 |
+
onDestroy(() => {
|
12 |
+
unsubscribe();
|
13 |
+
});
|
14 |
+
}
|
frontend/src/lib/liveblocks/useEventListener.ts
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import { onDestroy } from "svelte";
|
3 |
+
import { useRoom } from "./useRoom";
|
4 |
+
import type { Json } from "@liveblocks/client";
|
5 |
+
|
6 |
+
export function userEventListener<TRoomEvent extends Json>(
|
7 |
+
callback: (eventData: { connectionId: number; event: TRoomEvent }) => void
|
8 |
+
): void {
|
9 |
+
const room = useRoom();
|
10 |
+
|
11 |
+
const listener = (eventData: {
|
12 |
+
connectionId: number;
|
13 |
+
event: TRoomEvent;
|
14 |
+
}) => {
|
15 |
+
callback(eventData);
|
16 |
+
}
|
17 |
+
|
18 |
+
const unsubscribe = room.events.customEvent.subscribe(listener);
|
19 |
+
|
20 |
+
onDestroy(() => {
|
21 |
+
unsubscribe();
|
22 |
+
});
|
23 |
+
}
|