mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Refactoring. Extracted data-storage module in preparation for daily message files.
This commit is contained in:
parent
d19ab062c0
commit
db212d7c63
@ -19,7 +19,7 @@
|
||||
(def keys-filename (atom "private/keys"))
|
||||
(def relays-filename (atom "private/relays"))
|
||||
(def read-event-ids-filename (atom "private/read-event-ids"))
|
||||
(def tabs-filename (atom "private/tabs"))
|
||||
(def tabs-filename (atom "private/tabs")) ;grandfathered.
|
||||
(def tabs-list-filename (atom "private/tabs-list"))
|
||||
(def messages-directory (atom "private/messages"))
|
||||
(def messages-filename (atom "private/messages/message-file"))
|
||||
|
@ -3,76 +3,39 @@
|
||||
|
||||
(ns more-speech.core
|
||||
(:gen-class)
|
||||
(:require [clojure.core.async :as async]
|
||||
[more-speech.config :as config]
|
||||
(:require [more-speech.config :as config]
|
||||
[more-speech.nostr.protocol :as protocol]
|
||||
[more-speech.ui.swing.main-window :as swing]
|
||||
[more-speech.nostr.events :as events]
|
||||
[more-speech.nostr.relays :as relays]
|
||||
[more-speech.ui.swing.tabs :as tabs]
|
||||
[more-speech.ui.swing.ui-context :refer :all]
|
||||
[more-speech.migrator :as migrator])
|
||||
[more-speech.migrator :as migrator]
|
||||
[more-speech.data-storage :as data-storage]
|
||||
[clojure.core.async :as async])
|
||||
)
|
||||
|
||||
(def send-chan (async/chan))
|
||||
|
||||
(declare more-speech
|
||||
setup-jframe
|
||||
set-event-handler
|
||||
read-old-events)
|
||||
(declare set-event-handler)
|
||||
|
||||
(defn ^:export -main [& _args]
|
||||
(migrator/migrate-to config/migration-level)
|
||||
(let [keys (read-string (slurp @config/keys-filename))
|
||||
_ (relays/load-relays-from-file @config/relays-filename)
|
||||
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)))
|
||||
event-context (events/make-event-context {:keys keys
|
||||
:send-chan send-chan
|
||||
:profiles profiles
|
||||
:read-event-ids read-event-ids
|
||||
:tabs-list tabs-list
|
||||
})
|
||||
_ (swap! ui-context assoc :event-context event-context)
|
||||
handler (swing/setup-main-window)
|
||||
]
|
||||
|
||||
(data-storage/load-configuration)
|
||||
(let [event-context (:event-context @ui-context)
|
||||
handler (swing/setup-main-window)]
|
||||
(swap! event-context set-event-handler handler)
|
||||
(let [latest-old-message-time (read-old-events event-context handler)]
|
||||
(swap! event-context assoc :send-chan send-chan)
|
||||
(let [latest-old-message-time
|
||||
(if (not config/test-run?)
|
||||
(data-storage/read-old-events event-context handler)
|
||||
(-> (System/currentTimeMillis) (quot 1000) (- 86400)))]
|
||||
(protocol/get-events event-context latest-old-message-time))
|
||||
|
||||
(when (not config/test-run?)
|
||||
(spit @config/profiles-filename
|
||||
(with-out-str
|
||||
(clojure.pprint/pprint (:profiles @event-context))))
|
||||
(spit @config/read-event-ids-filename
|
||||
(with-out-str
|
||||
(clojure.pprint/pprint (:read-event-ids @event-context))))
|
||||
(spit @config/relays-filename
|
||||
(with-out-str
|
||||
(clojure.pprint/pprint (relays/relays-for-writing))))
|
||||
(spit @config/messages-filename
|
||||
(with-out-str
|
||||
(clojure.pprint/pprint (:text-event-map @event-context)))))
|
||||
|
||||
(data-storage/write-configuration)
|
||||
(data-storage/write-messages))
|
||||
(System/exit 1)))
|
||||
|
||||
(defn set-event-handler [event-state handler]
|
||||
(assoc event-state :event-handler handler))
|
||||
|
||||
(defn read-old-events [event-context handler]
|
||||
(let [old-events (vals (read-string (slurp @config/messages-filename)))
|
||||
creation-times (map :created-at old-events)]
|
||||
(when (not config/test-run?)
|
||||
(doseq [event old-events]
|
||||
(let [url (first (:relays event))]
|
||||
(swap! event-context events/add-event event url)
|
||||
(events/handle-text-event handler event))
|
||||
))
|
||||
(if (empty? creation-times)
|
||||
(-> (System/currentTimeMillis) (quot 1000) (- 86400))
|
||||
(apply max creation-times))))
|
||||
|
||||
|
||||
|
50
src/more_speech/data_storage.clj
Normal file
50
src/more_speech/data_storage.clj
Normal file
@ -0,0 +1,50 @@
|
||||
(ns more-speech.data-storage
|
||||
(:require [more-speech.config :as config]
|
||||
[more-speech.ui.swing.ui-context :refer :all]
|
||||
[more-speech.nostr.events :as events]
|
||||
[more-speech.nostr.relays :as relays]
|
||||
[more-speech.ui.swing.tabs :as tabs]))
|
||||
|
||||
|
||||
(defn write-configuration []
|
||||
(let [event-context (:event-context @ui-context)]
|
||||
(spit @config/profiles-filename
|
||||
(with-out-str
|
||||
(clojure.pprint/pprint (:profiles @event-context))))
|
||||
(spit @config/read-event-ids-filename
|
||||
(with-out-str
|
||||
(clojure.pprint/pprint (:read-event-ids @event-context))))
|
||||
(spit @config/relays-filename
|
||||
(with-out-str
|
||||
(clojure.pprint/pprint (relays/relays-for-writing))))))
|
||||
|
||||
(defn write-messages []
|
||||
(let [event-context (:event-context @ui-context)]
|
||||
(spit @config/messages-filename
|
||||
(with-out-str
|
||||
(clojure.pprint/pprint (:text-event-map @event-context))))))
|
||||
|
||||
(defn load-configuration []
|
||||
(let [keys (read-string (slurp @config/keys-filename))
|
||||
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)))
|
||||
event-context (events/make-event-context {:keys keys
|
||||
:profiles profiles
|
||||
:read-event-ids read-event-ids
|
||||
:tabs-list tabs-list
|
||||
})]
|
||||
(swap! ui-context assoc :event-context event-context)
|
||||
(relays/load-relays-from-file @config/relays-filename)))
|
||||
|
||||
(defn read-old-events [event-context handler]
|
||||
(let [old-events (vals (read-string (slurp @config/messages-filename)))
|
||||
creation-times (map :created-at old-events)]
|
||||
(doseq [event old-events]
|
||||
(let [url (first (:relays event))]
|
||||
(swap! event-context events/add-event event url)
|
||||
(events/handle-text-event handler event)))
|
||||
(if (empty? creation-times)
|
||||
(-> (System/currentTimeMillis) (quot 1000) (- 86400))
|
||||
(apply max creation-times))))
|
Loading…
Reference in New Issue
Block a user