mod_csi_muc_priorities/mod_csi_muc_priorities.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:26:26 +0100
changeset 5063 5f1120c284c5
parent 4018 1b68954a743a
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:
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
     1
local jid_bare, jid_split = import("util.jid", "bare", "split");
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
     2
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
     3
-- luacheck: ignore 122
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
     4
local user_sessions = prosody.hosts[module.host].sessions;
3536
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
module:hook("csi-is-stanza-important", function (event)
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
	local stanza, session = event.stanza, event.session;
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
	if stanza.name == "message" then
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
		if stanza.attr.type == "groupchat" then
3538
700340b57851 mod_csi_muc_priorities: Break out room jid into a variable
Kim Alvefur <zash@zash.se>
parents: 3537
diff changeset
    10
			local room_jid = jid_bare(stanza.attr.from);
700340b57851 mod_csi_muc_priorities: Break out room jid into a variable
Kim Alvefur <zash@zash.se>
parents: 3537
diff changeset
    11
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    12
			local username = session.username;
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    13
			local priorities = user_sessions[username].csi_muc_priorities;
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    14
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    15
			if priorities then
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    16
				local priority = priorities[room_jid];
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    17
				if priority ~= nil then
4018
1b68954a743a mod_csi_muc_priorities: Report reason for importance decision
Kim Alvefur <zash@zash.se>
parents: 3996
diff changeset
    18
					event.reason = "muc priority";
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    19
					return priority;
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    20
				end
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    21
			end
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    22
3539
bcb0eb9121a9 mod_csi_muc_priorities: Add a comment
Kim Alvefur <zash@zash.se>
parents: 3538
diff changeset
    23
			-- Look for mention
3536
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
			local rooms = session.rooms_joined;
3542
946902fa4088 mod_csi_muc_priorities: Undo early return to make following commit clearer
Kim Alvefur <zash@zash.se>
parents: 3541
diff changeset
    25
			if rooms then
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    26
				local body = stanza:get_child_text("body");
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    27
				if not body then return end
3542
946902fa4088 mod_csi_muc_priorities: Undo early return to make following commit clearer
Kim Alvefur <zash@zash.se>
parents: 3541
diff changeset
    28
				local room_nick = rooms[room_jid];
946902fa4088 mod_csi_muc_priorities: Undo early return to make following commit clearer
Kim Alvefur <zash@zash.se>
parents: 3541
diff changeset
    29
				if room_nick then
946902fa4088 mod_csi_muc_priorities: Undo early return to make following commit clearer
Kim Alvefur <zash@zash.se>
parents: 3541
diff changeset
    30
					if body:find(room_nick, 1, true) then
4018
1b68954a743a mod_csi_muc_priorities: Report reason for importance decision
Kim Alvefur <zash@zash.se>
parents: 3996
diff changeset
    31
						event.reason = "muc mention";
3542
946902fa4088 mod_csi_muc_priorities: Undo early return to make following commit clearer
Kim Alvefur <zash@zash.se>
parents: 3541
diff changeset
    32
						return true;
946902fa4088 mod_csi_muc_priorities: Undo early return to make following commit clearer
Kim Alvefur <zash@zash.se>
parents: 3541
diff changeset
    33
					end
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    34
					-- Your own messages
3543
6d51f44bc725 mod_csi_muc_priorities: Consider own MUC messages as important
Kim Alvefur <zash@zash.se>
parents: 3542
diff changeset
    35
					if stanza.attr.from == (room_jid .. "/" .. room_nick) then
4018
1b68954a743a mod_csi_muc_priorities: Report reason for importance decision
Kim Alvefur <zash@zash.se>
parents: 3996
diff changeset
    36
					event.reason = "muc own message";
3543
6d51f44bc725 mod_csi_muc_priorities: Consider own MUC messages as important
Kim Alvefur <zash@zash.se>
parents: 3542
diff changeset
    37
						return true;
6d51f44bc725 mod_csi_muc_priorities: Consider own MUC messages as important
Kim Alvefur <zash@zash.se>
parents: 3542
diff changeset
    38
					end
3542
946902fa4088 mod_csi_muc_priorities: Undo early return to make following commit clearer
Kim Alvefur <zash@zash.se>
parents: 3541
diff changeset
    39
				end
946902fa4088 mod_csi_muc_priorities: Undo early return to make following commit clearer
Kim Alvefur <zash@zash.se>
parents: 3541
diff changeset
    40
			end
3632
2444fb3b05b7 mod_csi_muc_priorities: Signal unimportance (thanks tmolitor)
Kim Alvefur <zash@zash.se>
parents: 3605
diff changeset
    41
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    42
			-- Standard importance and no mention, leave to other modules to decide for now
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    43
			return nil;
3536
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    44
		end
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    45
	end
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    46
end);
85c357b69eec mod_csi_muc_priorities: Reduce importance of group chat messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    47
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    48
module:depends("adhoc");
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    49
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    50
local dataform = require"util.dataforms";
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    51
local adhoc_inital_data = require "util.adhoc".new_initial_data_form;
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    52
local instructions = [[
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    53
These settings affect battery optimizations performed by the server
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    54
while your client has indicated that it is inactive.
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    55
]]
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    56
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    57
local priority_settings_form = dataform.new {
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    58
	title = "Prioritize addresses of group chats";
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    59
	instructions = instructions;
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    60
	{
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    61
		type = "hidden";
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    62
		name = "FORM_TYPE";
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    63
		value = "xmpp:modules.prosody.im/mod_"..module.name;
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    64
	};
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    65
	{
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    66
		type = "jid-multi";
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    67
		name = "important";
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    68
		label = "Higher priority";
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    69
		desc = "Group chats more important to you";
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    70
	};
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    71
	{
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    72
		type = "jid-multi";
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    73
		name = "unimportant";
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    74
		label = "Lower priority";
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    75
		desc = "E.g. large noisy public channels";
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    76
	};
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    77
}
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    78
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    79
local store = module:open_store();
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    80
module:hook("resource-bind", function (event)
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    81
	local username = event.session.username;
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    82
	user_sessions[username].csi_muc_priorities = store:get(username);
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    83
end);
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    84
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    85
local adhoc_command_handler = adhoc_inital_data(priority_settings_form, function (data)
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    86
	local username = jid_split(data.from);
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    87
	local prioritized_jids = user_sessions[username].csi_muc_priorities or store:get(username);
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    88
	local important = {};
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    89
	local unimportant = {};
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    90
	if prioritized_jids then
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    91
		for jid, priority in pairs(prioritized_jids) do
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    92
			if priority then
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    93
				table.insert(important, jid);
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    94
			else
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    95
				table.insert(unimportant, jid);
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    96
			end
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
    97
		end
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
    98
		table.sort(important);
3541
7d6fb9570395 mod_csi_muc_priorities: Sort list of JIDs
Kim Alvefur <zash@zash.se>
parents: 3540
diff changeset
    99
		table.sort(unimportant);
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   100
	end
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
   101
	return {
3992
569f754bd126 mod_csi_muc_priorities: Adjust indentation
Kim Alvefur <zash@zash.se>
parents: 3758
diff changeset
   102
		important = important;
569f754bd126 mod_csi_muc_priorities: Adjust indentation
Kim Alvefur <zash@zash.se>
parents: 3758
diff changeset
   103
		unimportant = unimportant;
569f754bd126 mod_csi_muc_priorities: Adjust indentation
Kim Alvefur <zash@zash.se>
parents: 3758
diff changeset
   104
	};
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   105
end, function(fields, form_err, data)
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   106
	if form_err then
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   107
		return { status = "completed", error = { message = "Problem in submitted form" } };
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   108
	end
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   109
	local prioritized_jids = {};
3605
013ef96a6d4d mod_csi_muc_priorities: Fix traceback due to empty field
Kim Alvefur <zash@zash.se>
parents: 3544
diff changeset
   110
	if fields.unimportant then
3996
0233da912ab6 mod_csi_muc_priorities: Fix bad argument to 'ipairs' on a missing list
Kim Alvefur <zash@zash.se>
parents: 3992
diff changeset
   111
		if fields.unimportant then
0233da912ab6 mod_csi_muc_priorities: Fix bad argument to 'ipairs' on a missing list
Kim Alvefur <zash@zash.se>
parents: 3992
diff changeset
   112
			for _, jid in ipairs(fields.unimportant) do
0233da912ab6 mod_csi_muc_priorities: Fix bad argument to 'ipairs' on a missing list
Kim Alvefur <zash@zash.se>
parents: 3992
diff changeset
   113
				prioritized_jids[jid] = false;
0233da912ab6 mod_csi_muc_priorities: Fix bad argument to 'ipairs' on a missing list
Kim Alvefur <zash@zash.se>
parents: 3992
diff changeset
   114
			end
3605
013ef96a6d4d mod_csi_muc_priorities: Fix traceback due to empty field
Kim Alvefur <zash@zash.se>
parents: 3544
diff changeset
   115
		end
3996
0233da912ab6 mod_csi_muc_priorities: Fix bad argument to 'ipairs' on a missing list
Kim Alvefur <zash@zash.se>
parents: 3992
diff changeset
   116
		if fields.important then
0233da912ab6 mod_csi_muc_priorities: Fix bad argument to 'ipairs' on a missing list
Kim Alvefur <zash@zash.se>
parents: 3992
diff changeset
   117
			for _, jid in ipairs(fields.important) do
0233da912ab6 mod_csi_muc_priorities: Fix bad argument to 'ipairs' on a missing list
Kim Alvefur <zash@zash.se>
parents: 3992
diff changeset
   118
				prioritized_jids[jid] = true;
0233da912ab6 mod_csi_muc_priorities: Fix bad argument to 'ipairs' on a missing list
Kim Alvefur <zash@zash.se>
parents: 3992
diff changeset
   119
			end
3758
d77a61d81555 mod_csi_muc_priorities: Add a high priority list (BC)
Kim Alvefur <zash@zash.se>
parents: 3632
diff changeset
   120
		end
3540
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   121
	end
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   122
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   123
	local username = jid_split(data.from);
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   124
	local ok, err = store:set(username, prioritized_jids);
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   125
	if ok then
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   126
		user_sessions[username].csi_muc_priorities = prioritized_jids;
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   127
		return { status = "completed", info = "Priorities updated" };
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   128
	else
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   129
		return { status = "completed", error = { message = "Error saving priorities: "..err } };
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   130
	end
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   131
end);
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   132
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   133
module:add_item("adhoc", module:require "adhoc".new("Configure group chat priorities",
eed657091329 mod_csi_muc_priorities: Allow specifying which MUC JIDs are less important
Kim Alvefur <zash@zash.se>
parents: 3539
diff changeset
   134
	"xmpp:modules.prosody.im/mod_"..module.name, adhoc_command_handler, "local_user"));