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.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) {