mod_idlecompat/mod_idlecompat.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:26:26 +0100
changeset 5063 5f1120c284c5
parent 2168 4b58e35a72e0
permissions -rw-r--r--
mod_cloud_notify_extensions: Add note about dependency Noting here because people might not click through to see it on the mod_cloud_notify_encrypted page.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1260
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
     1
-- Last User Interaction in Presence via Last Activity compatibility module
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
     2
-- http://xmpp.org/extensions/xep-0319.html
2168
4b58e35a72e0 mod_idlecompat: Reference the correct XEP (256, not 12) and drop a redundant check
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1260
diff changeset
     3
-- http://xmpp.org/extensions/xep-0256.html
1260
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
     4
-- Copyright (C) 2014 Tobias Markmann
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
     5
--
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
     6
-- This file is MIT/X11 licensed.
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
     7
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
     8
local st = require "util.stanza";
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
     9
local datetime = require "util.datetime";
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    10
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    11
local function on_presence(event)
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    12
	local stanza = event.stanza;
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    13
2168
4b58e35a72e0 mod_idlecompat: Reference the correct XEP (256, not 12) and drop a redundant check
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1260
diff changeset
    14
	local last_activity = stanza:get_child("query", "jabber:iq:last");
1260
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    15
	local has_idle = stanza:get_child("idle", "urn:xmpp:idle:1");
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    16
	if last_activity and not has_idle then
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    17
		module:log("debug", "Adding XEP-0319 tag from Last Activity.");
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    18
		local seconds = last_activity.attr.seconds;
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    19
		local last_userinteraction = datetime.datetime(os.time() - seconds);
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    20
		stanza:tag("idle", { xmlns = "urn:xmpp:idle:1", since = last_userinteraction }):up();
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    21
	end
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    22
end
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    23
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    24
-- incoming
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    25
module:hook("presence/full", on_presence, 900);
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    26
module:hook("presence/bare", on_presence, 900);
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    27
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    28
-- outgoing
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    29
module:hook("pre-presence/bare", on_presence, 900);
4e14ad802d58 mod_idlecompat: Add initial version.
Tobias Markmann <tm@ayena.de>
parents:
diff changeset
    30
module:hook("pre-presence/full", on_presence, 900);
2168
4b58e35a72e0 mod_idlecompat: Reference the correct XEP (256, not 12) and drop a redundant check
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1260
diff changeset
    31
module:hook("pre-presence/host", on_presence, 900);