import React from "react"; import { Block } from "@/components/Block"; import { Subtitle } from "@/components/Subtitle"; import { Status } from "@/components/Status"; import { Button } from "@/components/Button"; import { useStore, useWaku } from "@/hooks"; import { MessageContent } from "@/services/waku"; export const Waku: React.FunctionComponent<{}> = () => { const { wakuStatus } = useStore(); const { onSend, messages } = useWaku(); const { nick, text, onNickChange, onMessageChange, resetText } = useMessage(); const onSendClick = async () => { await onSend(nick, text); resetText(); }; const renderedMessages = React.useMemo( () => messages.map(renderMessage), [messages] ); return ( Waku

(select credentials to initialize)

Messages

    {renderedMessages}
); }; function useMessage() { const [nick, setNick] = React.useState(""); const [text, setText] = React.useState(""); const onNickChange = (e: React.SyntheticEvent) => { setNick(e.currentTarget.value || ""); }; const onMessageChange = (e: React.SyntheticEvent) => { setText(e.currentTarget.value || ""); }; const resetText = () => { setText(""); }; return { nick, text, resetText, onNickChange, onMessageChange, }; } function renderMessage(content: MessageContent) { return (
  • {content.nick} ({content.proofStatus}, {content.time}) :

    {content.text}

  • ); }