mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Save and read message file. Set subscription time to just before last message time. Migration 3 creates messages directory and message-file.
This commit is contained in:
parent
89868f3d0d
commit
672c5ce69a
@ -12,6 +12,8 @@
|
||||
(reset! config/relays-filename "tmp/relays")
|
||||
(reset! config/read-event-ids-filename "tmp/read-event-ids")
|
||||
(reset! config/tabs-filename "tmp/tabs")
|
||||
(reset! config/messages-directory "tmp/messages")
|
||||
(reset! config/messages-filename "tmp/messages/message-file")
|
||||
(.mkdir (io/file "tmp"))
|
||||
)
|
||||
|
||||
@ -22,6 +24,8 @@
|
||||
(delete-file "tmp/relays")
|
||||
(delete-file "tmp/read-event-ids")
|
||||
(delete-file "tmp/tabs")
|
||||
(delete-file "tmp/messages/message-file")
|
||||
(delete-file "tmp/messages")
|
||||
)
|
||||
|
||||
|
||||
@ -113,7 +117,15 @@
|
||||
4 "dud-12"
|
||||
5 "dud-12"
|
||||
6 "dudx-12"}
|
||||
nicknames))
|
||||
)))
|
||||
nicknames))))))
|
||||
|
||||
(context "migration 3"
|
||||
(it "adds messages directory and empty message-file"
|
||||
(migration-3-add-messages-directory)
|
||||
(should (file-exists? @config/messages-directory))
|
||||
(should (is-directory? @config/messages-directory))
|
||||
(should (file-exists? @config/messages-filename))
|
||||
(should= {} (read-string (slurp @config/messages-filename)))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -6,9 +6,9 @@
|
||||
|
||||
(def article-width 120)
|
||||
|
||||
(def subscribe-days-ago 4) ;get n days worth of events from the relays.
|
||||
(def subscribe-days-ago 10) ;get n days worth of events from the relays.
|
||||
|
||||
(def migration-level 2)
|
||||
(def migration-level 3)
|
||||
;---configuration files
|
||||
(def private-directory (atom "private"))
|
||||
(def migration-filename (atom "private/migration"))
|
||||
@ -17,6 +17,8 @@
|
||||
(def relays-filename (atom "private/relays"))
|
||||
(def read-event-ids-filename (atom "private/read-event-ids"))
|
||||
(def tabs-filename (atom "private/tabs"))
|
||||
(def messages-directory (atom "private/messages"))
|
||||
(def messages-filename (atom "private/messages/message-file"))
|
||||
|
||||
(def user-name-pattern #"\@[\w\-]+")
|
||||
(def user-name-chars #"[\w\-]+")
|
||||
|
@ -17,7 +17,8 @@
|
||||
|
||||
(declare more-speech
|
||||
setup-jframe
|
||||
set-event-handler)
|
||||
set-event-handler
|
||||
read-old-events)
|
||||
|
||||
(defn ^:export -main [& _args]
|
||||
(migrator/migrate-to config/migration-level)
|
||||
@ -36,7 +37,8 @@
|
||||
handler (swing/setup-main-window)
|
||||
]
|
||||
(swap! event-context set-event-handler handler)
|
||||
(protocol/get-events event-context)
|
||||
(let [latest-old-message-time (read-old-events event-context handler)]
|
||||
(protocol/get-events event-context latest-old-message-time))
|
||||
(spit @config/nicknames-filename
|
||||
(with-out-str
|
||||
(clojure.pprint/pprint (:nicknames @event-context))))
|
||||
@ -46,11 +48,22 @@
|
||||
(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))))
|
||||
|
||||
(System/exit 1)))
|
||||
|
||||
(defn set-event-handler [event-state handler]
|
||||
(assoc event-state :event-handler handler))
|
||||
|
||||
|
||||
(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)))]
|
||||
(doseq [event old-events]
|
||||
(let [url (first (:relays event))]
|
||||
(swap! event-context events/add-event event url)
|
||||
(events/handle-text-event handler event))
|
||||
)
|
||||
(apply max (map :created-at old-events))))
|
||||
|
||||
|
||||
|
@ -11,6 +11,9 @@
|
||||
(defn file-exists? [fname]
|
||||
(.exists (io/file fname)))
|
||||
|
||||
(defn is-directory? [fname]
|
||||
(.isDirectory (io/file fname)))
|
||||
|
||||
(defn delete-file [fname]
|
||||
(when (file-exists? fname)
|
||||
(io/delete-file fname)))
|
||||
@ -60,9 +63,20 @@
|
||||
(spit @config/nicknames-filename fixed-nicknames)
|
||||
))
|
||||
|
||||
(defn migration-3-add-messages-directory []
|
||||
(when-not (file-exists? @config/messages-directory)
|
||||
(.mkdir (io/file @config/messages-directory))
|
||||
(spit @config/messages-filename {}))
|
||||
)
|
||||
|
||||
;---------- The Migrations List -------
|
||||
|
||||
(def migrations (atom {1 initial-migration
|
||||
2 migration-2-fix-names}))
|
||||
2 migration-2-fix-names
|
||||
3 migration-3-add-messages-directory
|
||||
}))
|
||||
|
||||
;--------------------------------------
|
||||
|
||||
(defn set-migration-level [n]
|
||||
(spit @migration-filename {:migration-level n}))
|
||||
|
@ -94,7 +94,8 @@
|
||||
(declare translate-event
|
||||
process-text-event
|
||||
process-name-event
|
||||
process-server-recommendation)
|
||||
process-server-recommendation
|
||||
process-like)
|
||||
|
||||
(defn process-event [{:keys [nicknames] :as event-state} event url]
|
||||
(let [_name-of (fn [pubkey] (get nicknames pubkey pubkey))
|
||||
@ -112,10 +113,13 @@
|
||||
0 (process-name-event event-state event)
|
||||
1 (process-text-event event-state event url)
|
||||
2 (process-server-recommendation event-state event)
|
||||
7 (do (prn 'process-event 'like event) event-state)
|
||||
7 (process-like event-state event)
|
||||
(do #_(prn "unknown event: " url event)
|
||||
event-state)))))
|
||||
|
||||
(defn process-like [event-state _event]
|
||||
event-state)
|
||||
|
||||
(declare fix-name)
|
||||
(defn process-name-event [event-state {:keys [_id pubkey _created-at _kind _tags content _sig] :as event}]
|
||||
(try
|
||||
|
@ -81,12 +81,9 @@
|
||||
(onBinary [_this _webSocket _data _last]
|
||||
(prn 'binary))
|
||||
(onPing [_this webSocket message]
|
||||
(prn 'ping url)
|
||||
(.sendPong webSocket message)
|
||||
(.request webSocket 1)
|
||||
(prn 'sent-pong))
|
||||
(.request webSocket 1))
|
||||
(onPong [_this webSocket _message]
|
||||
(prn 'pong url)
|
||||
(.request webSocket 1))
|
||||
(onClose [_this _webSocket statusCode reason]
|
||||
(prn 'close url statusCode reason))
|
||||
@ -119,13 +116,8 @@
|
||||
(let [connection (connect-to-relay url event-context)]
|
||||
(swap! relays assoc-in [url :connection] connection))))
|
||||
|
||||
(defn subscribe-to-relays [id]
|
||||
(let [
|
||||
date (-> (t/local-date-time)
|
||||
(t/minus (t/days config/subscribe-days-ago))
|
||||
(t/adjust (t/local-time 0)))
|
||||
date (.toEpochSecond date ZoneOffset/UTC)
|
||||
]
|
||||
(defn subscribe-to-relays [id subscription-time]
|
||||
(let [date (- subscription-time 100)]
|
||||
(prn 'subscription-date date (format-time date))
|
||||
(doseq [url (keys @relays)]
|
||||
(let [conn (get-in @relays [url :connection])
|
||||
@ -156,15 +148,22 @@
|
||||
(prn 'closing url)
|
||||
(close-connection conn id)))))
|
||||
|
||||
(defn get-events [event-context]
|
||||
(defn get-events [event-context subscription-time]
|
||||
(let [id "more-speech"
|
||||
event-handler (:event-handler @event-context)]
|
||||
(connect-to-relays event-context)
|
||||
(subscribe-to-relays id)
|
||||
(subscribe-to-relays id subscription-time)
|
||||
(events/update-relay-panel event-handler)
|
||||
(future (events/compose-and-send-metadata-event @event-context))
|
||||
(process-send-channel event-context)
|
||||
(unsubscribe-from-relays id))
|
||||
(Thread/sleep 100)
|
||||
(prn 'done)
|
||||
)
|
||||
)
|
||||
|
||||
(defn calc-subscription-date []
|
||||
(let [date (-> (t/local-date-time)
|
||||
(t/minus (t/days config/subscribe-days-ago))
|
||||
(t/adjust (t/local-time 0)))
|
||||
date (.toEpochSecond date ZoneOffset/UTC)]
|
||||
date))
|
Loading…
Reference in New Issue
Block a user