mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Repaint main window every second so that when new profile events come in, the names are re-rendered.
Set up the user window for the same thing.
This commit is contained in:
parent
208c8b529d
commit
3cc57090c8
@ -18,6 +18,8 @@
|
||||
(def migration-level 10)
|
||||
(def version "2023-04-19T14:41")
|
||||
|
||||
(def kinds-not-to-validate [7])
|
||||
|
||||
(def subscription-id-base "ms")
|
||||
|
||||
(def test-run? (atom false))
|
||||
|
@ -8,8 +8,8 @@
|
||||
[more-speech.nostr.elliptic-signature :as ecc]
|
||||
[more-speech.nostr.events :as events]
|
||||
[more-speech.nostr.relays :as relays]
|
||||
[more-speech.nostr.zaps :as zaps]
|
||||
[more-speech.nostr.util :refer :all :as util])
|
||||
[more-speech.nostr.util :refer :all :as util]
|
||||
[more-speech.nostr.zaps :as zaps])
|
||||
(:import (ecdhJava SECP256K1)))
|
||||
|
||||
(defprotocol event-handler
|
||||
@ -113,9 +113,11 @@
|
||||
(defn process-event [event url]
|
||||
(let [db (get-db)
|
||||
{:keys [id pubkey _created-at kind _tags _content sig]} event
|
||||
valid? (ecc/do-verify (util/num->bytes 32 id)
|
||||
(util/num->bytes 32 pubkey)
|
||||
(util/num->bytes 64 sig))]
|
||||
valid? (if (contains? config/kinds-not-to-validate kind)
|
||||
true
|
||||
(ecc/do-verify (util/num->bytes 32 id)
|
||||
(util/num->bytes 32 pubkey)
|
||||
(util/num->bytes 64 sig)))]
|
||||
(if (not valid?)
|
||||
(log-pr 1 'signature-verification-failed url event)
|
||||
(condp = kind
|
||||
|
@ -18,13 +18,16 @@
|
||||
date (Date. (long time))]
|
||||
(.format (SimpleDateFormat. "MM/dd/yyyy kk:mm:ss z") date)))
|
||||
|
||||
(defn request-metadata-and-contacts-for-user [author]
|
||||
(doseq [url (keys @relays)]
|
||||
(when (not= :read-none (get-in @relays [url :read]))
|
||||
(let [relay (:connection (get @relays url))]
|
||||
(when (some? relay)
|
||||
(relay/send relay
|
||||
["REQ" "ms-author" {"kinds" [0 3] "authors" [(util/hexify author)]}]))))))
|
||||
(defn request-profiles-and-contacts-for [authors]
|
||||
(let [authors (if (coll? authors) authors [authors])
|
||||
hexified-authors (map util/hexify authors)
|
||||
r (rand-int 1000000)]
|
||||
(doseq [url (keys @relays)]
|
||||
(when (not= :read-none (get-in @relays [url :read]))
|
||||
(let [relay (:connection (get @relays url))]
|
||||
(when (some? relay)
|
||||
(relay/send relay
|
||||
["REQ" (str "ms-authors-" r) {"kinds" [0 3] "authors" hexified-authors}])))))))
|
||||
|
||||
(defn request-contact-lists [relay]
|
||||
(let [now (quot (System/currentTimeMillis) 1000)
|
||||
@ -261,6 +264,8 @@
|
||||
check-open-task (proxy [TimerTask] []
|
||||
(run [] (check-all-active-relays)))
|
||||
s60 (long 60000)]
|
||||
(doseq [kind [0 1 2 3 4 7 9735]]
|
||||
(set-mem [:event-counter :kinds kind] 0))
|
||||
(.schedule timer check-open-task s60 s60)))
|
||||
|
||||
|
||||
|
@ -263,7 +263,7 @@
|
||||
zap-items (map format-zap (:zaps event))
|
||||
event-id (select main-frame [:#id-label])
|
||||
author-name-label (select main-frame [:#author-name-label])]
|
||||
(protocol/request-metadata-and-contacts-for-user (:pubkey event))
|
||||
(protocol/request-profiles-and-contacts-for (:pubkey event))
|
||||
(text! reactions-label (str reactions))
|
||||
(if reacted?
|
||||
(do
|
||||
|
@ -81,15 +81,23 @@
|
||||
(show! main-frame)
|
||||
(log-pr 2 'make-main-window 'shown)))
|
||||
|
||||
(defn repaint-main-window []
|
||||
(let [frame (get-mem :frame)]
|
||||
(when (some? frame)
|
||||
(.repaint frame))))
|
||||
|
||||
(defn setup-main-timer []
|
||||
(let [main-timer (Timer. "main timer")
|
||||
prune-tabs-task (proxy [TimerTask] []
|
||||
(run [] (tabs/prune-tabs)))
|
||||
repaint-task (proxy [TimerTask] []
|
||||
(run [] (repaint-main-window)))
|
||||
prune-tabs-frequency (* config/prune-tabs-frequency-in-minutes 60 1000)]
|
||||
(.schedule main-timer
|
||||
prune-tabs-task
|
||||
(long prune-tabs-frequency)
|
||||
(long prune-tabs-frequency))))
|
||||
(long prune-tabs-frequency))
|
||||
(.schedule main-timer repaint-task 1000 1000)))
|
||||
|
||||
(defn setup-main-window []
|
||||
(setup-main-timer)
|
||||
|
@ -214,7 +214,9 @@
|
||||
(config! relays-menu :enabled? false)
|
||||
(set-mem :relay-manager-frame relay-frame)
|
||||
(config! relay-frame :content relay-box)
|
||||
(listen relay-frame :window-closing close-relay-manager)
|
||||
(listen relay-frame :window-closing (partial
|
||||
close-relay-manager
|
||||
relay-manager-timer))
|
||||
(scroll-to-top relay-box)
|
||||
(show! relay-frame)
|
||||
(.schedule relay-manager-timer relay-manager-task 1000 1000)
|
||||
@ -240,7 +242,8 @@
|
||||
(.startsWith (config field :text) "<"))
|
||||
(config! field :text "wss://"))))
|
||||
|
||||
(defn close-relay-manager [_e]
|
||||
(defn close-relay-manager [timer _e]
|
||||
(.cancel timer)
|
||||
(set-mem :relay-manager-frame nil)
|
||||
(let [relays-menu (select (get-mem :frame) [:#relays-menu])]
|
||||
(config! relays-menu :enabled? true)))
|
||||
|
@ -16,9 +16,11 @@
|
||||
[more-speech.ui.swing.article-panel :as article-panel]
|
||||
[more-speech.ui.swing.tabs :as tabs])
|
||||
(:use (seesaw [core]))
|
||||
(:import (java.awt Point)))
|
||||
(:import (java.awt Point)
|
||||
(java.util Timer TimerTask)))
|
||||
|
||||
(defn close-users-frame [users-menu _e]
|
||||
(defn close-users-frame [users-menu timer _e]
|
||||
(.cancel timer)
|
||||
(config! users-menu :enabled? true)
|
||||
(when (get-mem [:user-window :contact-list-changed])
|
||||
(when-not (config/is-test-run?)
|
||||
@ -47,13 +49,15 @@
|
||||
(set (get-mem [:user-window :trusted-users])))
|
||||
recent-user-items (make-sorted-listbox-items recent-users)]
|
||||
(set-mem [:user-window :recent-users] recent-users)
|
||||
(set-mem [:user-window :recent-user-items] recent-user-items)))
|
||||
(set-mem [:user-window :recent-user-items] recent-user-items)
|
||||
(protocol/request-profiles-and-contacts-for recent-users)))
|
||||
|
||||
(defn load-trusted-users []
|
||||
(let [trusted-users (contact-list/get-trustees)]
|
||||
(set-mem [:user-window :trusted-users] trusted-users)
|
||||
(set-mem [:user-window :trusted-user-items]
|
||||
(make-sorted-listbox-items trusted-users))))
|
||||
(make-sorted-listbox-items trusted-users))
|
||||
(protocol/request-profiles-and-contacts-for trusted-users)))
|
||||
|
||||
(defn load-web-of-trust-users []
|
||||
(let [web-of-trust-ids (contact-list/get-web-of-trust)
|
||||
@ -62,7 +66,8 @@
|
||||
(set (get-mem [:user-window :trusted-users])))]
|
||||
(set-mem [:user-window :web-of-trust-users] reduced-web-of-trust-users)
|
||||
(set-mem [:user-window :web-of-trust-items]
|
||||
(make-sorted-listbox-items reduced-web-of-trust-users))))
|
||||
(make-sorted-listbox-items reduced-web-of-trust-users))
|
||||
(protocol/request-profiles-and-contacts-for reduced-web-of-trust-users)))
|
||||
|
||||
(defn load-user-window-data []
|
||||
(load-trusted-users)
|
||||
@ -164,6 +169,9 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defn- repaint-user-window [frame]
|
||||
(.repaint frame))
|
||||
|
||||
(defn make-users-frame [_e]
|
||||
(let [users-menu (select (get-mem :frame) [:#users-menu])
|
||||
users-frame (frame :title "Users")
|
||||
@ -201,15 +209,19 @@
|
||||
users-panel (horizontal-panel :items [trusted-users-panel
|
||||
(vertical-panel :items [trust-button
|
||||
untrust-button])
|
||||
selection-panel])]
|
||||
selection-panel])
|
||||
user-window-timer (Timer. "User window timer")
|
||||
user-window-repaint-task (proxy [TimerTask] []
|
||||
(run [] repaint-user-window users-frame))]
|
||||
(set-mem [:user-window :selection-group] :recent-user-items)
|
||||
(load-user-window-data)
|
||||
(config! trusted-users-listbox :model (get-mem [:user-window :trusted-user-items]))
|
||||
(config! selected-listbox :model (get-mem [:user-window :recent-user-items]))
|
||||
(config! users-frame :content users-panel)
|
||||
(listen users-frame :window-closing (partial close-users-frame users-menu))
|
||||
(listen users-frame :window-closing (partial close-users-frame users-menu user-window-timer))
|
||||
(listen trusted-users-listbox :mouse-pressed (partial listbox-click trusted-users-listbox))
|
||||
(listen selected-listbox :mouse-pressed (partial listbox-click selected-listbox))
|
||||
(config! users-menu :enabled? false)
|
||||
(.schedule user-window-timer user-window-repaint-task 1000 1000)
|
||||
(pack! users-frame)
|
||||
(show! users-frame)))
|
||||
|
Loading…
Reference in New Issue
Block a user