feat: Sync favorites between front page and frame player via postMessage
This commit is contained in:
parent
2effe3bdef
commit
ccce10db50
|
|
@ -703,7 +703,11 @@
|
|||
(setf (ps:@ (ps:chain btn (query-selector ".star-icon")) text-content) "☆")
|
||||
;; Reload cache (don't call update-now-playing as it would
|
||||
;; check the old cache before reload completes)
|
||||
(load-favorites-cache))))
|
||||
(load-favorites-cache)
|
||||
;; Notify frame player to reload its cache
|
||||
(let ((player-frame (ps:chain document (get-element-by-id "player-frame"))))
|
||||
(when (and player-frame (ps:@ player-frame content-window))
|
||||
(ps:chain player-frame content-window (post-message "reload-favorites" "*")))))))
|
||||
(catch (lambda (error)
|
||||
(ps:chain console (error "Error removing favorite:" error)))))
|
||||
;; Add favorite
|
||||
|
|
@ -723,7 +727,11 @@
|
|||
(setf (ps:@ (ps:chain btn (query-selector ".star-icon")) text-content) "★")
|
||||
;; Reload cache (don't call update-now-playing as it would
|
||||
;; check the old cache before reload completes)
|
||||
(load-favorites-cache))))
|
||||
(load-favorites-cache)
|
||||
;; Notify frame player to reload its cache
|
||||
(let ((player-frame (ps:chain document (get-element-by-id "player-frame"))))
|
||||
(when (and player-frame (ps:@ player-frame content-window))
|
||||
(ps:chain player-frame content-window (post-message "reload-favorites" "*")))))))
|
||||
(catch (lambda (error)
|
||||
(ps:chain console (error "Error adding favorite:" error)))))))))))
|
||||
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@
|
|||
;; Load user's favorites into cache (mini player)
|
||||
(defun load-favorites-cache-mini ()
|
||||
(ps:chain
|
||||
(fetch "/api/asteroid/user/favorites")
|
||||
(fetch "/api/asteroid/user/favorites" (ps:create :credentials "include"))
|
||||
(then (lambda (response)
|
||||
(if (ps:@ response ok)
|
||||
(ps:chain response (json))
|
||||
|
|
@ -304,7 +304,7 @@
|
|||
;; Remove favorite
|
||||
(ps:chain
|
||||
(fetch (+ "/api/asteroid/user/favorites/remove?" params)
|
||||
(ps:create :method "POST"))
|
||||
(ps:create :method "POST" :credentials "include"))
|
||||
(then (lambda (response)
|
||||
(cond
|
||||
((not (ps:@ response ok))
|
||||
|
|
@ -324,7 +324,7 @@
|
|||
;; Add favorite
|
||||
(ps:chain
|
||||
(fetch (+ "/api/asteroid/user/favorites/add?" params)
|
||||
(ps:create :method "POST"))
|
||||
(ps:create :method "POST" :credentials "include"))
|
||||
(then (lambda (response)
|
||||
(cond
|
||||
((not (ps:@ response ok))
|
||||
|
|
@ -784,7 +784,13 @@
|
|||
(init-persistent-player))
|
||||
;; Check for popout player
|
||||
(when (ps:chain document (get-element-by-id "live-audio"))
|
||||
(init-popout-player))))))
|
||||
(init-popout-player))))
|
||||
;; Listen for messages from parent frame (e.g., favorites cache reload)
|
||||
(ps:chain window (add-event-listener
|
||||
"message"
|
||||
(lambda (event)
|
||||
(when (= (ps:@ event data) "reload-favorites")
|
||||
(load-favorites-cache-mini)))))))
|
||||
)
|
||||
"Compiled JavaScript for stream player - generated at load time")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue