summaryrefslogtreecommitdiff
path: root/modules/mod_csi_on_away.lua
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mod_csi_on_away.lua')
-rw-r--r--modules/mod_csi_on_away.lua29
1 files changed, 29 insertions, 0 deletions
diff --git a/modules/mod_csi_on_away.lua b/modules/mod_csi_on_away.lua
new file mode 100644
index 0000000..90a76a0
--- /dev/null
+++ b/modules/mod_csi_on_away.lua
@@ -0,0 +1,29 @@
+local st = require "util.stanza";
+
+
+-- Make sure we only load this module when CSI itself is deployed
+module:depends("csi");
+
+
+local function on_presence(event)
+ if not event.origin.username then
+ return nil;
+ end
+
+ local child = event.stanza:get_child("show");
+
+ if child and child:get_text() == "away" then
+ module:log("debug", "User is now away, simulating CSI.");
+ module:fire_event("csi-client-inactive", event);
+ else
+ module:log("debug", "User is no longer away, ending simulated CSI.");
+ module:fire_event("csi-client-active", event);
+ end
+end
+
+
+-- outgoing
+module:hook("pre-presence/bare", on_presence);
+module:hook("pre-presence/full", on_presence);
+module:hook("pre-presence/host", on_presence);
+