use objc::{msg_send, sel, sel_impl};
use crate::{
foundation::NSString,
object,
objective_c_runtime::{
macros::interface_impl,
traits::{FromId, PNSObject},
},
utils::to_bool,
};
use super::IBGTaskRequest;
object! {
unsafe pub struct BGProcessingTaskRequest;
}
#[interface_impl(BGTaskRequest)]
impl BGProcessingTaskRequest {
#[method]
pub fn init_with_identifier(&mut self, identifier: NSString) -> Self
where
Self: Sized + FromId,
{
unsafe { Self::from_id(msg_send![self.m_self(), initWithIdentifier: identifier]) }
}
#[property]
pub fn requires_external_power() -> bool {
unsafe { to_bool(msg_send![Self::m_class(), requiresExternalPower]) }
}
#[property]
pub fn requires_network_connectivity() -> bool {
unsafe { to_bool(msg_send![Self::m_class(), requiresNetworkConnectivity]) }
}
}
impl IBGTaskRequest for BGProcessingTaskRequest {}
impl Default for BGProcessingTaskRequest {
fn default() -> Self {
Self::m_new()
}
}