import { Button } from '@material-ui/core'; import React from 'react'; import { createPublicKeyMessage } from './crypto'; import { PublicKeyMessage } from './messaging/wire'; import { WakuMessage, Waku } from 'js-waku'; import { PublicKeyContentTopic } from './waku'; interface Props { encryptionPublicKey: Uint8Array | undefined; waku: Waku | undefined; address: string | undefined; providerRequest: | ((request: { method: string; params?: Array }) => Promise) | undefined; } export default function BroadcastPublicKey({ encryptionPublicKey, address, waku, providerRequest, }: Props) { const broadcastPublicKey = () => { if (!encryptionPublicKey) return; if (!address) return; if (!waku) return; if (!providerRequest) return; console.log('Creating Public Key Message'); createPublicKeyMessage(address, encryptionPublicKey, providerRequest) .then((msg) => { console.log('Public Key Message created'); encodePublicKeyWakuMessage(msg) .then((wakuMsg) => { console.log('Public Key Message encoded'); waku.lightPush .push(wakuMsg) .then((res) => console.log('Public Key Message pushed', res)) .catch((e) => { console.error('Failed to send Public Key Message', e); }); }) .catch(() => { console.log('Failed to encode Public Key Message in Waku Message'); }); }) .catch((e) => { console.error('Failed to create public key message', e); }); }; return ( ); } async function encodePublicKeyWakuMessage( publicKeyMessage: PublicKeyMessage ): Promise { const payload = publicKeyMessage.encode(); return await WakuMessage.fromBytes(payload, PublicKeyContentTopic); }