use super::*;
impl Client {
pub fn subscribe(&self, user_id: UserId, mask: Subscriptions) -> i32 {
if !can_issue_logged_in_command(self.connection_state()) {
return 0;
}
unsafe { ffi::api().TT_DoSubscribe(self.ptr.0, user_id.0, mask.raw()) }
}
pub fn unsubscribe(&self, user_id: UserId, mask: Subscriptions) -> i32 {
if !can_issue_logged_in_command(self.connection_state()) {
return 0;
}
unsafe { ffi::api().TT_DoUnsubscribe(self.ptr.0, user_id.0, mask.raw()) }
}
pub fn unsubscribe_all_from_user(&self, user_id: UserId) -> i32 {
if !can_issue_logged_in_command(self.connection_state()) {
return 0;
}
unsafe { ffi::api().TT_DoUnsubscribe(self.ptr.0, user_id.0, Subscriptions::ALL) }
}
pub fn unsubscribe_all(&self) -> i32 {
if !can_issue_logged_in_command(self.connection_state()) {
return 0;
}
unsafe { ffi::api().TT_DoUnsubscribe(self.ptr.0, 0, Subscriptions::ALL) }
}
pub fn set_user_text_mute(&self, user_id: UserId, mute: bool) -> i32 {
if mute {
self.unsubscribe(user_id, Subscriptions::all_text())
} else {
self.subscribe(user_id, Subscriptions::all_text())
}
}
pub fn mute_user_text(&self, user_id: UserId) -> i32 {
self.set_user_text_mute(user_id, true)
}
pub fn unmute_user_text(&self, user_id: UserId) -> i32 {
self.set_user_text_mute(user_id, false)
}
pub fn mute_user_voice(&self, user_id: UserId) -> i32 {
self.unsubscribe(user_id, Subscriptions::from_raw(Subscriptions::VOICE))
}
pub fn unmute_user_voice(&self, user_id: UserId) -> i32 {
self.subscribe(user_id, Subscriptions::from_raw(Subscriptions::VOICE))
}
pub fn mute_user_media(&self, user_id: UserId) -> i32 {
self.unsubscribe(user_id, Subscriptions::from_raw(Subscriptions::MEDIAFILE))
}
pub fn unmute_user_media(&self, user_id: UserId) -> i32 {
self.subscribe(user_id, Subscriptions::from_raw(Subscriptions::MEDIAFILE))
}
}