(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))