feat: now pwsp will automatically detect when input device is connected/disconnected and properly link/unlink it

This commit is contained in:
2026-01-28 01:26:43 +03:00
parent 2e570b3bb0
commit b4a0dc6a83
2 changed files with 61 additions and 40 deletions
+13 -6
View File
@@ -1,6 +1,9 @@
use crate::{
types::{audio_player::PlayerState, socket::Response},
utils::{daemon::get_audio_player, pipewire::get_all_devices},
utils::{
daemon::get_audio_player,
pipewire::{get_all_devices, get_device},
},
};
use async_trait::async_trait;
use std::path::PathBuf;
@@ -254,11 +257,15 @@ impl Executable for GetTracksCommand {
impl Executable for GetCurrentInputCommand {
async fn execute(&self) -> Response {
let audio_player = get_audio_player().await.lock().await;
if let Some(input_device) = &audio_player.current_input_device {
Response::new(
true,
format!("{} - {}", input_device.name, input_device.nick),
)
if let Some(input_device_name) = &audio_player.input_device_name {
if let Ok(input_device) = get_device(input_device_name).await {
Response::new(
true,
format!("{} - {}", input_device.name, input_device.nick),
)
} else {
Response::new(false, "Failed to get current input device")
}
} else {
Response::new(false, "No input device selected")
}