mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Fix lookup-reference crash when nostr.client mis-indexed the references. Also use empty? instead of nil?
This commit is contained in:
parent
4d4b9cf487
commit
2515760a6e
@ -39,10 +39,10 @@
|
||||
:else
|
||||
(str "(" (abbreviate profile-name (- length 2)) ")")))))))
|
||||
|
||||
(declare get-subject
|
||||
(declare get-subject
|
||||
replace-references)
|
||||
|
||||
(defn format-header [{:keys [pubkey created-at tags] :as event}]
|
||||
(defn format-header [{:keys [pubkey created-at tags] :as event}]
|
||||
(if (nil? event)
|
||||
"nil"
|
||||
(let [content (replace-references event)
|
||||
@ -57,7 +57,7 @@
|
||||
(abbreviate (str subject "|" header-text) 80))]
|
||||
(format "%s %20s %s %s\n" reply-mark name time content))))
|
||||
|
||||
(defn format-reply [event]
|
||||
(defn format-reply [event]
|
||||
(let [content (replace-references event)
|
||||
content (prepend> content)
|
||||
header (format ">From: %s at %s on %s\n"
|
||||
@ -67,7 +67,7 @@
|
||||
)]
|
||||
(str header ">---------------\n" content)))
|
||||
|
||||
(defn get-subject [tags]
|
||||
(defn get-subject [tags]
|
||||
(if (empty? tags)
|
||||
nil
|
||||
(let [tag (first tags)]
|
||||
@ -75,9 +75,9 @@
|
||||
(abbreviate (second tag) 90)
|
||||
(recur (rest tags))))))
|
||||
|
||||
(declare lookup-reference)
|
||||
(declare lookup-reference)
|
||||
|
||||
(defn replace-references [event]
|
||||
(defn replace-references [event]
|
||||
(let [padded-content (str " " (:content event) " ")
|
||||
pattern #"\#\[\d+\]"
|
||||
references (re-seq pattern padded-content)
|
||||
@ -87,23 +87,31 @@
|
||||
]
|
||||
(string/trim (apply str (interleave segments referents)))))
|
||||
|
||||
(defn lookup-reference [event reference]
|
||||
(defn lookup-reference [event reference]
|
||||
(let [profiles (:profiles @(:event-context @ui-context))
|
||||
ref-string (re-find #"\d+" reference)
|
||||
index (Integer/parseInt ref-string)
|
||||
tags (:tags event)]
|
||||
(if (>= index (count tags))
|
||||
reference
|
||||
(try
|
||||
(let [id-string (-> tags (nth index) second)
|
||||
id (util/hex-string->num id-string)
|
||||
name (contact-list/get-petname id)
|
||||
name (if (nil? name) (get-in profiles [id :name]) name)
|
||||
name (if (nil? name)
|
||||
name (if (empty? name) (get-in profiles [id :name]) name)
|
||||
name (if (empty? name)
|
||||
id-string
|
||||
name)]
|
||||
(str "@" name)))))
|
||||
(str "@" name)
|
||||
)
|
||||
(catch Exception e
|
||||
(prn `lookup-reference 'bad-id index tags)
|
||||
"@-unknown-"
|
||||
))
|
||||
|
||||
(defn html-escape [content]
|
||||
)))
|
||||
|
||||
(defn html-escape [content]
|
||||
(string/escape content {\& "&"
|
||||
\< "<"
|
||||
\> ">"
|
||||
@ -111,16 +119,16 @@
|
||||
\' "'"
|
||||
\/ "/"}))
|
||||
|
||||
(defn break-newlines [content]
|
||||
(defn break-newlines [content]
|
||||
(string/replace content "\n" "<br>"))
|
||||
|
||||
(defn format-replies [content]
|
||||
(defn format-replies [content]
|
||||
(string/replace content " >" "\n>"))
|
||||
|
||||
(defn linkify [url]
|
||||
(defn linkify [url]
|
||||
(str "<a href=\"" url "\">" url "</a>"))
|
||||
|
||||
(defn segment-text-url [content]
|
||||
(defn segment-text-url [content]
|
||||
(let [url (re-find config/url-pattern content)]
|
||||
(cond
|
||||
(not (nil? url))
|
||||
@ -137,7 +145,7 @@
|
||||
(not (empty? content)) (list [:text content])
|
||||
:else '())))
|
||||
|
||||
(defn reformat-article [article]
|
||||
(defn reformat-article [article]
|
||||
(let [segments (segment-text-url article)]
|
||||
(reduce
|
||||
(fn [formatted-content [seg-type seg]]
|
||||
|
Loading…
Reference in New Issue
Block a user