From 3979d346a536dd06060cc296054ea45f062d03bc Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Thu, 9 Apr 2026 18:02:30 +0200 Subject: [PATCH] =?UTF-8?q?:pencil2:=20am=C3=A9lioration=20des=20messages?= =?UTF-8?q?=20d'erreur=20avec=20nom=20du=20lecteur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ajout de `rendererName` computed property dans plusieurs composants pour afficher le nom convivial du lecteur (ou l'ID en fallback) - Mise à jour des messages d’erreur dans CurrentTrack, TransportControls et VolumeControl pour inclure le nom du lecteur (ex: « Sonos One » — impossible de…) - Amélioration du message d’erreur dans useRenderers.ts : « Impossible de rafraîchir la liste des lecteurs audio » + message plus spécifique pour les snapshots - Ajout de l’import `computed` manquant dans VolumeControl.vue --- .../webapp/src/components/pmocontrol/CurrentTrack.vue | 7 ++++--- .../src/components/pmocontrol/TransportControls.vue | 10 ++++++---- .../webapp/src/components/pmocontrol/VolumeControl.vue | 7 ++++--- .../src/components/unified/RendererTabContent.vue | 3 ++- pmoapp/webapp/src/composables/useRenderers.ts | 5 +++-- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/pmoapp/webapp/src/components/pmocontrol/CurrentTrack.vue b/pmoapp/webapp/src/components/pmocontrol/CurrentTrack.vue index b74dd280..54ee6a2b 100644 --- a/pmoapp/webapp/src/components/pmocontrol/CurrentTrack.vue +++ b/pmoapp/webapp/src/components/pmocontrol/CurrentTrack.vue @@ -13,6 +13,7 @@ const props = defineProps<{ const { state } = useRenderer(toRef(props, "rendererId")); const uiStore = useUIStore(); const metadata = computed(() => state.value?.current_track); +const rendererName = computed(() => state.value?.friendly_name ?? props.rendererId); const isSeeking = ref(false); const isDragging = ref(false); const dragProgress = ref(0); @@ -149,7 +150,7 @@ function handleProgressBarMouseDown(event: MouseEvent) { await api.seekTo(props.rendererId, newPositionSeconds); } catch (error) { uiStore.notifyError( - `Impossible de seek: ${error instanceof Error ? error.message : "Erreur inconnue"}`, + `« ${rendererName.value} » — impossible de changer la position: ${error instanceof Error ? error.message : "Erreur inconnue"}`, ); // En cas d'erreur, réinitialiser seekTargetMs.value = null; @@ -188,7 +189,7 @@ async function handleProgressBarClick(event: MouseEvent) { await api.seekTo(props.rendererId, newPositionSeconds); } catch (error) { uiStore.notifyError( - `Impossible de seek: ${error instanceof Error ? error.message : "Erreur inconnue"}`, + `« ${rendererName.value} » — impossible de changer la position: ${error instanceof Error ? error.message : "Erreur inconnue"}`, ); // En cas d'erreur, réinitialiser seekTargetMs.value = null; @@ -251,7 +252,7 @@ function handleOverlayProgressBarTouchStart(event: TouchEvent) { await api.seekTo(props.rendererId, newPositionSeconds); } catch (error) { uiStore.notifyError( - `Impossible de seek: ${error instanceof Error ? error.message : "Erreur inconnue"}`, + `« ${rendererName.value} » — impossible de changer la position: ${error instanceof Error ? error.message : "Erreur inconnue"}`, ); seekTargetMs.value = null; dragProgress.value = 0; diff --git a/pmoapp/webapp/src/components/pmocontrol/TransportControls.vue b/pmoapp/webapp/src/components/pmocontrol/TransportControls.vue index 5fbc29a7..4963a295 100644 --- a/pmoapp/webapp/src/components/pmocontrol/TransportControls.vue +++ b/pmoapp/webapp/src/components/pmocontrol/TransportControls.vue @@ -20,12 +20,14 @@ const isStopped = computed( state.value?.transport_state === "NO_MEDIA", ); +const rendererName = computed(() => state.value?.friendly_name ?? props.rendererId); + async function handlePlay() { try { await resumeOrPlayFromQueue(props.rendererId); } catch (error) { uiStore.notifyError( - `Impossible de démarrer la lecture: ${error instanceof Error ? error.message : "Erreur inconnue"}`, + `« ${rendererName.value} » — impossible de démarrer la lecture: ${error instanceof Error ? error.message : "Erreur inconnue"}`, ); } } @@ -35,7 +37,7 @@ async function handlePause() { await pause(props.rendererId); } catch (error) { uiStore.notifyError( - `Impossible de mettre en pause: ${error instanceof Error ? error.message : "Erreur inconnue"}`, + `« ${rendererName.value} » — impossible de mettre en pause: ${error instanceof Error ? error.message : "Erreur inconnue"}`, ); } } @@ -45,7 +47,7 @@ async function handleStop() { await stop(props.rendererId); } catch (error) { uiStore.notifyError( - `Impossible d'arrêter la lecture: ${error instanceof Error ? error.message : "Erreur inconnue"}`, + `« ${rendererName.value} » — impossible d'arrêter la lecture: ${error instanceof Error ? error.message : "Erreur inconnue"}`, ); } } @@ -55,7 +57,7 @@ async function handleNext() { await next(props.rendererId); } catch (error) { uiStore.notifyError( - `Impossible de passer au morceau suivant: ${error instanceof Error ? error.message : "Erreur inconnue"}`, + `« ${rendererName.value} » — impossible de passer au morceau suivant: ${error instanceof Error ? error.message : "Erreur inconnue"}`, ); } } diff --git a/pmoapp/webapp/src/components/pmocontrol/VolumeControl.vue b/pmoapp/webapp/src/components/pmocontrol/VolumeControl.vue index 2a5a24b8..8205ecbf 100644 --- a/pmoapp/webapp/src/components/pmocontrol/VolumeControl.vue +++ b/pmoapp/webapp/src/components/pmocontrol/VolumeControl.vue @@ -1,5 +1,5 @@