use super::devices_message;
use crate::Error;
use dbus_async::DBus;
use dbus_message_parser::Value;
pub struct SyncEffects {
pub(crate) dbus: DBus,
}
impl SyncEffects {
pub async fn get(&self) -> Result<bool, Error> {
let response = self.dbus.call(devices_message("getSyncEffects")).await?;
match response.get_body() {
[Value::Boolean(is_enabled)] => Ok(*is_enabled),
_ => Err(Error::InvalidResponse),
}
}
pub async fn set(&self, is_enabled: bool) -> Result<(), Error> {
let mut message = devices_message("syncEffects");
message.add_value(Value::Boolean(is_enabled));
self.dbus.call(message).await?;
Ok(())
}
pub async fn enable(&self) -> Result<(), Error> {
self.set(true).await
}
pub async fn disable(&self) -> Result<(), Error> {
self.set(false).await
}
}