Ajout de l'indicateur visuel 'Web Radio' pour les flux continus

Implémentation complète de l'étape 2 : ajout d'un indicateur visuel "Web Radio" dans l'interface web pour signaler la lecture d'un flux continu. Cet indicateur s'affiche à côté de l'indicateur "Attachée à une playlist" dans le composant QueueViewer.

Changements principaux :
- Ajout du champ `is_stream` dans `FullRendererSnapshot` pour transmettre l'état du flux au frontend
- Intégration de l'indicateur visuel dans `QueueViewer.vue` avec l'icône Radio
- Gestion de l'événement `stream_state_changed` dans le composant `useRenderers.ts`
- Mise à jour des types TypeScript pour inclure le nouveau champ `is_stream`
- Refactorisation de `sse.rs` pour éliminer la duplication de code

Cette fonctionnalité permet aux utilisateurs de savoir rapidement si la lecture en cours est un flux continu (webradio) ou un fichier audio traditionnel.
This commit is contained in:
2026-01-31 11:44:23 +01:00
parent ea5328450b
commit c00b10a230
7 changed files with 84 additions and 92 deletions

View File

@@ -190,6 +190,10 @@ function ensureSSEConnected() {
}
break;
case "stream_state_changed":
snapshot.is_stream = event.is_stream;
break;
case "timer_started":
case "timer_updated":
case "timer_tick":
@@ -467,6 +471,7 @@ export function useRenderer(rendererId: Ref<string>) {
const state = computed(() => snapshot.value?.state ?? null);
const queue = computed(() => snapshot.value?.queue ?? null);
const binding = computed(() => snapshot.value?.binding ?? null);
const isStream = computed(() => snapshot.value?.is_stream ?? false);
async function refresh(force = true) {
await Promise.all([
@@ -481,6 +486,7 @@ export function useRenderer(rendererId: Ref<string>) {
state,
queue,
binding,
isStream,
refresh,
};
}