When a tap selects for an id, any event that has a 'p' tags with that id will be included.

This commit is contained in:
Robert C. Martin 2022-06-17 15:15:06 -05:00
parent 672c5ce69a
commit 2094c656b3
2 changed files with 21 additions and 6 deletions

View File

@ -264,6 +264,15 @@
filter-results (map #(boolean (should-add-event? filter %)) events)]
(should= [true false true] filter-results)))
(it "allows selected pubkeys when mentioned in p tags"
(let [events [{:id 1 :pubkey 10}
{:id 2 :pubkey 20 :tags [[:p (hexify 50)]]}
{:id 3 :pubkey 30}]
filter {:selected [50]
:blocked []}
filter-results (map #(boolean (should-add-event? filter %)) events)]
(should= [false true false] filter-results)))
(it "allows events that have a selected id at the root of a thread."
(let [events [{:id 1 :tags [[:e "10" ""]]}
{:id 2 :tags [[:e "11" ""]]}

View File

@ -5,7 +5,9 @@
[more-speech.ui.formatters :as formatters]
[more-speech.config :as config]
[more-speech.ui.swing.article-panel :as article-panel]
[more-speech.ui.swing.ui-context :refer :all])
[more-speech.ui.swing.ui-context :refer :all]
[clojure.set :as set]
[more-speech.nostr.util :as util])
(:use [seesaw core font tree])
(:import (javax.swing.tree DefaultMutableTreeNode DefaultTreeModel TreePath)))
@ -72,16 +74,20 @@
(declare add-references resolve-any-orphans)
(defn should-add-event? [filter event]
(let [selected (:selected filter)
blocked (:blocked filter)
[root _mentions _referent] (events/get-references event)]
(defn should-add-event? [filters event]
(let [selected (:selected filters)
blocked (:blocked filters)
[root _mentions _referent] (events/get-references event)
tags (:tags event)
ptags (filter #(= :p (first %)) tags)
pubkey-citings (map #(util/hex-string->num (second %)) ptags)]
(and
(or
(empty? selected)
(some #(= % (:pubkey event)) selected)
(some #(= % (:id event)) selected)
(some #(= % root) selected))
(some #(= % root) selected)
(not-empty (set/intersection (set pubkey-citings) (set selected))))
(not
(or
(some #(= % (:pubkey event)) blocked)