diff --git a/src/ied/events.cljs b/src/ied/events.cljs index 7590c46..229721b 100644 --- a/src/ied/events.cljs +++ b/src/ied/events.cljs @@ -447,9 +447,17 @@ (let [query ["REQ" "RAND42" {:ids event-ids}]] - {::request-from-relay [sockets query]}))) +(re-frame/reg-event-fx + ::query-for-d-tag + (fn [db [_ [sockets d-tags]]] + (let [query ["REQ" + "RAND42" + {:#d d-tags}]] + {::request-from-relay [sockets query]}))) + + (defn cleanup-list-name [s] (-> s (str/replace #"\s" "-") diff --git a/src/ied/subs.cljs b/src/ied/subs.cljs index a5fb099..dca40ce 100644 --- a/src/ied/subs.cljs +++ b/src/ied/subs.cljs @@ -32,9 +32,14 @@ (first (filter #(= (:id %) id) (:events db))))) (re-frame/reg-sub - ::events-by-d-tag - (fn [db [_ d]] - (sort-by :created_at #(> %1 %2) (filter #(= d (nostr/get-d-id-from-event %)) (:events db))))) + ::events-by-d-tag + :<- [::sockets] + :<- [::events] + (fn [[sockets events] [_ d]] + (let [filtered-events (filter #(= d (nostr/get-d-id-from-event %)) events)] + (if-not (empty? filtered-events) + (sort-by :created_at #(> %1 %2) filtered-events) + (re-frame/dispatch [::events/query-for-d-tag [sockets [d]]]))))) (re-frame/reg-sub ::metadata-events @@ -313,29 +318,28 @@ (re-frame/dispatch [::events/load-profile pubkey]))) profiles))) ;; unique profiles -(re-frame/reg-sub - ::md-form-image - (fn [db _] - (-> db :md-form-resource :image))) +(re-frame/reg-sub + ::md-form-image + (fn [db _] + (-> db :md-form-resource :image))) (re-frame/reg-sub - ::selected-md-scheme - (fn [db] - (:selected-md-scheme db))) + ::selected-md-scheme + (fn [db] + (:selected-md-scheme db))) (re-frame/reg-sub - ::md-form-resource - (fn [db] - (:md-form-resource db))) + ::md-form-resource + (fn [db] + (:md-form-resource db))) (re-frame/reg-sub - ::user-language - (fn [db] - (:user-language db))) + ::user-language + (fn [db] + (:user-language db))) (comment @(re-frame/subscribe [::profile "1c5ff3caacd842c01dca8f378231b16617516d214da75c7aeabbe9e1efe9c0f6"]) - - @(re-frame/subscribe [::md-form-resource]) - @(re-frame/subscribe [::md-form-image]) - ) + + @(re-frame/subscribe [::md-form-resource]) + @(re-frame/subscribe [::md-form-image])) diff --git a/src/ied/views/resource.cljs b/src/ied/views/resource.cljs index c9ef140..9ea3d50 100644 --- a/src/ied/views/resource.cljs +++ b/src/ied/views/resource.cljs @@ -11,31 +11,28 @@ (let [route-params @(re-frame/subscribe [::subs/route-params]) naddr (:naddr route-params) data (nostr/decode-naddr naddr) - events-with-same-d (re-frame/subscribe [::subs/events-by-d-tag (:identifier data)]) - latest-event (first @events-with-same-d) - _ (.log js/console "events with same d id" (clj->js @events-with-same-d)) - ; _ (.log js/) - ] - - [:div - (case (:kind data) - 30142 [:div {:class "flex flex-col"} - [:img {:class "w-full object-contain bg-transparent max-h-[40vh] " - :src (nostr/get-image-from-metadata-event latest-event)}] - [:h1 {:class "text-2xl font-bold"} (nostr/get-name-from-metadata-event latest-event)] - [:div - (resource-component/skos-tags [@events-with-same-d "about"])] + events-with-same-d (re-frame/subscribe [::subs/events-by-d-tag (:identifier data)])] + (fn [] + (let [latest-event (first @events-with-same-d)] + [:div + (case (:kind latest-event) + 30142 [:div {:class "flex flex-col"} + [:img {:class "w-full object-contain bg-transparent max-h-[40vh] " + :src (nostr/get-image-from-metadata-event latest-event)}] + [:h1 {:class "text-2xl font-bold"} (nostr/get-name-from-metadata-event latest-event)] + [:div + (resource-component/skos-tags [@events-with-same-d "about"])] ;; Keywords - [:div - (doall - (for [kw (nostr/get-keywords-from-metadata-event latest-event)] - (resource-components/keywords-component kw)))] + [:div + (doall + (for [kw (nostr/get-keywords-from-metadata-event latest-event)] + (resource-components/keywords-component kw)))] ;; Author - [:div {:class "ml-auto mr-0 my-2"} - (resource-component/authors-component latest-event)] - [:p (nostr/get-description-from-metadata-event latest-event)]] + [:div {:class "ml-auto mr-0 my-2"} + (resource-component/authors-component latest-event)] + [:p (nostr/get-description-from-metadata-event latest-event)]] - [:p "Dunno how to render that, sorry 🤷"])])) + [:p "Dunno how to render that, sorry 🤷"])])))) (comment (re-frame/subscribe [::subs/events-by-d-tag "https://langsci-press.org/catalog/book/406"]))