aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/message/signalproxy/objects/identity.rs112
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,
+ );
+ }
+}