mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Add Subject to edit window, and send message with [subject: <subject>] tag.
This commit is contained in:
parent
02c00be014
commit
149a8e6740
@ -118,12 +118,13 @@
|
||||
)
|
||||
)
|
||||
(context "composing Text (kind 1) messages"
|
||||
(it "composes an original message."
|
||||
(it "composes an original message with no subject."
|
||||
(let [private-key (num->bytes 64 314159)
|
||||
event-state {:keys {:private-key (bytes->hex-string private-key)}}
|
||||
public-key (get-pub-key private-key)
|
||||
text "message text"
|
||||
event (compose-text-event event-state text)
|
||||
subject ""
|
||||
event (compose-text-event event-state subject text)
|
||||
{:keys [pubkey created_at kind tags content id sig]} (second event)
|
||||
now (quot (System/currentTimeMillis) 1000)]
|
||||
(should= "EVENT" (first event))
|
||||
@ -136,6 +137,25 @@
|
||||
public-key
|
||||
(hex-string->bytes sig)))))
|
||||
|
||||
(it "composes an original message with a subject."
|
||||
(let [private-key (num->bytes 64 314159)
|
||||
event-state {:keys {:private-key (bytes->hex-string private-key)}}
|
||||
public-key (get-pub-key private-key)
|
||||
text "message text"
|
||||
subject "subject"
|
||||
event (compose-text-event event-state subject text)
|
||||
{:keys [pubkey created_at kind tags content id sig]} (second event)
|
||||
now (quot (System/currentTimeMillis) 1000)]
|
||||
(should= "EVENT" (first event))
|
||||
(should= (bytes->hex-string public-key) pubkey)
|
||||
(should (<= 0 (- now created_at) 1)) ;within one second.
|
||||
(should= 1 kind)
|
||||
(should= [[:subject "subject"]] tags)
|
||||
(should= text content)
|
||||
(should (do-verify (hex-string->bytes id)
|
||||
public-key
|
||||
(hex-string->bytes sig)))))
|
||||
|
||||
(it "composes a reply to a root article."
|
||||
(let [private-key (num->bytes 64 42)
|
||||
root-id 7734
|
||||
@ -146,7 +166,7 @@
|
||||
:tags []}}}
|
||||
public-key (get-pub-key private-key)
|
||||
text "message text"
|
||||
event (compose-text-event event-state text root-id)
|
||||
event (compose-text-event event-state "" text root-id)
|
||||
{:keys [pubkey created_at kind tags content id sig]} (second event)
|
||||
now (quot (System/currentTimeMillis) 1000)]
|
||||
(should= "EVENT" (first event))
|
||||
@ -175,7 +195,7 @@
|
||||
:tags []}}}
|
||||
public-key (get-pub-key private-key)
|
||||
text "message text"
|
||||
event (compose-text-event event-state text root-child-id)
|
||||
event (compose-text-event event-state "" text root-child-id)
|
||||
{:keys [pubkey created_at kind tags content id sig]} (second event)
|
||||
now (quot (System/currentTimeMillis) 1000)]
|
||||
(should= "EVENT" (first event))
|
||||
@ -198,7 +218,7 @@
|
||||
event-state {:keys {:private-key (bytes->hex-string private-key)}
|
||||
:text-event-map {root-id {:pubkey root-author
|
||||
:tags [[:p (hexify author)]]}}}
|
||||
event (compose-text-event event-state "" root-id)
|
||||
event (compose-text-event event-state "" "message" root-id)
|
||||
{:keys [tags]} (second event)]
|
||||
|
||||
(should= [[:e root-id-hex] [:p (hexify root-author)]] tags)))
|
||||
@ -208,7 +228,7 @@
|
||||
event-state {:keys {:private-key (bytes->hex-string private-key)}}
|
||||
public-key (get-pub-key private-key)
|
||||
text "message/text"
|
||||
event (compose-text-event event-state text)
|
||||
event (compose-text-event event-state "" text)
|
||||
{:keys [pubkey created_at kind tags content id sig]} (second event)
|
||||
now (quot (System/currentTimeMillis) 1000)]
|
||||
(should= "EVENT" (first event))
|
||||
|
@ -194,25 +194,32 @@
|
||||
|
||||
(declare make-event-reference-tags
|
||||
make-people-reference-tags
|
||||
make-subject-tag
|
||||
get-reply-root)
|
||||
|
||||
(defn compose-text-event
|
||||
([event-state text]
|
||||
(compose-text-event event-state text nil))
|
||||
([event-state subject text]
|
||||
(compose-text-event event-state subject text nil))
|
||||
|
||||
([event-state text reply-to-or-nil]
|
||||
([event-state subject text reply-to-or-nil]
|
||||
(let [private-key (get-in event-state [:keys :private-key])
|
||||
private-key (util/hex-string->bytes private-key)
|
||||
pubkey (ecc/get-pub-key private-key)
|
||||
root (get-reply-root event-state reply-to-or-nil)
|
||||
tags (concat (make-event-reference-tags reply-to-or-nil root)
|
||||
(make-people-reference-tags event-state pubkey reply-to-or-nil))
|
||||
(make-people-reference-tags event-state pubkey reply-to-or-nil)
|
||||
(make-subject-tag subject))
|
||||
content text
|
||||
body {:kind 1
|
||||
:tags tags
|
||||
:content content}]
|
||||
(body->event event-state body))))
|
||||
|
||||
(defn make-subject-tag [subject]
|
||||
(if (empty? (.trim subject))
|
||||
[]
|
||||
[[:subject subject]]))
|
||||
|
||||
(defn get-reply-root [event-state reply-to-or-nil]
|
||||
(if (nil? reply-to-or-nil)
|
||||
nil
|
||||
@ -255,9 +262,9 @@
|
||||
(let [send-chan (:send-chan event-state)]
|
||||
(async/>!! send-chan [:event event])))
|
||||
|
||||
(defn compose-and-send-text-event [event-state source-event-or-nil message]
|
||||
(defn compose-and-send-text-event [event-state source-event-or-nil subject message]
|
||||
(let [reply-to-or-nil (:id source-event-or-nil)
|
||||
event (compose-text-event event-state message reply-to-or-nil)]
|
||||
event (compose-text-event event-state subject message reply-to-or-nil)]
|
||||
(send-event event-state event)))
|
||||
|
||||
(defn compose-and-send-metadata-event [event-state]
|
||||
|
@ -7,6 +7,10 @@
|
||||
(defn make-edit-window [kind event-agent header-tree]
|
||||
(let [reply? (= kind :reply)
|
||||
event-state @event-agent
|
||||
subject-label (label "Subject:")
|
||||
subject-text (text :id :subject :text "")
|
||||
subject-panel (left-right-split subject-label subject-text
|
||||
:divider-location 1/10)
|
||||
edit-frame (frame :title (name kind)
|
||||
:size [1000 :by 500]
|
||||
:on-close :dispose)
|
||||
@ -22,8 +26,9 @@
|
||||
nil)]
|
||||
(listen send-button :action
|
||||
(fn [_]
|
||||
(let [message (text edit-area)]
|
||||
(events/compose-and-send-text-event event-state event message))
|
||||
(let [message (text edit-area)
|
||||
subject (text subject-text)]
|
||||
(events/compose-and-send-text-event event-state event subject message))
|
||||
(dispose! edit-frame)))
|
||||
(text! edit-area
|
||||
(if reply?
|
||||
@ -31,6 +36,7 @@
|
||||
""))
|
||||
(config! edit-frame :content
|
||||
(border-panel
|
||||
:north subject-panel
|
||||
:center (scrollable edit-area)
|
||||
:south (flow-panel :items [send-button])))
|
||||
(show! edit-frame)))
|
Loading…
Reference in New Issue
Block a user