File size: 729 Bytes
423b87b
 
 
 
 
6a839c1
423b87b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!--
  Works similarly to `liveblocks-react` RoomProvider
  https://liveblocks.io/docs/api-reference/liveblocks-react#RoomProvider
-->
<script lang="ts">
  // @ts-nocheck
  import { clientSymbol, roomSymbol } from "./symbols";
  import type { Client, Room } from "@liveblocks/client";
  import { getContext, onDestroy, setContext } from "svelte";

  export let id: string;
  export let defaultPresence = () => ({});

  if (!id) {
    throw new Error("RoomProvider requires an id");
  }

  const client = getContext<Client>(clientSymbol);

  if (client) {
    const room = client.enter(id, defaultPresence());

    setContext<Room>(roomSymbol, room);

    onDestroy(() => {
      client.leave(id);
    });
  }
</script>

<slot />