diff options
Diffstat (limited to '')
| -rw-r--r-- | src/message/signalproxy/objects/identity.rs | 112 |
1 files changed, 91 insertions, 21 deletions
diff --git a/src/message/signalproxy/objects/identity.rs b/src/message/signalproxy/objects/identity.rs index e173689..de89105 100644 --- a/src/message/signalproxy/objects/identity.rs +++ b/src/message/signalproxy/objects/identity.rs @@ -1,43 +1,113 @@ -use libquassel_derive::NetworkMap; +#[allow(unused_imports)] +use libquassel_derive::sync; +use libquassel_derive::{NetworkList, NetworkMap, Setters}; -#[derive(Debug, Clone, PartialEq, NetworkMap)] +#[allow(unused_imports)] +use crate::message::StatefulSyncableClient; +#[allow(unused_imports)] +use crate::message::StatefulSyncableServer; + +use crate::message::Syncable; + +#[allow(unused_imports)] +use crate::message::signalproxy::translation::NetworkMap; + +#[derive(Debug, Clone, PartialEq, NetworkMap, NetworkList, Setters)] pub struct Identity { - #[network(rename = "identityId")] + #[quassel(name = "identityId")] identity_id: i32, - #[network(rename = "identityName")] + #[quassel(name = "identityName")] identity_name: String, - #[network(rename = "realName")] + #[quassel(name = "realName")] real_name: String, - #[network(rename = "nicks", type = "StringList")] + #[quassel(name = "nicks")] + #[network(type = "StringList")] nicks: Vec<String>, - #[network(rename = "awayNick")] + #[quassel(name = "awayNick")] away_nick: String, - #[network(rename = "awayNickEnabled")] + #[quassel(name = "awayNickEnabled")] away_nick_enabled: bool, - #[network(rename = "awayReason")] + #[quassel(name = "awayReason")] away_reason: String, - #[network(rename = "awayReasonEnabled")] + #[quassel(name = "awayReasonEnabled")] away_reason_enabled: bool, - #[network(rename = "autoAwayEnabled")] + #[quassel(name = "autoAwayEnabled")] auto_away_enabled: bool, - #[network(rename = "autoAwayTime")] + #[quassel(name = "autoAwayTime")] auto_away_time: i32, - #[network(rename = "autoAwayReason")] + #[quassel(name = "autoAwayReason")] auto_away_reason: String, - #[network(rename = "autoAwayReasonEnabled")] + #[quassel(name = "autoAwayReasonEnabled")] auto_away_reason_enabled: bool, - #[network(rename = "detachAwayEnabled")] + #[quassel(name = "detachAwayEnabled")] detach_away_enabled: bool, - #[network(rename = "detachAwayReason")] + #[quassel(name = "detachAwayReason")] detach_away_reason: String, - #[network(rename = "detachAwayReasonEnabled")] + #[quassel(name = "detachAwayReasonEnabled")] detach_away_reason_enabled: bool, - #[network(rename = "ident")] + #[quassel(name = "ident")] ident: String, - #[network(rename = "kickReason")] + #[quassel(name = "kickReason")] kick_reason: String, - #[network(rename = "partReason")] + #[quassel(name = "partReason")] part_reason: String, - #[network(rename = "quitReason")] + #[quassel(name = "quitReason")] quit_reason: String, } + +impl Identity { + pub fn copy_from(&mut self, other: Identity) { + #[cfg(feature = "server")] + sync!("copyFrom", [other.to_network_map()]); + + *self = other; + } +} + +#[cfg(feature = "client")] +impl StatefulSyncableClient for Identity { + fn sync_custom(&mut self, mut msg: crate::message::SyncMessage) + where + Self: Sized, + { + match msg.slot_name.as_str() { + "copyFrom" => self.copy_from(Identity::from_network_map(&mut get_param!(msg))), + "setAutoAwayEnabled" => self.set_auto_away_enabled(get_param!(msg)), + "setAutoAwayReason" => self.set_auto_away_reason(get_param!(msg)), + "setAutoAwayReasonEnabled" => self.set_auto_away_reason_enabled(get_param!(msg)), + "setAutoAwayTime" => self.set_auto_away_time(get_param!(msg)), + "setAwayNick" => self.set_away_nick(get_param!(msg)), + "setAwayNickEnabled" => self.set_away_nick_enabled(get_param!(msg)), + "setAwayReason" => self.set_away_reason(get_param!(msg)), + "setAwayReasonEnabled" => self.set_away_reason_enabled(get_param!(msg)), + "setDetachAwayEnabled" => self.set_detach_away_enabled(get_param!(msg)), + "setDetachAwayReason" => self.set_detach_away_reason(get_param!(msg)), + "setDetachAwayReasonEnabled" => self.set_detach_away_reason_enabled(get_param!(msg)), + "setId" => self.set_identity_id(get_param!(msg)), + "setIdent" => self.set_ident(get_param!(msg)), + "setIdentityName" => self.set_identity_name(get_param!(msg)), + "setKickReason" => self.set_kick_reason(get_param!(msg)), + "setNicks" => self.set_nicks(get_param!(msg)), + "setPartReason" => self.set_part_reason(get_param!(msg)), + "setQuitReason" => self.set_quit_reason(get_param!(msg)), + "setRealName" => self.set_real_name(get_param!(msg)), + _ => (), + } + } +} + +#[cfg(feature = "server")] +impl StatefulSyncableServer for Identity {} + +impl Syncable for Identity { + const CLASS: &'static str = "Identity"; + + fn send_sync(&self, function: &str, params: crate::primitive::VariantList) { + crate::message::signalproxy::SYNC_PROXY.get().unwrap().sync( + Self::CLASS, + Some(&self.identity_id.to_string()), + function, + params, + ); + } +} |
