Get rid of :read-event-ids altogether. Replace with :read tag in the events.

This commit is contained in:
Robert C. Martin 2023-01-26 13:38:39 -06:00
parent 967316ebb3
commit cfa8f915fd
6 changed files with 33 additions and 32 deletions

View File

@ -331,26 +331,26 @@
(context "selecting nodes"
(with-stubs)
(with db (in-memory/get-db))
(before (in-memory/clear-db @db))
(it "remembers which articles have been read and loads article"
(with-redefs
[article-panel/load-article-info
(stub :load-article-info {:return nil})]
(let [event-context (atom {:read-event-ids #{}
:selected-event nil
:event-history []
:back-count 1})
_ (reset! ui-context {:event-context event-context})
selected-event-id 1
(let [selected-event-id 1
_ (set-mem :back-count 1)
_ (gateway/add-event @db selected-event-id {:content "event"})
selected-node (DefaultMutableTreeNode. selected-event-id)
tab-index 0
_ (select-article tab-index selected-node)
event-state @event-context
read-event-ids (:read-event-ids event-state)
selected-event (:selected-event event-state)
event-history (:event-history event-state)
back-count (:back-count event-state)]
selected-event (get-mem :selected-event)
event-history (get-mem :event-history)
back-count (get-mem :back-count)
event (gateway/get-event @db selected-event-id)]
(should (:read event))
(should-have-invoked :load-article-info {:with [selected-event-id]})
(should= read-event-ids #{selected-event-id})
(should= selected-event selected-event-id)
(should= [[tab-index selected-event-id]] event-history)
(should= 0 back-count))))))

View File

@ -18,10 +18,6 @@
(spit @config/profiles-filename
(with-out-str
(clojure.pprint/pprint (get-event-state :profiles))))
(prn 'writing-read-events)
(spit @config/read-event-ids-filename
(with-out-str
(clojure.pprint/pprint (get-event-state :read-event-ids))))
(prn 'writing-relays)
(spit @config/relays-filename
@ -54,7 +50,6 @@
(defn load-configuration []
(let [keys (read-string (slurp @config/keys-filename))
pubkey (util/hex-string->num (:public-key keys))
read-event-ids (read-string (slurp @config/read-event-ids-filename))
profiles (read-string (slurp @config/profiles-filename))
tabs-list (tabs/ensure-tab-list-has-all
(read-string (slurp @config/tabs-list-filename)))
@ -65,7 +60,6 @@
event-context (events/make-event-context {:keys keys
:pubkey pubkey
:profiles profiles
:read-event-ids read-event-ids
:tabs-list tabs-list
:user-configuration user-configuration
:contact-lists contact-lists

View File

@ -5,6 +5,7 @@
(defmulti event-exists? (fn [db _id] (::type db)))
(defmulti add-event (fn [db _id _event] (::type db)))
(defmulti get-event (fn [db _id] (::type db)))
(defmulti update-event-as-read (fn [db _id] (::type db)))
(defmulti add-relays-to-event (fn [db _id _relays] (::type db)))
(defmulti add-reference-to-event (fn [db _id _reference] (::type db)))
(defmulti add-contacts (fn [db _user-id _contacts] (::type db)))

View File

@ -17,6 +17,9 @@
(defmethod gateway/get-event ::type [db id]
(get-in @(:data db) [:text-event-map id]))
(defmethod gateway/update-event-as-read ::type [db id]
(swap! (:data db) assoc-in [:text-event-map id :read] true))
(defmethod gateway/add-relays-to-event ::type [db id relays]
(swap! (:data db) update-in [:text-event-map id :relays] concat relays))

View File

@ -36,7 +36,6 @@
(s/def ::public-key string?)
(s/def ::private-key string?)
(s/def ::keys (s/keys :req-un [::name ::about ::picture ::public-key ::private-key]))
(s/def ::read-event-ids (s/coll-of ::id :kind set?))
(s/def ::selected (s/coll-of ::id))
(s/def ::blocked (s/coll-of ::id))
(s/def ::tab (s/keys :req-un [::name ::selected ::blocked]))
@ -49,7 +48,6 @@
(s/def ::event-context (s/keys :req-un [::text-event-map
::profiles
::keys
::read-event-ids
::tabs-list
::selected-event
::event-history
@ -60,7 +58,6 @@
(atom (merge {:text-event-map {}
:profiles {}
:keys {}
:read-event-ids #{}
:tabs-list []
:event-history []
:back-count 0
@ -150,11 +147,18 @@
[root _ _] (get-references event)]
(if (some? root) root id)))
(defn select-event [event-state tab-index id]
(defn update-event-history [item]
(set-mem :event-history (conj (get-mem :event-history) item)))
(defn select-event [tab-index id]
(swap! ui-context assoc :selected-tab tab-index)
(if-not (:backing-up event-state)
(-> event-state
(update :read-event-ids conj id)
(update :event-history conj [tab-index id])
(assoc :selected-event id :back-count 0))
(-> event-state (assoc :selected-event id :backing-up false))))
(if-not (get-mem :backing-up)
(do
(gateway/update-event-as-read (get-db) id)
(update-event-history [tab-index id])
(set-mem :selected-event id)
(set-mem :back-count 0)
)
(do
(set-mem :selected-event id)
(set-mem :backing-up false))))

View File

@ -99,9 +99,8 @@
(defn select-article
[tab-index selected-node]
(let [selected-id (.getUserObject selected-node)
event-context (:event-context @ui-context)]
(swap! event-context events/select-event tab-index selected-id)
(let [selected-id (.getUserObject selected-node)]
(events/select-event tab-index selected-id)
(article-panel/load-article-info selected-id)))
(defn node-selected [tab-index e]
@ -117,7 +116,7 @@
(let [node (:value info)
event-id (.getUserObject node)
event (gateway/get-event (get-db) event-id)
read? (contains? (get-event-state :read-event-ids) event-id)
read? (:read event)
font (if read? (uconfig/get-default-font) (uconfig/get-bold-font))
color (if (= (:kind event) 4) :blue :black)]
(config! widget :font font :foreground color)