diff --git a/examples/rln-js/src/app/home/components/Waku.tsx b/examples/rln-js/src/app/home/components/Waku.tsx index 98d4cd7..5ed05b2 100644 --- a/examples/rln-js/src/app/home/components/Waku.tsx +++ b/examples/rln-js/src/app/home/components/Waku.tsx @@ -1,11 +1,24 @@ +import React from "react"; import { Block, BlockTypes } from "@/components/Block"; import { Subtitle } from "@/components/Subtitle"; import { Status } from "@/components/Status"; import { Button } from "@/components/Button"; -import { useStore } from "@/hooks"; +import { useStore, useWaku } from "@/hooks"; + +const DEFAULT_MA = + "/dns4/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm"; export const Waku: React.FunctionComponent<{}> = () => { const { wakuStatus } = useStore(); + const { onDial, onSend, messages } = useWaku(); + + const { multiaddr, onMultiaddrChange } = useMultiaddr(); + const { nick, message, onNickChange, onMessageChange } = useMessage(); + + const renderedMessages = React.useMemo( + () => messages.map(renderMessage), + [messages] + ); return ( @@ -22,11 +35,14 @@ export const Waku: React.FunctionComponent<{}> = () => { - + @@ -40,13 +56,15 @@ export const Waku: React.FunctionComponent<{}> = () => { - + - +

Messages

+
+
    {renderedMessages}
+
); }; + +function useMultiaddr() { + const [multiaddr, setMultiaddr] = React.useState(DEFAULT_MA); + + const onMultiaddrChange = (e: React.SyntheticEvent) => { + setMultiaddr(e.currentTarget.value || ""); + }; + + return { + multiaddr, + onMultiaddrChange, + }; +} + +function useMessage() { + const [nick, setNick] = React.useState(""); + const [message, setMessage] = React.useState(""); + + const onNickChange = (e: React.SyntheticEvent) => { + setNick(e.currentTarget.value || ""); + }; + + const onMessageChange = (e: React.SyntheticEvent) => { + setMessage(e.currentTarget.value || ""); + }; + + return { + nick, + message, + onNickChange, + onMessageChange, + }; +} + +function renderMessage() { + /* + wakuMessage.proofState = !!wakuMessage.rateLimitProof + ? "verifying..." + : "no proof attached"; + + wakuMessage.msg = ` + (${nick}) + ${utils.bytesToUtf8(text)} + [${time.toISOString()}] + `; + messagesList.innerHTML += `
  • ${message.msg} - [epoch: ${message.epoch}, proof: ${message.proofState} ]
  • `; + */ + return <>; +} diff --git a/examples/rln-js/src/hooks/index.ts b/examples/rln-js/src/hooks/index.ts index 73f5b9b..cc8e5d1 100644 --- a/examples/rln-js/src/hooks/index.ts +++ b/examples/rln-js/src/hooks/index.ts @@ -2,3 +2,4 @@ export { useStore } from "./useStore"; export { useRLN } from "./useRLN"; export { useWallet } from "./useWallet"; export { useContract } from "./useContract"; +export { useWaku } from "./useWaku"; diff --git a/examples/rln-js/src/hooks/useWaku.ts b/examples/rln-js/src/hooks/useWaku.ts new file mode 100644 index 0000000..ed15f9e --- /dev/null +++ b/examples/rln-js/src/hooks/useWaku.ts @@ -0,0 +1,7 @@ +export const useWaku = () => { + const onDial = console.log; + const onSend = console.log; + const messages: string[] = []; + + return { onDial, onSend, messages }; +};