⬆️ version bump to v0.3.6
- Bump crate and app versions from `v0.3.5` to v"\n- Add retry logic with exponential backoff in `fetchRenderers`[39m - Improve re-registration robustness in `useWebRenderer` (stale player handling, instanceId error recovery) - Trigger forced renderer refresh after successful registration
This commit is contained in:
15
pmowebrenderer/src/helpers.rs
Normal file
15
pmowebrenderer/src/helpers.rs
Normal file
@@ -0,0 +1,15 @@
|
||||
pub fn extract_browser_name(ua: &str) -> &str {
|
||||
if ua.contains("Edg/") || ua.contains("EdgA/") {
|
||||
"Edge"
|
||||
} else if ua.contains("OPR/") || ua.contains("Opera") {
|
||||
"Opera"
|
||||
} else if ua.contains("Chrome/") {
|
||||
"Chrome"
|
||||
} else if ua.contains("Firefox/") {
|
||||
"Firefox"
|
||||
} else if ua.contains("Safari/") {
|
||||
"Safari"
|
||||
} else {
|
||||
"Browser"
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
//! - Les commandes UPnP sont relayées vers le pipeline audio via PipelineControl
|
||||
|
||||
mod adapter;
|
||||
mod helpers;
|
||||
mod register;
|
||||
mod stream;
|
||||
|
||||
@@ -13,6 +14,7 @@ mod stream;
|
||||
mod config;
|
||||
|
||||
pub use adapter::BrowserAdapter;
|
||||
pub use helpers::extract_browser_name;
|
||||
|
||||
#[cfg(feature = "pmoserver")]
|
||||
pub use config::WebRendererExt;
|
||||
@@ -17,6 +17,7 @@ use pmomediarenderer::PipelineControl;
|
||||
use pmomediarenderer::{DeviceCommand, MediaRendererRegistry};
|
||||
|
||||
use crate::adapter::BrowserAdapter;
|
||||
use crate::helpers::extract_browser_name;
|
||||
|
||||
#[derive(Debug, serde::Deserialize)]
|
||||
pub struct PlayerStateReport {
|
||||
@@ -51,11 +52,15 @@ pub async fn register_handler(
|
||||
"WebRenderer: register request"
|
||||
);
|
||||
|
||||
let browser_name = extract_browser_name(&req.user_agent);
|
||||
let friendly_name = format!("Web Audio – {}", browser_name);
|
||||
|
||||
match registry
|
||||
.register_or_reconnect(
|
||||
&req.instance_id,
|
||||
"/api/webrenderer",
|
||||
"PMOMusic WebRenderer/2.0",
|
||||
&friendly_name,
|
||||
|state| Arc::new(BrowserAdapter::new(state)),
|
||||
)
|
||||
.await
|
||||
|
||||
Reference in New Issue
Block a user