mirror of
https://github.com/believethehype/nostrdvm.git
synced 2025-04-08 11:58:04 +02:00
noogle: new search status ui showing dvms, other fixes
This commit is contained in:
parent
f0ebf1dc03
commit
2d04e5a778
@ -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);
|
||||
|
@ -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 = []
|
||||
|
@ -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({
|
||||
<input class="c-Input" autofocus placeholder="Search..." v-model="message" @keyup.enter="send_search_request(message)" @keydown.enter="nextInput">
|
||||
<button class="v-Button" @click="send_search_request(message)">Search the Nostr</button>
|
||||
</h3>
|
||||
|
||||
</div>
|
||||
<div class="max-w-5xl relative space-y-3">
|
||||
|
||||
<div class="grid grid-cols-1 gap-6">
|
||||
<div className="card w-30 h-60 bg-base-100 shadow-xl" v-for="dvm in store.state.activesearchdvms"
|
||||
:key="dvm.name">
|
||||
<div className="card-body">
|
||||
<div class="grid grid-cols-2 gap-6">
|
||||
|
||||
<div className="col-end-1">
|
||||
<h2 className="card-title">{{ dvm.name }}</h2>
|
||||
|
||||
<figure v-if="dvm.image!=''" className="w-40"><img className="h-30" :src="dvm.image" alt="DVM Picture" /></figure>
|
||||
</div>
|
||||
|
||||
<div className="col-end-2 w-auto">
|
||||
<p > {{ dvm.about }}</p>
|
||||
|
||||
<div><br>
|
||||
<span className="loading loading-dots loading-lg" ></span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
@ -14,6 +14,7 @@ const store = createStore({
|
||||
imagehasEventListener: false,
|
||||
imagedvmreplies: [],
|
||||
nip89dvms: [],
|
||||
activesearchdvms: [],
|
||||
results: [],
|
||||
relays: ["wss://relay.damus.io", "wss://nos.lol", "wss://pablof7z.nostr1.com", "wss://relay.nostr.net", "wss://relay.nostr.net", "wss://relay.nostr.band", "wss://nostr-pub.wellorder.net"],
|
||||
}
|
||||
@ -44,7 +45,11 @@ const store = createStore({
|
||||
state.nip89dvms.push.apply(state.nip89dvms, nip89dvmssorted)
|
||||
},
|
||||
set_current_request_id_search(state, requestid){
|
||||
state.requestidSearch = requestid
|
||||
state.requestidSearch = String(requestid)
|
||||
},
|
||||
set_active_search_dvms(state, dvms) {
|
||||
state.activesearchdvms.length = 0
|
||||
state.activesearchdvms.push.apply(state.activesearchdvms, dvms)
|
||||
},
|
||||
set_current_request_id_image(state, requestid){
|
||||
state.requestidImage = requestid
|
||||
|
Loading…
x
Reference in New Issue
Block a user