mirror of
https://github.com/edufeed-org/edufeed-web.git
synced 2025-12-10 16:54:37 +00:00
anonymous posting possible
This commit is contained in:
parent
960200d410
commit
ce5916e692
2 changed files with 32 additions and 22 deletions
|
|
@ -12,8 +12,7 @@
|
||||||
[clojure.string :as str]
|
[clojure.string :as str]
|
||||||
[clojure.set :as set]
|
[clojure.set :as set]
|
||||||
|
|
||||||
["js-confetti" :as jsConfetti]
|
["js-confetti" :as jsConfetti]))
|
||||||
))
|
|
||||||
|
|
||||||
(def list-kinds [30001 30004])
|
(def list-kinds [30001 30004])
|
||||||
|
|
||||||
|
|
@ -196,15 +195,18 @@
|
||||||
:content ""
|
:content ""
|
||||||
:tags [["d" (:id resource)]
|
:tags [["d" (:id resource)]
|
||||||
["author" "" (:author resource)]]}]
|
["author" "" (:author resource)]]}]
|
||||||
{::sign-and-publish-event event})))
|
{::sign-and-publish-event [event (:sk cofx)]})))
|
||||||
|
|
||||||
;; TODO maybe we need some validation before publishing
|
;; TODO maybe we need some validation before publishing
|
||||||
(re-frame/reg-fx
|
(re-frame/reg-fx
|
||||||
::sign-and-publish-event
|
::sign-and-publish-event
|
||||||
(fn [unsignedEvent]
|
(fn [[unsignedEvent sk]]
|
||||||
(if (nostr/valid-unsigned-nostr-event? unsignedEvent)
|
(if (nostr/valid-unsigned-nostr-event? unsignedEvent)
|
||||||
(p/let [_ (js/console.log (clj->js unsignedEvent))
|
(p/let [_ (js/console.log (clj->js unsignedEvent))
|
||||||
signedEvent (.nostr.signEvent js/window (clj->js unsignedEvent))
|
_ (js/console.log (nostr/sk-as-hex sk))
|
||||||
|
signedEvent (if (nil? sk)
|
||||||
|
(.nostr.signEvent js/window (clj->js unsignedEvent))
|
||||||
|
(nostr/finalize-event unsignedEvent sk))
|
||||||
_ (js/console.log "Signed event: " (clj->js signedEvent))]
|
_ (js/console.log "Signed event: " (clj->js signedEvent))]
|
||||||
(re-frame/dispatch [::send-to-relays signedEvent]))
|
(re-frame/dispatch [::send-to-relays signedEvent]))
|
||||||
(.error js/console "Event is not a valid nostr event: " (clj->js unsignedEvent)))))
|
(.error js/console "Event is not a valid nostr event: " (clj->js unsignedEvent)))))
|
||||||
|
|
@ -236,6 +238,16 @@
|
||||||
(fn [cofx _data] ;; _data unused
|
(fn [cofx _data] ;; _data unused
|
||||||
(assoc cofx :now (quot (.now js/Date) 1000))))
|
(assoc cofx :now (quot (.now js/Date) 1000))))
|
||||||
|
|
||||||
|
(re-frame/reg-cofx
|
||||||
|
:sk
|
||||||
|
(fn [cofx _]
|
||||||
|
(assoc cofx :sk (:sk cofx))))
|
||||||
|
|
||||||
|
(re-frame/reg-cofx
|
||||||
|
:pk
|
||||||
|
(fn [cofx _]
|
||||||
|
(assoc cofx :pk (:pk cofx))))
|
||||||
|
|
||||||
(defn convert-amb-to-nostr-event
|
(defn convert-amb-to-nostr-event
|
||||||
[json-string created_at]
|
[json-string created_at]
|
||||||
(let [parsed-json (js->clj (js/JSON.parse json-string) :keywordize-keys true)
|
(let [parsed-json (js->clj (js/JSON.parse json-string) :keywordize-keys true)
|
||||||
|
|
@ -258,7 +270,7 @@
|
||||||
[(re-frame/inject-cofx :now)]
|
[(re-frame/inject-cofx :now)]
|
||||||
(fn-traced [cofx [_ json-string]]
|
(fn-traced [cofx [_ json-string]]
|
||||||
(let [event (convert-amb-to-nostr-event json-string (:now cofx))]
|
(let [event (convert-amb-to-nostr-event json-string (:now cofx))]
|
||||||
{::sign-and-publish-event event})))
|
{::sign-and-publish-event [event (-> cofx :db :sk)]})))
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::toggle-selected-events
|
::toggle-selected-events
|
||||||
|
|
@ -294,7 +306,7 @@
|
||||||
:created_at (:now cofx)
|
:created_at (:now cofx)
|
||||||
:content ""
|
:content ""
|
||||||
:tags new-tags}]
|
:tags new-tags}]
|
||||||
{::sign-and-publish-event event})))
|
{::sign-and-publish-event [event (:sk cofx)]})))
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::add-metadata-events-to-lists
|
::add-metadata-events-to-lists
|
||||||
|
|
@ -366,7 +378,7 @@
|
||||||
:created_at (:now cofx)
|
:created_at (:now cofx)
|
||||||
:content ""
|
:content ""
|
||||||
:tags tags}]
|
:tags tags}]
|
||||||
{::sign-and-publish-event create-list-event})))
|
{::sign-and-publish-event [create-list-event (:sk cofx)]})))
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::delete-list
|
::delete-list
|
||||||
|
|
@ -382,7 +394,7 @@
|
||||||
["a" (str (:kind l) ":" (:pubkey l) ":" (second (first (filter
|
["a" (str (:kind l) ":" (:pubkey l) ":" (second (first (filter
|
||||||
#(= "d" (first %))
|
#(= "d" (first %))
|
||||||
(:tags l)))))])]}]
|
(:tags l)))))])]}]
|
||||||
{::sign-and-publish-event deletion-event})))
|
{::sign-and-publish-event [deletion-event (:sk cofx)]})))
|
||||||
|
|
||||||
(re-frame/reg-event-db
|
(re-frame/reg-event-db
|
||||||
::toggle-show-lists-modal
|
::toggle-show-lists-modal
|
||||||
|
|
@ -412,7 +424,7 @@
|
||||||
:created_at (:now cofx)
|
:created_at (:now cofx)
|
||||||
:content ""
|
:content ""
|
||||||
:tags filtered-tags}]
|
:tags filtered-tags}]
|
||||||
{::sign-and-publish-event event})))
|
{::sign-and-publish-event [event (:sk cofx)]})))
|
||||||
|
|
||||||
(re-frame/reg-event-db
|
(re-frame/reg-event-db
|
||||||
::create-sk
|
::create-sk
|
||||||
|
|
@ -437,11 +449,8 @@
|
||||||
{::get-amb-json-from-uri uri}))
|
{::get-amb-json-from-uri uri}))
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::add-confetti
|
::add-confetti
|
||||||
(fn [_ _]
|
(fn [_ _]
|
||||||
;; Initialize jsConfetti instance if needed
|
(let [confetti-instance (new jsConfetti)]
|
||||||
(let [confetti-instance (new jsConfetti)]
|
(.addConfetti confetti-instance))
|
||||||
;; Trigger the confetti
|
{}))
|
||||||
(.addConfetti confetti-instance ))
|
|
||||||
;; No further effects needed
|
|
||||||
{}))
|
|
||||||
|
|
|
||||||
|
|
@ -34,10 +34,11 @@
|
||||||
hashArray (.from js/Array (new js/Uint8Array hash))
|
hashArray (.from js/Array (new js/Uint8Array hash))
|
||||||
byteArray (js/Uint8Array. hashArray)
|
byteArray (js/Uint8Array. hashArray)
|
||||||
hexArray (byte-array-to-hex byteArray)]
|
hexArray (byte-array-to-hex byteArray)]
|
||||||
|
(.log js/console hexArray)
|
||||||
hexArray))
|
hexArray))
|
||||||
|
|
||||||
(defn signEvent [hashedEvent sk]
|
(defn finalize-event [event sk]
|
||||||
(.sign secp hashedEvent sk))
|
(.finalizeEvent nostr (clj->js event) sk))
|
||||||
|
|
||||||
(defn generate-sk []
|
(defn generate-sk []
|
||||||
;; Generate a secure (private) key as byte array
|
;; Generate a secure (private) key as byte array
|
||||||
|
|
@ -105,7 +106,7 @@
|
||||||
|
|
||||||
(defn get-image-from-metadata-event [event]
|
(defn get-image-from-metadata-event [event]
|
||||||
(or (let [img-url (second (first (filter #(= "image" (first %)) (:tags event))))]
|
(or (let [img-url (second (first (filter #(= "image" (first %)) (:tags event))))]
|
||||||
(if (= "" img-url ) false img-url))
|
(if (= "" img-url) false img-url))
|
||||||
"/assets/edu-feed-logo.webp"))
|
"/assets/edu-feed-logo.webp"))
|
||||||
|
|
||||||
(defn get-description-from-metadata-event [event]
|
(defn get-description-from-metadata-event [event]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue