import { createClient, FluenceClient } from '@fluencelabs/fluence'; import React, { useEffect, useState } from 'react'; import './App.scss'; import { FluenceClientContext } from '../app/FluenceClientContext'; import { UserList } from './UserList'; import * as api from 'src/app/api'; import { CollaborativeEditor } from './CollaborativeEditor'; import { relayNode } from 'src/app/constants'; import { withErrorHandlingAsync } from './util'; import { toast } from 'react-toastify'; const App = () => { const [client, setClient] = useState(null); const [isInRoom, setIsInRoom] = useState(false); const [nickName, setNickName] = useState(''); useEffect(() => { createClient(relayNode) .then((client) => setClient(client)) .catch((err) => console.log('Client initialization failed', err)); }, []); const joinRoom = async () => { if (!client) { return; } await withErrorHandlingAsync(async () => { await api.join(client, nickName); setIsInRoom(true); }); }; const leaveRoom = async () => { if (!client) { return; } await withErrorHandlingAsync(async () => { await api.leave(client); setIsInRoom(false); }); }; return (
{isInRoom && ( )}
Connection status: {client ? connected : 'disconnected'}
{!isInRoom && (
{ e.preventDefault(); joinRoom(); }} >

Welcome to FluentPad

{ const name = e.target.value; setNickName(name); }} />
)} {isInRoom && (

FluentPad

)}
); }; export default App;