diff --git a/ui/noogle/src/components/Nip07.vue b/ui/noogle/src/components/Nip07.vue index 0630343..5130803 100644 --- a/ui/noogle/src/components/Nip07.vue +++ b/ui/noogle/src/components/Nip07.vue @@ -69,11 +69,11 @@ export default { async sign_in_anon() { try { await loadWasmAsync(); - /*try { + try { initLogger(LogLevel.debug()); } catch (error) { console.log(error); - }*/ + } let keys = Keys.fromSkStr("ece3c0aa759c3e895ecb3c13ab3813c0f98430c6d4bd22160b9c2219efc9cf0e") this.signer = ClientSigner.keys(keys) //TODO store keys @@ -116,11 +116,11 @@ export default { await loadWasmAsync(); - /* try { + try { initLogger(LogLevel.debug()); } catch (error) { console.log(error); - } */ + } let nip07_signer = new Nip07Signer(); try{ @@ -180,7 +180,7 @@ export default { for (let i = 5000; i < 6000; i++) { dvmkinds.push((i.toString())) } - console.log(dvmkinds) + //console.log(dvmkinds) const filter = new Filter().kind(31990).customTag(Alphabet.K, dvmkinds) //await client.reconcile(filter); diff --git a/ui/noogle/src/components/Nip89.vue b/ui/noogle/src/components/Nip89.vue index d34eda7..e67e3f3 100644 --- a/ui/noogle/src/components/Nip89.vue +++ b/ui/noogle/src/components/Nip89.vue @@ -38,12 +38,9 @@ export default { let signer = ClientSigner.keys(keys) //TODO store keys let client = new ClientBuilder().signer(signer).build() - //await client.addRelay("wss://nos.lol"); - await client.addRelay("wss://relay.f7z.io") - await client.addRelay("wss://pablof7z.nostr1.com") - //await client.addRelay("wss://relay.nostr.net") - await client.addRelay("wss://relay.nostr.band"); - //await client.addRelay("wss://nostr-pub.wellorder.net") + for (const relay of store.state.relays){ + await client.addRelay(relay); + } await client.connect(); let dvmkinds = [] diff --git a/ui/noogle/src/components/Search.vue b/ui/noogle/src/components/Search.vue index 7c933e4..303b870 100644 --- a/ui/noogle/src/components/Search.vue +++ b/ui/noogle/src/components/Search.vue @@ -20,8 +20,9 @@ import countries from "@/components/data/countries.json"; import deadnip89s from "@/components/data/deadnip89s.json"; let items = [] - +let dvms =[] let listener = false +let searching = false @@ -37,6 +38,7 @@ async function send_search_request(message) { return } items = [] + dvms =[] store.commit('set_search_results', items) let client = store.state.client let tags = [] @@ -70,9 +72,11 @@ async function send_search_request(message) { let evt = new EventBuilder(5302, "NIP 90 Search request", tags) let res = await client.sendEventBuilder(evt) - store.commit('set_current_request_id_search', res.toHex()) - console.log("SEARCH EVENT SENT: " + res.toHex()) - miniToastr.showMessage("Sent Request to DVMs", "Awaiting results", VueNotifications.types.warn) + let requestid = res.toHex() + store.commit('set_current_request_id_search', requestid) + + + //miniToastr.showMessage("Sent Request to DVMs", "Awaiting results", VueNotifications.types.warn) if (!store.state.hasEventListener){ listen() store.commit('set_hasEventListener', true) @@ -89,6 +93,9 @@ async function send_search_request(message) { } } +const sleep = (ms) => { + return new Promise(resolve => setTimeout(resolve, ms)) +} async function getEvents(eventids) { const event_filter = new Filter().ids(eventids) let client = store.state.client @@ -135,30 +142,109 @@ async function listen() { let resonsetorequest = false for (let tag in event.tags) { if (event.tags[tag].asVec()[0] === "e") { - //console.log("SEARCH ETAG: " + event.tags[tag].asVec()[1]) - // console.log("SEARCH LISTEN TO : " + store.state.requestidSearch) - if (event.tags[tag].asVec()[1] === store.state.requestidSearch) { + console.log("SEARCH ETAG: " + event.tags[tag].asVec()[1]) + console.log("SEARCH LISTEN TO : " + store.state.requestidSearch) + //if (event.tags[tag].asVec()[1] === store.state.requestidSearch) { resonsetorequest = true - } + //} } } if(resonsetorequest){ if (event.kind === 7000) { - try { + try { console.log("7000: ", event.content); console.log("DVM: " + event.author.toHex()) + searching = false + //miniToastr.showMessage("DVM: " + dvmname, event.content, VueNotifications.types.info) + + let status = "unknown" + let jsonentry = { + id: event.author.toHex(), + kind: "", + status: status, + result: "", + name: event.author.toBech32(), + about: "", + image: "", + amount: 0, + bolt11: "" + } + + for (const tag in event.tags) { + if (event.tags[tag].asVec()[0] === "status") { + status = event.tags[tag].asVec()[1] + if (event.tags[tag].asVec().length > 2) { + jsonentry.about = event.tags[tag].asVec()[2] + } + } + + if (event.tags[tag].asVec()[0] === "amount") { + jsonentry.amount = event.tags[tag].asVec()[1] + if (event.tags[tag].asVec().length > 2) { + jsonentry.bolt11 = event.tags[tag].asVec()[2] + } + // TODO else request invoice + } + } + + //let dvm = store.state.nip89dvms.find(x => JSON.parse(x.event).pubkey === event.author.toHex()) + for (const el of store.state.nip89dvms) { + if (JSON.parse(el.event).pubkey === event.author.toHex().toString()) { + jsonentry.name = el.name + jsonentry.about = event.content + jsonentry.image = el.image + + console.log(jsonentry) + + } + } + if (dvms.filter(i => i.id === jsonentry.id).length === 0) { + dvms.push(jsonentry) + } + + + dvms.find(i => i.id === jsonentry.id).status = status + if(status === "error"){ + const index = dvms.indexOf((dvms.find(i => i.id === event.author.toHex()))); + if (index > -1) { + dvms.splice(index, 1); + } + } + + store.commit('set_active_search_dvms', dvms) + + + } catch (error) { + console.log("Error: ", error); + } + + + } + + + + + + + + + /* try { + console.log("7000: ", event.content); + console.log("DVM: " + event.author.toHex()) + + miniToastr.showMessage("DVM: " + dvmname, event.content, VueNotifications.types.info) } catch (error) { console.log("Error: ", error); - } - } + } */ + else if(event.kind === 6302) { let entries = [] console.log("6302:", event.content); - miniToastr.showMessage("DVM: " + dvmname, "Received Results", VueNotifications.types.success) + //miniToastr.showMessage("DVM: " + dvmname, "Received Results", VueNotifications.types.success) let event_etags = JSON.parse(event.content) for (let etag of event_etags){ const eventid = EventId.fromHex(etag[1]) @@ -190,6 +276,13 @@ async function listen() { } + + const index = dvms.indexOf((dvms.find(i => i.id === event.author.toHex()))); + if (index > -1) { + dvms.splice(index, 1); + } + + store.commit('set_active_search_dvms', dvms) console.log("Events from" + event.author.toHex()) console.log(items) store.commit('set_search_results', items) @@ -245,8 +338,38 @@ defineProps({ - +
{{ dvm.about }}
+ +