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://nostr-dev.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.snort.social" {:read :read-trusted :write true}
"wss://nostr.mikedilger.com" {:read :read-all :write true}
@ -61,7 +61,7 @@
(def user-name-chars #"[\w\-]+")
(def reference-pattern #"\#\[\d+\]")
(def proof-of-work-default 16)
(def proof-of-work-default 12)
(def max-nodes-per-tab 1000)
(def prune-tabs-frequency-in-minutes 60)

View File

@ -1,14 +1,14 @@
(ns more-speech.nostr.protocol
(:require [more-speech.logger.default :refer [log-pr]]
[more-speech.relay :as relay]
[more-speech.websocket-relay :as ws-relay]
(:require [more-speech.config :as config]
[more-speech.logger.default :refer [log-pr]]
[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.config :as config]
[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)
(java.text SimpleDateFormat)
(java.util Timer TimerTask)))
@ -151,6 +151,7 @@
(defn handle-close [relay]
(let [url (::ws-relay/url relay)]
(swap! relays assoc-in [url :connection] nil)
(log-pr 1 url 'is-closed)))
(defn make-relay [url]
@ -238,6 +239,14 @@
(when (some? 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 []
(let [timer (Timer. "Dead socket timer")
check-open-task (proxy [TimerTask] []

View File

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

View File

@ -61,9 +61,10 @@
(let [{::keys [url socket timer]} relay]
(when (some? socket)
(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
(log-pr 1 'close-error url (:reason e)))))
(log-pr 1 'close-error url (:message e)))))
(when timer (.cancel timer))
(set-mem [:deadman url] (util/get-now))
(assoc relay ::socket nil ::timer nil)))