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) "☆")
|
(setf (ps:@ (ps:chain btn (query-selector ".star-icon")) text-content) "☆")
|
||||||
;; Reload cache (don't call update-now-playing as it would
|
;; Reload cache (don't call update-now-playing as it would
|
||||||
;; check the old cache before reload completes)
|
;; 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)
|
(catch (lambda (error)
|
||||||
(ps:chain console (error "Error removing favorite:" error)))))
|
(ps:chain console (error "Error removing favorite:" error)))))
|
||||||
;; Add favorite
|
;; Add favorite
|
||||||
|
|
@ -723,7 +727,11 @@
|
||||||
(setf (ps:@ (ps:chain btn (query-selector ".star-icon")) text-content) "★")
|
(setf (ps:@ (ps:chain btn (query-selector ".star-icon")) text-content) "★")
|
||||||
;; Reload cache (don't call update-now-playing as it would
|
;; Reload cache (don't call update-now-playing as it would
|
||||||
;; check the old cache before reload completes)
|
;; 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)
|
(catch (lambda (error)
|
||||||
(ps:chain console (error "Error adding favorite:" error)))))))))))
|
(ps:chain console (error "Error adding favorite:" error)))))))))))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -207,7 +207,7 @@
|
||||||
;; Load user's favorites into cache (mini player)
|
;; Load user's favorites into cache (mini player)
|
||||||
(defun load-favorites-cache-mini ()
|
(defun load-favorites-cache-mini ()
|
||||||
(ps:chain
|
(ps:chain
|
||||||
(fetch "/api/asteroid/user/favorites")
|
(fetch "/api/asteroid/user/favorites" (ps:create :credentials "include"))
|
||||||
(then (lambda (response)
|
(then (lambda (response)
|
||||||
(if (ps:@ response ok)
|
(if (ps:@ response ok)
|
||||||
(ps:chain response (json))
|
(ps:chain response (json))
|
||||||
|
|
@ -304,7 +304,7 @@
|
||||||
;; Remove favorite
|
;; Remove favorite
|
||||||
(ps:chain
|
(ps:chain
|
||||||
(fetch (+ "/api/asteroid/user/favorites/remove?" params)
|
(fetch (+ "/api/asteroid/user/favorites/remove?" params)
|
||||||
(ps:create :method "POST"))
|
(ps:create :method "POST" :credentials "include"))
|
||||||
(then (lambda (response)
|
(then (lambda (response)
|
||||||
(cond
|
(cond
|
||||||
((not (ps:@ response ok))
|
((not (ps:@ response ok))
|
||||||
|
|
@ -324,7 +324,7 @@
|
||||||
;; Add favorite
|
;; Add favorite
|
||||||
(ps:chain
|
(ps:chain
|
||||||
(fetch (+ "/api/asteroid/user/favorites/add?" params)
|
(fetch (+ "/api/asteroid/user/favorites/add?" params)
|
||||||
(ps:create :method "POST"))
|
(ps:create :method "POST" :credentials "include"))
|
||||||
(then (lambda (response)
|
(then (lambda (response)
|
||||||
(cond
|
(cond
|
||||||
((not (ps:@ response ok))
|
((not (ps:@ response ok))
|
||||||
|
|
@ -784,7 +784,13 @@
|
||||||
(init-persistent-player))
|
(init-persistent-player))
|
||||||
;; Check for popout player
|
;; Check for popout player
|
||||||
(when (ps:chain document (get-element-by-id "live-audio"))
|
(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")
|
"Compiled JavaScript for stream player - generated at load time")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue