import { useState } from 'react'; import { ChatMessage } from './ChatMessage'; import { ChatMessage as WakuChatMessage } from 'waku/chat_message'; import { WakuMessage } from 'waku/waku_message'; import { ChatContentTopic } from './App'; import ChatList from './ChatList'; import MessageInput from './MessageInput'; import { useWaku } from './WakuContext'; import { TitleBar } from '@livechat/ui-kit'; interface Props { lines: ChatMessage[]; commandHandler: (cmd: string) => void; nick: string; } export default function Room(props: Props) { let [messageToSend, setMessageToSend] = useState(''); const { waku } = useWaku(); return (
{ return handleMessage( messageToSend, props.nick, props.commandHandler, waku.relay.send.bind(waku.relay) ); } : undefined } />
); } async function handleMessage( message: string, nick: string, commandHandler: (cmd: string) => void, messageSender: (msg: WakuMessage) => Promise ) { if (message.startsWith('/')) { commandHandler(message); } else { const chatMessage = new WakuChatMessage(new Date(), nick, message); const wakuMsg = WakuMessage.fromBytes( chatMessage.encode(), ChatContentTopic ); return messageSender(wakuMsg); } }