Fix some odds and ends with relays and the user window. Works much better now.

This commit is contained in:
Robert C. Martin 2023-04-07 12:26:11 -05:00
parent 9174855366
commit 90663dca44
4 changed files with 41 additions and 30 deletions

View File

@ -30,7 +30,7 @@
"wss://relay.thes.ai" {:read :read-all :write true} "wss://relay.thes.ai" {:read :read-all :write true}
"wss://nostr-dev.wellorder.net" {:read :read-trusted, :write true} "wss://nostr-dev.wellorder.net" {:read :read-trusted, :write true}
"wss://nostr-pub.wellorder.net" {:read :read-trusted, :write true} "wss://nostr-pub.wellorder.net" {:read :read-trusted, :write true}
"wss://relay.damus.io" {:read :read-trusted :write true} "wss://relay.damus.io" {:read :read-web-of-trust :write true}
"wss://relay.nostr.info" {:read :read-all :write true} "wss://relay.nostr.info" {:read :read-all :write true}
"wss://relay.snort.social" {:read :read-trusted :write true} "wss://relay.snort.social" {:read :read-trusted :write true}
"wss://nostr.mikedilger.com" {:read :read-all :write true} "wss://nostr.mikedilger.com" {:read :read-all :write true}
@ -61,7 +61,7 @@
(def user-name-chars #"[\w\-]+") (def user-name-chars #"[\w\-]+")
(def reference-pattern #"\#\[\d+\]") (def reference-pattern #"\#\[\d+\]")
(def proof-of-work-default 16) (def proof-of-work-default 12)
(def max-nodes-per-tab 1000) (def max-nodes-per-tab 1000)
(def prune-tabs-frequency-in-minutes 60) (def prune-tabs-frequency-in-minutes 60)

View File

@ -1,14 +1,14 @@
(ns more-speech.nostr.protocol (ns more-speech.nostr.protocol
(:require [more-speech.logger.default :refer [log-pr]] (:require [more-speech.config :as config]
[more-speech.relay :as relay] [more-speech.logger.default :refer [log-pr]]
[more-speech.websocket-relay :as ws-relay]
[more-speech.mem :refer :all] [more-speech.mem :refer :all]
[more-speech.nostr.events :as events]
[more-speech.nostr.event-handlers :as handlers]
[more-speech.mem :refer :all] [more-speech.mem :refer :all]
[more-speech.config :as config]
[more-speech.nostr.contact-list :as contact-list] [more-speech.nostr.contact-list :as contact-list]
[more-speech.nostr.util :as util]) [more-speech.nostr.event-handlers :as handlers]
[more-speech.nostr.events :as events]
[more-speech.nostr.util :as util]
[more-speech.relay :as relay]
[more-speech.websocket-relay :as ws-relay])
(:import (java.util Date) (:import (java.util Date)
(java.text SimpleDateFormat) (java.text SimpleDateFormat)
(java.util Timer TimerTask))) (java.util Timer TimerTask)))
@ -151,6 +151,7 @@
(defn handle-close [relay] (defn handle-close [relay]
(let [url (::ws-relay/url relay)] (let [url (::ws-relay/url relay)]
(swap! relays assoc-in [url :connection] nil)
(log-pr 1 url 'is-closed))) (log-pr 1 url 'is-closed)))
(defn make-relay [url] (defn make-relay [url]
@ -238,6 +239,14 @@
(when (some? relay) (when (some? relay)
(relay/close relay))))) (relay/close relay)))))
(defn reconnect-all-relays []
(let [now (- (util/get-now) 120)]
(close-all-relays)
(Thread/sleep 1000)
(doseq [url (keys @relays)]
(reconnect-to-relay url now now))))
(defn initialize [] (defn initialize []
(let [timer (Timer. "Dead socket timer") (let [timer (Timer. "Dead socket timer")
check-open-task (proxy [TimerTask] [] check-open-task (proxy [TimerTask] []

View File

@ -9,6 +9,7 @@
[more-speech.mem :refer :all] [more-speech.mem :refer :all]
[more-speech.nostr.contact-list :as contact-list] [more-speech.nostr.contact-list :as contact-list]
[more-speech.nostr.event-composers :as event-composers] [more-speech.nostr.event-composers :as event-composers]
[more-speech.nostr.protocol :as protocol]
[more-speech.nostr.trust-updater :as trust-updater] [more-speech.nostr.trust-updater :as trust-updater]
[more-speech.nostr.util :as util] [more-speech.nostr.util :as util]
[more-speech.ui.formatters :as formatters] [more-speech.ui.formatters :as formatters]
@ -19,6 +20,12 @@
(defn close-users-frame [users-menu _e] (defn close-users-frame [users-menu _e]
(config! users-menu :enabled? true) (config! users-menu :enabled? true)
(when (get-mem [:user-window :contact-list-changed])
(when-not (config/is-test-run?)
(let [my-pubkey (get-mem :pubkey)
contacts (gateway/get-contacts (get-db) my-pubkey)]
(event-composers/compose-and-send-contact-list contacts)))
(future (protocol/reconnect-all-relays)))
(set-mem :user-window nil)) (set-mem :user-window nil))
(defn make-sorted-listbox-items [ids] (defn make-sorted-listbox-items [ids]
@ -98,19 +105,18 @@
petname (trust-updater/ask-for-petname pubkey) petname (trust-updater/ask-for-petname pubkey)
trusted-listbox (select frame [:#trusted-users-listbox])] trusted-listbox (select frame [:#trusted-users-listbox])]
(when (some? petname) (when (some? petname)
(let [contact-list (trust-updater/entrust pubkey petname)] (trust-updater/entrust pubkey petname)
(when-not (config/is-test-run?) (set-mem [:user-window :contact-list-changed] true)
(event-composers/compose-and-send-contact-list contact-list)) (load-trusted-users)
(load-trusted-users) (let [trusted-items (get-mem [:user-window :trusted-user-items])
(let [trusted-items (get-mem [:user-window :trusted-user-items]) new-trusted-item (find-item pubkey trusted-items)]
new-trusted-item (find-item pubkey trusted-items)] (config! trusted-listbox :model trusted-items)
(config! trusted-listbox :model trusted-items) (remove-item pubkey :web-of-trust-items :web-of-trust-users)
(remove-item pubkey :web-of-trust-items :web-of-trust-users) (remove-item pubkey :recent-user-items :recent-users)
(remove-item pubkey :recent-user-items :recent-users) (config! (select frame [:#selected-users])
(config! (select frame [:#selected-users]) :model (get-mem [:user-window group]))
:model (get-mem [:user-window group])) (.setSelectedValue trusted-listbox
(.setSelectedValue trusted-listbox new-trusted-item true)))))))
new-trusted-item true))))))))
(defn untrust-selection [frame _e] (defn untrust-selection [frame _e]
(let [trusted-listbox (select frame [:#trusted-users-listbox]) (let [trusted-listbox (select frame [:#trusted-users-listbox])
@ -132,9 +138,7 @@
(config! trusted-listbox :model (get-mem [:user-window :trusted-user-items])) (config! trusted-listbox :model (get-mem [:user-window :trusted-user-items]))
(config! recent-button :selected? true) (config! recent-button :selected? true)
(load-recent-users) (load-recent-users)
(prn 'adding untrusted-user)
(update-mem [:user-window :recent-users] conj untrusted-user) (update-mem [:user-window :recent-users] conj untrusted-user)
(prn 'recent-users (get-mem [:user-window :recent-users]))
(set-mem [:user-window :recent-user-items] (set-mem [:user-window :recent-user-items]
(make-sorted-listbox-items (make-sorted-listbox-items
(get-mem [:user-window :recent-users]))) (get-mem [:user-window :recent-users])))
@ -142,10 +146,7 @@
(.setSelectedValue selected-listbox (.setSelectedValue selected-listbox
(find-item untrusted-user (get-mem [:user-window :recent-user-items])) (find-item untrusted-user (get-mem [:user-window :recent-user-items]))
true) true)
(when-not (config/is-test-run?) (set-mem [:user-window :contact-list-changed] true))))))
(let [my-pubkey (get-mem :pubkey)
contacts (gateway/get-contacts (get-db) my-pubkey)]
(event-composers/compose-and-send-contact-list contacts))))))))
(defn listbox-click [listbox e] (defn listbox-click [listbox e]
(when (.isPopupTrigger e) (when (.isPopupTrigger e)

View File

@ -61,9 +61,10 @@
(let [{::keys [url socket timer]} relay] (let [{::keys [url socket timer]} relay]
(when (some? socket) (when (some? socket)
(try (try
(.get (.sendClose socket WebSocket/NORMAL_CLOSURE "done")) (when-not (and (.isOutputClosed socket) (.isInputClosed socket))
(.get (.sendClose socket WebSocket/NORMAL_CLOSURE "done")))
(catch Exception e (catch Exception e
(log-pr 1 'close-error url (:reason e))))) (log-pr 1 'close-error url (:message e)))))
(when timer (.cancel timer)) (when timer (.cancel timer))
(set-mem [:deadman url] (util/get-now)) (set-mem [:deadman url] (util/get-now))
(assoc relay ::socket nil ::timer nil))) (assoc relay ::socket nil ::timer nil)))