push-osyzsknqnpom #88
@@ -36,12 +36,14 @@ const myUdn = computed(() => webRenderer.rendererUdn.value);
|
||||
|
||||
const filteredRenderers = computed(() => {
|
||||
const udn = myUdn.value;
|
||||
const normalizedUdn = udn?.replace(/^uuid:/, '') ?? null;
|
||||
return allRenderers.value.filter((r: RendererSummary) => {
|
||||
// Show only our own WebRenderer based on UDN match
|
||||
const isWebRenderer = r.model_name?.includes("WebRenderer") ?? false;
|
||||
// WebRenderers have "Web Audio – " as friendly_name prefix
|
||||
const isWebRenderer = r.friendly_name?.startsWith("Web Audio – ") ?? false;
|
||||
if (isWebRenderer) {
|
||||
if (udn === null) return false;
|
||||
return r.id === udn;
|
||||
if (normalizedUdn === null) return false;
|
||||
const normalizedId = r.id.replace(/^uuid:/, '');
|
||||
return normalizedId === normalizedUdn;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
@@ -63,6 +63,7 @@ function ensureSSEInitialized() {
|
||||
id: rendererId,
|
||||
friendly_name: event.friendly_name,
|
||||
model_name: event.model_name,
|
||||
manufacturer: event.manufacturer,
|
||||
protocol: "upnp", // Valeur par défaut, sera mise à jour par le fetch
|
||||
capabilities: {
|
||||
has_avtransport: false,
|
||||
|
||||
@@ -29,6 +29,7 @@ export interface RendererSummary {
|
||||
id: string;
|
||||
friendly_name: string;
|
||||
model_name: string;
|
||||
manufacturer?: string;
|
||||
protocol: RendererProtocolSummary;
|
||||
capabilities: RendererCapabilitiesSummary;
|
||||
online: boolean;
|
||||
|
||||
@@ -77,9 +77,9 @@ const onlineServersCount = computed(
|
||||
() => allServers.value.filter((s) => s.online).length,
|
||||
);
|
||||
|
||||
// Nombre de renderers online pour afficher dans le badge
|
||||
// Nombre de renderers online (filtrés) pour afficher dans le badge
|
||||
const onlineRenderersCount = computed(
|
||||
() => allRenderers.value.filter((r) => r.online).length,
|
||||
() => filterRenderers(allRenderers.value).filter((r) => r.online).length,
|
||||
);
|
||||
|
||||
// Gestion de l'ouverture du drawer depuis le bouton
|
||||
@@ -106,11 +106,14 @@ function handleRendererSelect(rendererId: string) {
|
||||
// Filter to show only our own WebRenderer based on UDN match
|
||||
function filterRenderers(renderers: typeof allRenderers.value) {
|
||||
const myUdn = webRenderer.rendererUdn.value;
|
||||
const normalizedUdn = myUdn?.replace(/^uuid:/, '') ?? null;
|
||||
return renderers.filter((r) => {
|
||||
const isWebRenderer = r.model_name?.includes("WebRenderer") ?? false;
|
||||
// WebRenderers have "Web Audio – " as friendly_name prefix
|
||||
const isWebRenderer = r.friendly_name?.startsWith("Web Audio – ") ?? false;
|
||||
if (isWebRenderer) {
|
||||
if (myUdn === null) return false;
|
||||
return r.id === myUdn;
|
||||
if (normalizedUdn === null) return false;
|
||||
const normalizedId = r.id.replace(/^uuid:/, '');
|
||||
return normalizedId === normalizedUdn;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
@@ -358,7 +358,7 @@ impl MediaRendererRegistry {
|
||||
udn_with_prefix.clone(),
|
||||
model.friendly_name().to_string(),
|
||||
model.model_name().to_string(),
|
||||
"PMOMusic".to_string(),
|
||||
"PMOMusic-WebRenderer".to_string(),
|
||||
RendererProtocol::UpnpAvOnly,
|
||||
RendererCapabilities {
|
||||
has_avtransport: true,
|
||||
|
||||
Reference in New Issue
Block a user