From 5fb7aef49b4110b0a7e48d01b04170616231da0e Mon Sep 17 00:00:00 2001 From: Believethehype <1097224+believethehype@users.noreply.github.com> Date: Thu, 4 Apr 2024 15:53:39 +0200 Subject: [PATCH] rating for image dvms / fixes --- ...t_discovery_currently_popular_followers.py | 4 +- ui/noogle/src/components/ImageGeneration.vue | 49 ++++++++++++- ui/noogle/src/components/Login.vue | 33 ++++----- ui/noogle/src/components/Search.vue | 17 +++-- ui/noogle/src/components/helper/Helper.vue | 72 ++++++++++++++++++- 5 files changed, 145 insertions(+), 30 deletions(-) diff --git a/nostr_dvm/tasks/content_discovery_currently_popular_followers.py b/nostr_dvm/tasks/content_discovery_currently_popular_followers.py index e8dc079..ebc77eb 100644 --- a/nostr_dvm/tasks/content_discovery_currently_popular_followers.py +++ b/nostr_dvm/tasks/content_discovery_currently_popular_followers.py @@ -96,8 +96,8 @@ class DicoverContentCurrentlyPopularFollowers(DVMTaskInterface): database = NostrDatabase.sqlite("db/nostr_recent_notes2.db") cli = ClientBuilder().database(database).signer(signer).opts(opts).build() cli.add_relay("wss://relay.damus.io") - cli.add_relay( "wss://nos.lol") - cli.add_relay( "wss://pablof7z.nostr1.com") + cli.add_relay("wss://nos.lol") + cli.add_relay("wss://pablof7z.nostr1.com") cli.connect() diff --git a/ui/noogle/src/components/ImageGeneration.vue b/ui/noogle/src/components/ImageGeneration.vue index 03cad42..55c264d 100644 --- a/ui/noogle/src/components/ImageGeneration.vue +++ b/ui/noogle/src/components/ImageGeneration.vue @@ -26,7 +26,7 @@ import { ref } from "vue"; import ModalComponent from "../components/Newnote.vue"; import VueDatePicker from "@vuepic/vue-datepicker"; import {timestamp} from "@vueuse/core"; -import {post_note, schedule, copyinvoice, copyurl, sleep, nextInput, get_user_infos} from "../components/helper/Helper.vue" +import {post_note, schedule, react_to_dvm, copyinvoice, copyurl, sleep, nextInput, get_user_infos, dvmreactions} from "../components/helper/Helper.vue" import {zap, createBolt11Lud16, zaprequest} from "../components/helper/Zap.vue" import StringUtil from "@/components/helper/string.ts"; @@ -160,6 +160,7 @@ async function listen() { amount: 0, bolt11: "", nip90params: {}, + } for (const tag in event.tags) { @@ -219,6 +220,10 @@ async function listen() { jsonentry.about = el.about jsonentry.image = el.image jsonentry.nip90Params = el.nip90Params + jsonentry.reactions = await dvmreactions(PublicKey.parse(el.id)) + jsonentry.reactions.negativeUser = false + jsonentry.reactions.positiveUser = false + jsonentry.event = Event.fromJson(el.event) } @@ -410,8 +415,14 @@ const submitHandler = async () => {
DVM Picture
+ +
+ + + +
-
+ +
+ + + + +
+ + +
+ + +
+ +
+ +
+

{{dvm.reactions.positive.length}} + + {{dvm.reactions.negative.length}} + +

+ +
+ + diff --git a/ui/noogle/src/components/Login.vue b/ui/noogle/src/components/Login.vue index f96d493..422c018 100644 --- a/ui/noogle/src/components/Login.vue +++ b/ui/noogle/src/components/Login.vue @@ -199,7 +199,7 @@ import nip49, {decryptwrapper} from "./android-signer/helpers/nip49"; import { init as initNostrLogin } from "nostr-login" import { launch as launchNostrLoginDialog } from "nostr-login" import { logout as logoutNostrLogin } from "nostr-login" -import {parseandreplacenpubs, hasActiveSubscription} from "@/components/helper/Helper.vue" +import {parseandreplacenpubs, hasActiveSubscription, dvmreactions} from "@/components/helper/Helper.vue" import {loadNWCObject} from "@/components/helper/Zap.vue" import {useDark, useToggle} from "@vueuse/core"; import {ref} from "vue"; @@ -809,18 +809,8 @@ export default { relay: tag.asVec()[2], split: tag.asVec()[3] } - - // TODO only use first tag for now, add others later. - // if(tag.asVec()[1] !== "" ){ - nip88.zaps.push(zap) - // } - - + nip88.zaps.push(zap) } - - - - } let subscription_status = await hasActiveSubscription(store.state.pubkey.toHex(), nip88.d, evt.author.toHex()) @@ -828,21 +818,24 @@ export default { nip88.subscribedUntil = subscription_status.validUntil nip88.subscriptionId = subscription_status.subscriptionId nip88.expires = subscription_status.expires - console.log(subscription_status) + // console.log(subscription_status) jsonentry.nip88 = nip88 - console.log(jsonentry.nip88) + // console.log(jsonentry.nip88) } } + //jsonentry.reactions = await dvmreactions(entry.author.toHex()) + // console.log("REACTIONS:" + jsonentry.reactions) jsonentry.id = entry.author.toHex() jsonentry.about = await parseandreplacenpubs(jsonentry.about) jsonentry.event = entry.asJson() jsonentry.kind = entry.tags[tag].asVec()[1] + //jsonentry.nip90Params = JSON.parse(jsonentry.nip90Params) nip89dvms.push(jsonentry); @@ -866,10 +859,11 @@ export default { let dbclient = Client let keys = Keys.parse(store.state.nooglekey) let db = NostrDatabase.indexeddb("profiles"); - let signer = NostrSigner.keys(keys) //TODO store keys + let signer = NostrSigner.keys(keys) dbclient = new ClientBuilder().signer(signer).database(await db).build() await dbclient.addRelay("wss://relay.damus.io"); + await dbclient.addRelay( "wss://purplepag.es"); await dbclient.connect() store.commit('set_dbclient', dbclient) let direction = NegentropyDirection.Down; @@ -879,21 +873,24 @@ export default { let followings = [] let followers_filter = new Filter().author(publicKey).kind(3).limit(1) let followers = await dbclient.getEventsOf([followers_filter], Duration.fromSecs(5)) - + console.log(followers) if (followers.length > 0){ for (let tag of followers[0].tags) { if (tag.asVec()[0] === "p") { let following = tag.asVec()[1] - followings.push(PublicKey.fromHex(following)) + followings.push(PublicKey.parse(following)) } } } console.log("Followings: " + (followings.length).toString()) - + console.log(followings) let filter = new Filter().kind(0).authors(followings) + + await dbclient.reconcile(filter, opts); + console.log("Done syncing profiles") } }, diff --git a/ui/noogle/src/components/Search.vue b/ui/noogle/src/components/Search.vue index 0e2a3d2..4a481b1 100644 --- a/ui/noogle/src/components/Search.vue +++ b/ui/noogle/src/components/Search.vue @@ -403,16 +403,19 @@ async function get_user_from_search(name){ console.log("not logged in, not getting profile suggestions") return [] } - let dbclient = store.state.dbclient + let client = store.state.dbclient let profiles = [] - let filter1 = new Filter().kind(0).search(name) - let evts = await dbclient.database.query([filter1]) - - for (const entry of evts){ + let filter1 = new Filter().kind(0) + let evts = await client.database.query([filter1]) + console.log(evts.length) + for (const entry of evts){ try{ - let contentjson = JSON.parse(entry.content) - //console.log(entry.content) + + let contentjson = JSON.parse(entry.content) + console.log(entry.content) profiles.push({profile: contentjson, author: entry.author.toBech32(), createdAt: entry.createdAt}); + + } catch(error){ console.log(error) diff --git a/ui/noogle/src/components/helper/Helper.vue b/ui/noogle/src/components/helper/Helper.vue index 20af057..01ead3c 100644 --- a/ui/noogle/src/components/helper/Helper.vue +++ b/ui/noogle/src/components/helper/Helper.vue @@ -45,7 +45,21 @@ export async function post_note(note){ await client.publishTextNote(note, tags); } } +export async function react_to_dvm(dvm, reaction) { + let client = store.state.client + let event = EventBuilder.reaction(dvm.event, reaction) + let requestid = await client.sendEventBuilder(event); + if (reaction === "👎"){ + dvm.reactions.negativeUser = true + dvm.reactions.negative.push(store.state.pubkey.toHex()) + } + else { + dvm.reactions.positiveUser = true + dvm.reactions.positive.push(store.state.pubkey.toHex()) + } + +} export async function schedule(note, datetopost) { @@ -69,7 +83,7 @@ export async function schedule(note, datetopost) { tags_str.push(tag.asVec()) let tags_as_str = JSON.stringify(tags_str) - + //shipyard dvm by default let content = await signer.nip04Encrypt(PublicKey.parse("85c20d3760ef4e1976071a569fb363f4ff086ca907669fb95167cdc5305934d1"), tags_as_str) let tags_t = [] @@ -367,7 +381,63 @@ export async function fetchAsync (url) { return data; } +export async function dvmreactions(dvmid) { + let reactions = { + positive: [], + negative: [], + positiveUser: false, + negativeUser: false + } + let client = store.state.client + + if (store.state.dbclient.database === undefined){ + console.log("not logged in, not getting profile suggestions") + return [] + } + let dbclient = store.state.dbclient + let profiles = [] + let filter1 = new Filter().kind(0) + let users = await dbclient.database.query([filter1]) + + console.log(users) + + let authors = [] + for (const entry of users){ + authors.push(entry.author) + } + + + let reactionfilter = new Filter().kind(7).pubkey (dvmid).authors(authors).since(Timestamp.fromSecs(Timestamp.now().asSecs() - 60*60*24*60)) // reactions by our followers in the last 2 months + let evts = await client.getEventsOf([reactionfilter], Duration.fromSecs(5)) + + console.log(evts) + if (evts.length > 0){ + for (let reaction of evts){ + if (reaction.content === "👎"){ + reactions.negative.push(reaction.author.toHex()) + /*if (reaction.author.toHex() === store.state.pubkey.toHex()){ + reactions.negativeUser = true + }*/ + } + + else{ + reactions.positive.push(reaction.author.toHex()) + // if (reaction.author.toHex() === store.state.pubkey.toHex()){ + //reactions.positiveUser = true + // } + + } + + } + + + } + + + + return reactions +} export async function hasActiveSubscription(pubkeystring, tiereventdtag, tierauthorid) {