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
+
);
};
+
+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 };
+};