I’ve just started using Y.js with Vue3 and SyncedStore, using the Y-WebRTC, but I’m not fully understanding how/where/who reactivity is handled. I think the idea is that the SyncedStore provides reactivity?
I see that WebrtcProvider extends an Observable. But I can’t find much information on what an “Observable”, seems to be part of lib0 (same author?). But then, is SyncedStore wrapping this?
The very first thing I wanted to see from Y-WebRTC is simply if I’m connected or not. When I check the provider, I can see the correct connected
value, but for the life of me can’t seem to wrap that in a computed function:
<script setup lang="ts">
import { ref, computed} from 'vue'
import { WebrtcProvider } from 'y-webrtc'
import type { ComputedRef } from 'vue'
import * as Vue from "vue"
import { enableVueBindings } from "@syncedstore/core"
import { syncedStore, getYjsDoc } from "@syncedstore/core"
let message = ref("")
localStorage.log = 'true'
enableVueBindings(Vue);
type ChatMessage = { sender: string, message: string }
const store = syncedStore({ msgs: [] as ChatMessage[], fragment: "xml" })
const ydoc = getYjsDoc(store)
const webrtcProvider = new WebrtcProvider("syncedstore-chat", ydoc, { signaling: ['ws://localhost:4444'] })
console.log('WebrtcProvider',WebrtcProvider)
console.log('webrtcProvider',webrtcProvider, webrtcProvider.connected)
const isConnected: ComputedRef<boolean> = computed((): boolean => {
if (!webrtcProvider) {
return false
}
return webrtcProvider.connected
})
function debug() {
console.log('webrtcProvider',webrtcProvider, webrtcProvider.connected, isConnected.value)
console.log(typeof webrtcProvider.connected)
}
</script>
It’s very likely something very dumb