aboutsummaryrefslogtreecommitdiff
path: root/src/message/signalproxy/objects/highlightrulemanager.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/message/signalproxy/objects/highlightrulemanager.rs75
1 files changed, 43 insertions, 32 deletions
diff --git a/src/message/signalproxy/objects/highlightrulemanager.rs b/src/message/signalproxy/objects/highlightrulemanager.rs
index 9af0b4c..aa9fe25 100644
--- a/src/message/signalproxy/objects/highlightrulemanager.rs
+++ b/src/message/signalproxy/objects/highlightrulemanager.rs
@@ -10,6 +10,7 @@ use crate::message::StatefulSyncableServer;
use crate::message::Syncable;
use crate::primitive::Variant;
+use crate::Result;
#[derive(Default, Debug, Clone, PartialEq, NetworkList, NetworkMap)]
pub struct HighlightRuleManager {
@@ -40,11 +41,11 @@ impl HighlightRuleManager {
}
}
- pub fn request_remove_highlight_rule(&self, id: i32) {
+ pub fn request_remove_highlight_rule(&self, id: i32) -> Result<()> {
sync!("requestRemoveHighlightRule", [id])
}
- pub fn request_toggle_highlight_rule(&self, id: i32) {
+ pub fn request_toggle_highlight_rule(&self, id: i32) -> Result<()> {
sync!("requestToggleHighlightRule", [id])
}
@@ -58,7 +59,7 @@ impl HighlightRuleManager {
is_inverse: bool,
sender: String,
channel: String,
- ) {
+ ) -> Result<()> {
sync!(
"requestAddHighlightRule",
[
@@ -74,69 +75,81 @@ impl HighlightRuleManager {
)
}
- pub fn request_set_highlight_nick(&self, nick: HighlightNickType) {
+ pub fn request_set_highlight_nick(&self, nick: HighlightNickType) -> Result<()> {
sync!("requestSetHighlightNick", [nick])
}
- pub fn request_set_nicks_case_sensitive(&self, enabled: bool) {
+ pub fn request_set_nicks_case_sensitive(&self, enabled: bool) -> Result<()> {
sync!("requestSetNicksCaseSensitive", [enabled])
}
- pub fn remove_highlight_rule(&mut self, id: i32) {
+ pub fn remove_highlight_rule(&mut self, id: i32) -> Result<()> {
if let Some(position) = self.highlight_rule_list.iter().position(|rule| rule.id == id) {
self.highlight_rule_list.remove(position);
}
#[cfg(feature = "server")]
- sync!("removeHighlightRule", [id]);
+ return sync!("removeHighlightRule", [id]);
+
+ #[cfg(feature = "client")]
+ return Ok(());
}
- pub fn toggle_highlight_rule(&mut self, id: i32) {
+ pub fn toggle_highlight_rule(&mut self, id: i32) -> Result<()> {
if let Some(rule) = self.highlight_rule_mut(id) {
rule.is_enabled = !rule.is_enabled;
}
#[cfg(feature = "server")]
- sync!("toggleHighlightRule", [id])
+ return sync!("toggleHighlightRule", [id]);
+
+ #[cfg(feature = "client")]
+ return Ok(());
}
- pub fn add_highlight_rule(&mut self, rule: HighlightRule) {
+ pub fn add_highlight_rule(&mut self, rule: HighlightRule) -> Result<()> {
#[cfg(feature = "server")]
sync!(
"addHighlightRule",
[
- rule.id.clone(),
+ rule.id,
rule.name.clone(),
- rule.is_regex.clone(),
- rule.is_case_sensitive.clone(),
- rule.is_enabled.clone(),
- rule.is_inverse.clone(),
+ rule.is_regex,
+ rule.is_case_sensitive,
+ rule.is_enabled,
+ rule.is_inverse,
rule.sender.clone(),
rule.channel.clone()
]
- );
+ )?;
self.highlight_rule_list.push(rule);
+
+ Ok(())
}
- pub fn set_highlight_nick(&mut self, nick: HighlightNickType) {
+ pub fn set_highlight_nick(&mut self, nick: HighlightNickType) -> Result<()> {
#[cfg(feature = "server")]
- sync!("setHighlightNick", [Variant::from(nick)]);
+ sync!("setHighlightNick", [Variant::from(nick)])?;
self.highlight_nick = nick;
+
+ Ok(())
}
- pub fn set_nicks_case_sensitive(&mut self, enabled: bool) {
+ pub fn set_nicks_case_sensitive(&mut self, enabled: bool) -> Result<()> {
#[cfg(feature = "server")]
- sync!("setNicksCaseSensitive", [enabled]);
+ sync!("setNicksCaseSensitive", [enabled])?;
self.nicks_case_sensitive = enabled;
+
+ Ok(())
}
}
#[cfg(feature = "client")]
impl StatefulSyncableClient for HighlightRuleManager {
- fn sync_custom(&mut self, mut msg: crate::message::SyncMessage) -> Result<(), ProtocolError>
+ fn sync_custom(&mut self, mut msg: crate::message::SyncMessage) -> Result<()>
where
Self: Sized,
{
@@ -155,15 +168,14 @@ impl StatefulSyncableClient for HighlightRuleManager {
}),
"setHighlightNick" => self.set_highlight_nick(get_param!(msg)),
"setNicksCaseSensitive" => self.set_nicks_case_sensitive(get_param!(msg)),
- _ => (),
+ _ => Ok(()),
}
- Ok(())
}
}
#[cfg(feature = "server")]
impl StatefulSyncableServer for HighlightRuleManager {
- fn sync_custom(&mut self, mut msg: crate::message::SyncMessage) -> Result<(), ProtocolError>
+ fn sync_custom(&mut self, mut msg: crate::message::SyncMessage) -> Result<()>
where
Self: Sized,
{
@@ -182,9 +194,8 @@ impl StatefulSyncableServer for HighlightRuleManager {
}),
"requestSetHighlightNick" => self.set_highlight_nick(get_param!(msg)),
"requestSetNicksCaseSensitive" => self.set_nicks_case_sensitive(get_param!(msg)),
- _ => (),
+ _ => Ok(()),
}
- Ok(())
}
}
@@ -229,7 +240,7 @@ impl From<HighlightNickType> for Variant {
impl TryFrom<Variant> for HighlightNickType {
type Error = ProtocolError;
- fn try_from(value: Variant) -> Result<Self, Self::Error> {
+ fn try_from(value: Variant) -> Result<Self> {
let i: i32 = value.try_into()?;
Self::try_from(i).map_err(|_| ProtocolError::WrongVariant)
}
@@ -242,14 +253,14 @@ impl From<HighlightNickType> for i32 {
}
impl TryFrom<i32> for HighlightNickType {
- type Error = &'static str;
+ type Error = ProtocolError;
- fn try_from(value: i32) -> Result<Self, Self::Error> {
+ fn try_from(value: i32) -> Result<Self> {
match value {
0x00 => Ok(HighlightNickType::NoNick),
0x01 => Ok(HighlightNickType::CurrentNick),
0x02 => Ok(HighlightNickType::AllNicks),
- _ => Err("no matching HighlightNickType found"),
+ err => Err(ProtocolError::UnknownHighlightNickType(err)),
}
}
}
@@ -301,13 +312,13 @@ mod tests {
#[test]
fn highlightrulemanager_to_network() {
- assert_eq!(get_runtime().to_network_list(), get_network())
+ assert_eq!(get_runtime().to_network_list().unwrap(), get_network())
}
#[test]
fn highlightrulemanager_from_network() {
assert_eq!(
- HighlightRuleManager::from_network_list(&mut get_network()),
+ HighlightRuleManager::from_network_list(&mut get_network()).unwrap(),
get_runtime()
)
}