diff options
Diffstat (limited to 'src/dionysus/web/enduser/home.clj')
| -rw-r--r-- | src/dionysus/web/enduser/home.clj | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/dionysus/web/enduser/home.clj b/src/dionysus/web/enduser/home.clj new file mode 100644 index 0000000..69d8ece --- /dev/null +++ b/src/dionysus/web/enduser/home.clj @@ -0,0 +1,53 @@ +(ns dionysus.web.enduser.home + (:require [dionysus.web.utils :as dwutils] + [ring.util.response :as ruresp] + [dionysus.spotify :as dspotify] + [clojure.string :as cstr] + [dionysus.web.enduser.home.search :as dwehsearch])) + +(defn- render-current-track [_req] + (let [track (:item (dspotify/get-current-track!))] + [:div {:id "current-track" + :class "card" + :hx-swap "outerHTML" + :hx-get "/current-track/" + :hx-trigger "every 10s"} + [:img {:class "album-image" + :src (get-in track [:album :images 0 :url]) + :width "130em"}] + [:div + [:b (:name track)] + [:p (str "Von " (cstr/join ", " (map :name (:artists track))))] + [:a {:href (get-in track [:external_urls :spotify]) + :target "_blank"} "Auf Spotify anschauen"]]])) + +(defn handle-current-track [req] + (-> req + render-current-track + dwutils/render-html + ruresp/response)) + +(defn- render [_req] + (dwutils/render-page (str @dwutils/title " - Home") + [:div {:class "text"} + [:h1 @dwutils/title] + [:p "Füge hier Lieder zur Warteschlange hinzu!"]] + [:input {:id "search-bar" + :type "text" + :placeholder "Suche nach einem Lied:" + :name "query" + :hx-get "/search/" + :hx-swap "innerHTML" + :hx-target "#search-results" + :hx-trigger "change"}] + [:div {:id "search-results"} + (dwehsearch/render-search nil)] + [:h2 {:class "text"} + "Aktuelles Lied"] + (render-current-track nil) + [:script {:src "/assets/htmx.js"}])) + +(defn handle [req] + (-> req + render + ruresp/response)) |
