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.
1.9 KiB
1.9 KiB
Rapport : Gestion de la barre de progression sur flux continu
Résumé
Implémentation complète de l'étape 2 de la tâche : ajout d'un indicateur visuel "Web Radio" dans l'interface web pour signaler la lecture d'un flux continu (webradio). L'indicateur s'affiche automatiquement à côté de l'indicateur "Attachée à une playlist" dans le composant QueueViewer.
Fichiers modifiés
Backend (pmocontrol)
-
pmocontrol/src/openapi.rs
- Ajout du champ
is_stream: booldansstruct FullRendererSnapshot
- Ajout du champ
-
pmocontrol/src/control_point.rs
- Modification de la méthode de construction de
FullRendererSnapshotpour inclureis_streamvia appel àrenderer.is_playing_a_stream()
- Modification de la méthode de construction de
-
pmocontrol/src/sse.rs
- Refactorisation : création de la fonction helper
media_server_event_to_payload()pour éliminer la duplication de code entre les conversions deMediaServerEventversMediaServerEventPayload - Remplacement de deux blocs match dupliqués par des appels à cette fonction helper
- Refactorisation : création de la fonction helper
Frontend (webapp)
-
pmoapp/webapp/src/services/pmocontrol/types.ts
- Ajout du type d'événement SSE
stream_state_changeddansRendererEventPayload - Ajout du champ
is_stream: booleandansFullRendererSnapshot
- Ajout du type d'événement SSE
-
pmoapp/webapp/src/composables/useRenderers.ts
- Ajout de la gestion de l'événement
stream_state_changeddans le switch statement - Ajout du computed
isStreamdans le composableuseRenderer() - Export de
isStreamdans le retour du composable
- Ajout de la gestion de l'événement
-
pmoapp/webapp/src/components/pmocontrol/QueueViewer.vue
- Import de l'icône
Radiodepuis lucide-vue-next - Récupération de
isStreamdepuis le composableuseRenderer() - Ajout d'un conteneur
status-indicatorspour wrapper les indicateurs - Ajout de l'indicateur visuel "Web Radio" avec icône Radio
- Ajout des styles CSS pour
.stream-indicator(badge violet) et.status-indicators
- Import de l'icône