diff --git a/ui/noogle/public/shipyard.ico b/ui/noogle/public/shipyard.ico new file mode 100644 index 0000000..19ef70a Binary files /dev/null and b/ui/noogle/public/shipyard.ico differ diff --git a/ui/noogle/src/components/ImageGeneration.vue b/ui/noogle/src/components/ImageGeneration.vue index 60d3fa2..0829c7f 100644 --- a/ui/noogle/src/components/ImageGeneration.vue +++ b/ui/noogle/src/components/ImageGeneration.vue @@ -11,7 +11,7 @@ import { EventBuilder, Tag, EventId, - Nip19Event, Alphabet, Keys + Nip19Event, Alphabet, Keys, nip04_decrypt, SecretKey } from "@rust-nostr/nostr-sdk"; import store from '../store'; import miniToastr from "mini-toastr"; @@ -26,6 +26,8 @@ import amberSignerService from "./android-signer/AndroidSigner"; let dvms =[] let searching = false + + let listener = false let hasmultipleinputs = false @@ -60,6 +62,52 @@ async function post_note(note){ await client.publishTextNote(note, tags); } } + +async function schedule(note) { + + + let schedule = Timestamp.fromSecs(datetopost.value/1000) + let humandatetime = schedule.toHumanDatetime() + let time = humandatetime.split("T")[1].split("Z")[0].trim() + let date = humandatetime.split("T")[0].split("-")[2].trim() + "." + humandatetime.split("T")[0].split("-")[1].trim() + "." + humandatetime.split("T")[0].split("-")[0].trim().slice(2) + + console.log("Date: " + date + " Time: "+ time ) + + let client = store.state.client + let signer = store.state.signer + + let noteevent = EventBuilder.textNote(note, []).customCreatedAt(schedule).toUnsignedEvent(store.state.pubkey) + let signedEvent = await signer.signEvent(noteevent) + + let stringifiedevent = signedEvent.asJson() + + let tags_str = [] + let tag = Tag.parse(["i", stringifiedevent, "text"]) + tags_str.push(tag.asVec()) + let tags_as_str = JSON.stringify(tags_str) + + + let content = await signer.nip04Encrypt(PublicKey.parse("85c20d3760ef4e1976071a569fb363f4ff086ca907669fb95167cdc5305934d1"), tags_as_str) + + let tags_t = [] + tags_t.push(Tag.parse(["p", "85c20d3760ef4e1976071a569fb363f4ff086ca907669fb95167cdc5305934d1"])) + tags_t.push(Tag.parse(["encrypted"])) + tags_t.push(Tag.parse(["client", "noogle"])) + + + let evt = new EventBuilder(5905, content, tags_t) + console.log(evt) + let res = await client.sendEventBuilder(evt); + console.log(res) + miniToastr.showMessage("Note scheduled for " + ("Date: " + date + " Time: "+ time )) + + + + +} + + + async function generate_image(message) { try { @@ -145,7 +193,7 @@ async function listen() { let client = store.state.client let pubkey = store.state.pubkey - const filter = new Filter().kinds([7000, 6100]).pubkey(pubkey).since(Timestamp.now()); + const filter = new Filter().kinds([7000, 6100, 6905]).pubkey(pubkey).since(Timestamp.now()); await client.subscribe([filter]); const handle = { @@ -156,6 +204,7 @@ async function listen() { } //const dvmname = getNamefromId(event.author.toHex()) console.log("Received new event from", relayUrl); + console.log(event.asJson()) let resonsetorequest = false sleep(1000).then(async () => { for (let tag in event.tags) { @@ -235,7 +284,12 @@ async function listen() { } - } else if (event.kind === 6100) { + } + else if (event.kind === 6905) { + console.log(event.content) + + } + else if (event.kind === 6100) { let entries = [] console.log("6100:", event.content); @@ -353,22 +407,27 @@ defineProps({ import { ref } from "vue"; import ModalComponent from "../components/Newnote.vue"; import VueDatePicker from "@vuepic/vue-datepicker"; +import {timestamp} from "@vueuse/core"; const isModalOpened = ref(false); const modalcontent = ref(""); +const datetopost = ref(Date.now()); const openModal = result => { + datetopost.value = Date.now(); isModalOpened.value = true; modalcontent.value = result }; const closeModal = () => { isModalOpened.value = false; + console.log(datetopost.value) }; const submitHandler = async () => { - await post_note(modalcontent) + // await post_note(modalcontent) + await schedule(modalcontent, Timestamp.now()) } @@ -410,8 +469,35 @@ const submitHandler = async () => { - - + + + +
@@ -464,98 +550,12 @@ const submitHandler = async () => { - -
- -