()
const client = useMemo(() => new Client(new WSClient("/_gomuks/websocket")), [])
useEffect(() => {
((window as unknown) as { client: Client }).client = client
// TODO remove this debug log
const unlistenDebug = client.rpc.event.listen(ev => {
console.debug("Received event:", ev)
})
const unlistenConnect = client.rpc.connect.listen(setConnState)
const unlistenState = client.state.listen(setClientState)
client.rpc.start()
return () => {
unlistenConnect()
unlistenState()
unlistenDebug()
client.rpc.stop()
}
}, [client])
if (connState?.error) {
return
error {`${connState.error}`} :(
} else if (!connState?.connected || !clientState) {
const msg = connState?.connected ?
"Waiting for client state..." : "Connecting to backend..."
return
{msg}
} else if (!clientState.is_logged_in) {
return
} else if (!clientState.is_verified) {
return
} else {
return
}
}
export default App