aboutsummaryrefslogtreecommitdiff
path: root/src/dionysus/web/enduser/home.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/dionysus/web/enduser/home.clj')
-rw-r--r--src/dionysus/web/enduser/home.clj53
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))