User window seems to function properly. Can trust and untrust users.

This commit is contained in:
Robert C. Martin 2023-04-06 12:22:08 -05:00
parent a8c6ad120b
commit c511a1566d
4 changed files with 80 additions and 20 deletions

View File

@ -1,10 +1,10 @@
(ns more-speech.nostr.trust-updater-spec
(:require [speclj.core :refer :all]
[more-speech.nostr.trust-updater :refer :all]
[more-speech.mem :refer :all]
[more-speech.db.in-memory :as in-memory]
(:require [more-speech.config :as config]
[more-speech.db.gateway :as gateway]
[more-speech.config :as config]))
[more-speech.db.in-memory :as in-memory]
[more-speech.mem :refer :all]
[more-speech.nostr.trust-updater :refer :all]
[speclj.core :refer :all]))
(declare db)
(describe "Setting Trust"
@ -28,16 +28,27 @@
(let [my-pubkey 1
contacts [{:pubkey 1}
{:pubkey 3 :petname "the-old-petname"}
{:pubkey 2}]
]
{:pubkey 2}]]
(set-mem :pubkey my-pubkey)
(gateway/add-contacts @db my-pubkey contacts)
(entrust 3 "the-new-petname")
(let [my-contacts
(gateway/get-contacts @db my-pubkey)
]
(let [my-contacts (gateway/get-contacts @db my-pubkey)]
(should= (set [{:pubkey 1}
{:pubkey 2}
{:pubkey 3 :petname "the-new-petname"}])
(set my-contacts)))))
(it "untrusts a user"
(let [my-pubkey 1
contacts [{:pubkey 1}
{:pubkey 2}
{:pubkey 3 :petname "petname"}]]
(set-mem :pubkey my-pubkey)
(gateway/add-contacts @db my-pubkey contacts)
(untrust 2)
(let [my-contacts
(gateway/get-contacts @db my-pubkey)]
(should= (set [{:pubkey 1}
{:pubkey 3 :petname "petname"}])
(set my-contacts)))))
)

View File

@ -61,8 +61,7 @@
:lud16 lud16
:nip05 nip05
:created-at created-at}]
(gateway/add-profile db pubkey profile-doc)
(log-pr 1 'process-name-event profile))
(gateway/add-profile db pubkey profile-doc))
(catch Exception e
(log-pr 1 'json-exception-process-name-event-ignored (.getMessage e))
(log-pr 1 event))))

View File

@ -10,6 +10,13 @@
)
(:use [seesaw.core]))
(defn untrust [his-pubkey]
(let [my-pubkey (get-mem :pubkey)
my-contacts (gateway/get-contacts (get-db) my-pubkey)
reduced-contacts (remove #(= his-pubkey (:pubkey %)) my-contacts)]
(gateway/add-contacts (get-db) my-pubkey reduced-contacts))
)
(defn entrust [his-pubkey his-petname]
(let [my-pubkey (get-mem :pubkey)
my-contacts (gateway/get-contacts (get-db) my-pubkey)

View File

@ -1,6 +1,7 @@
(ns more-speech.ui.swing.users-window
(:require
[clojure.set :as set]
[more-speech.bech32 :as bech32]
[more-speech.config :as config]
[more-speech.config :refer [get-db]]
[more-speech.db.gateway :as gateway]
@ -45,12 +46,13 @@
(make-sorted-listbox-items trusted-users))))
(defn load-web-of-trust-users []
(let [web-of-trust-users (set/difference
(set (contact-list/get-web-of-trust))
(set (get-mem [:user-window :trusted-users])))]
(set-mem [:user-window :web-of-trust-users] web-of-trust-users)
(let [web-of-trust-ids (contact-list/get-web-of-trust)
reduced-web-of-trust-users (set/difference
(set web-of-trust-ids)
(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 web-of-trust-users))))
(make-sorted-listbox-items reduced-web-of-trust-users))))
(defn load-user-window-data []
(load-trusted-users)
@ -64,7 +66,7 @@
(defn select-web-of-trust [frame _e]
(set-mem [:user-window :selection-group] :web-of-trust-items)
(when (nil? (get-mem [:user-window :web-of-trust-items]))
(when (empty? (get-mem [:user-window :web-of-trust-items]))
(load-web-of-trust-users))
(config! (select frame [:#selected-users])
:model (get-mem [:user-window :web-of-trust-items])))
@ -107,6 +109,41 @@
(.setSelectedValue trusted-listbox
new-trusted-item true))))))))
(defn untrust-selection [frame _e]
(let [trusted-listbox (select frame [:#trusted-users-listbox])
selected-item (selection trusted-listbox)]
(when (some? selected-item)
(let [untrusted-user (second selected-item)
recent-button (select frame [:#recent-button])
selected-listbox (select frame [:#selected-users])
untrusted-name (formatters/format-user-id untrusted-user)
question (dialog :content
(str "Are you sure you want to untrust " untrusted-name
"\nID: " (util/hexify untrusted-user)
"\n" (bech32/encode "npub" untrusted-user))
:option-type :ok-cancel)
answer (show! (pack! question))]
(when (= answer :success)
(trust-updater/untrust untrusted-user)
(load-trusted-users)
(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])))
(config! selected-listbox :model (get-mem [:user-window :recent-user-items]))
(.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))))))))
(defn make-users-frame [_e]
(let [users-menu (select (get-mem :frame) [:#users-menu])
users-frame (frame :title "Users")
@ -116,14 +153,17 @@
trusted-users-panel (vertical-panel
:items [(label "Trusted")
(scrollable trusted-users-listbox :size [500 :by 800])])
trust-button (button :text "<-"
trust-button (button :text "<-Trust"
:listen [:action (partial trust-selection users-frame)])
untrust-button (button :text "Untrust->"
:listen [:action (partial untrust-selection users-frame)])
selection-group (button-group)
web-of-trust-button (radio :text "Web of trust"
:group selection-group
:selected? false
:listen [:action (partial select-web-of-trust users-frame)])
recent-button (radio :text "Recent users"
:id :recent-button
:group selection-group
:selected? true
:listen [:action (partial select-recent-users users-frame)])
@ -138,7 +178,10 @@
scrollable-selected-listbox])
users-panel (horizontal-panel :items [trusted-users-panel trust-button selection-panel])]
users-panel (horizontal-panel :items [trusted-users-panel
(vertical-panel :items [trust-button
untrust-button])
selection-panel])]
(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]))