31 lines
944 B
Plaintext
31 lines
944 B
Plaintext
(require
|
|
'[starfederation.datastar.clojure.api :as d*]
|
|
'[starfederation.datastar.clojure.adapter.http-kit :refer [->sse-response on-open]]
|
|
'[some.hiccup.library :refer [html]]
|
|
'[some.json.library :refer [read-json-str write-json-str]]))
|
|
|
|
|
|
(def max-offset 5)
|
|
|
|
(defn handler [ring-request]
|
|
(->sse-response ring-request
|
|
{on-open
|
|
(fn [sse]
|
|
(let [d*-signals (-> ring-request d*/get-signals read-json-str)
|
|
offset (get d*-signals "offset")
|
|
limit 1
|
|
new-offset (+ offset limit)]
|
|
|
|
(d*/merge-fragment! sse
|
|
(html [:div "Item " new-offset])
|
|
{d*/selector "#list"
|
|
d*/merge-mode d*/mm-append})
|
|
|
|
(if (< new-offset max-offset)
|
|
(d*/merge-signals! sse (write-json-str {"offset" new-offset}))
|
|
(d*/remove-fragment! sse "#load-more"))
|
|
|
|
(d*/close-sse! sse)))}))
|
|
|
|
|