radames commited on
Commit
27bb457
1 Parent(s): 9ad1638

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
+ }