mod_adhoc_groups/mod_adhoc_groups.lua
author Matthew Wild <mwild1@gmail.com>
Fri, 23 Sep 2022 22:41:15 +0100
changeset 5058 62480053c87b
parent 4035 b2a6e163a6b4
permissions -rw-r--r--
mod_cloud_notify_encrypted: Additional debug logging when enabling/skipping
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
local rostermanager = require"core.rostermanager";
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
local jid_join = require"util.jid".join;
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
     3
local jid_split = require"util.jid".split;
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
local host = module.host;
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
     5
local st = require "util.stanza";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
     6
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
     7
local groups = module:open_store("groups");
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
     8
local memberships = module:open_store("groups", "map");
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
     9
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    10
module:depends("adhoc");
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    11
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    12
local adhoclib = module:require "adhoc";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    13
local dataform = require"util.dataforms";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    14
local adhoc_inital_data = require "util.adhoc".new_initial_data_form;
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    16
-- Make a *one-way* subscription. User will see when contact is online,
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
-- contact will not see when user is online.
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
local function subscribe(user, contact)
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    19
	local user_jid, contact_jid = jid_join(user, host), jid_join(contact, host);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    20
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
	-- Update user's roster to say subscription request is pending...
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    22
	rostermanager.set_contact_pending_out(user, host, contact_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    23
	-- Update contact's roster to say subscription request is pending...
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
	rostermanager.set_contact_pending_in(contact, host, user_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    25
	-- Update contact's roster to say subscription request approved...
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    26
	rostermanager.subscribed(contact, host, user_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    27
	-- Update user's roster to say subscription request approved...
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    28
	rostermanager.process_inbound_subscription_approval(user, host, contact_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    29
1802
3ae8c81a348b mod_roster_allinall: Cleanup, remove unused variables [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1545
diff changeset
    30
	-- Push updates to both rosters
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    31
	rostermanager.roster_push(user, host, contact_jid);
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    32
	rostermanager.roster_push(contact, host, user_jid);
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    33
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    34
	module:send(st.presence({ type = "probe", from = user_jid, to = contact_jid }));
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    35
end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    36
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    37
local create_form = dataform.new {
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    38
	title = "Create a new group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    39
	{
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    40
		type = "hidden";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    41
		name = "FORM_TYPE";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    42
		value = "xmpp:zash.se/adhoc_groups#new";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    43
	};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    44
	{
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    45
		type = "text-single";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    46
		name = "group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    47
		label = "Name of group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    48
		required = true;
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    49
	};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    50
};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    51
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    52
local join_form = dataform.new {
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    53
	title = "Pick the group to join";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    54
	{
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    55
		type = "hidden";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    56
		name = "FORM_TYPE";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    57
		value = "xmpp:zash.se/adhoc_groups#join";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    58
	};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    59
	{
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    60
		type = "list-single";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    61
		name = "group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    62
		label = "Available groups";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    63
		required = true;
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    64
	};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    65
};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    66
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    67
local function _(f)
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    68
	return function (fields, form_err, data)
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    69
		local ok, message = f(fields, form_err, data);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    70
		if ok then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    71
			return { status = "completed", info = message };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    72
		else
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    73
			return { status = "completed", error = { message = message} };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    74
		end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    75
	end
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    76
end
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    77
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    78
module:add_item("adhoc",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    79
	adhoclib.new("Create group",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    80
		"xmpp:zash.se/adhoc_groups#new",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    81
		adhoc_inital_data(create_form,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    82
			function ()
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    83
				return {};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    84
			end,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    85
			_(function (fields, form_err, data)
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    86
				local user = jid_split(data.from);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    87
				if form_err then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    88
					return false, "Problem in submitted form";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    89
				end
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    90
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    91
				local group, err = groups:get(fields.group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    92
				if group then
4035
b2a6e163a6b4 mod_adhoc_groups: Fix check for error on group creation
Kim Alvefur <zash@zash.se>
parents: 4034
diff changeset
    93
					return false, "That group already exists";
b2a6e163a6b4 mod_adhoc_groups: Fix check for error on group creation
Kim Alvefur <zash@zash.se>
parents: 4034
diff changeset
    94
				elseif err then
b2a6e163a6b4 mod_adhoc_groups: Fix check for error on group creation
Kim Alvefur <zash@zash.se>
parents: 4034
diff changeset
    95
					return false, "An error occurred on the server. Please try again later.";
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    96
				end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    97
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
    98
				if not groups:set(fields.group, { [user] = true }) then
2874
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2852
diff changeset
    99
					return false, "An error occurred while creating the group";
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   100
				end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   101
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   102
				return true, ("The %s group has been created"):format(fields.group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   103
			end)), "local_user")); -- Maybe admins only?
1545
a104a159697d mod_roster_allinall: Adds all online users to the roster of newly signed in users, for a lazy everyone-in-everyones roster setup
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   104
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   105
module:add_item("adhoc",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   106
	adhoclib.new("Join group",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   107
		"xmpp:zash.se/adhoc_groups#join",
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   108
		adhoc_inital_data(join_form,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   109
			function ()
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   110
				local group_list = {};
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   111
				for group in groups:users() do
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   112
					table.insert(group_list, group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   113
					module:log("debug", "Group: %q", group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   114
				end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   115
				table.sort(group_list);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   116
				return { group = group_list };
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   117
			end,
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   118
			_(function (fields, form_err, data)
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   119
				local user = jid_split(data.from);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   120
				if form_err then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   121
					return false, "Problem in submitted form";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   122
				end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   123
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   124
				local group, err = groups:get(fields.group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   125
				if not group then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   126
					if err then
2874
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2852
diff changeset
   127
						return false, "An error occurred on the server. Please try again later.";
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   128
					else
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   129
						return false, "No such group";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   130
					end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   131
				end
4034
0d7293c37e1a mod_adhoc_groups: Fix responding with "You are already in this group." (was never sent before)
Karol Topolski <ktopolski.it@gmail.com>
parents: 2874
diff changeset
   132
				if group[user] then
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   133
					return false, "You are already in this group.";
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   134
				end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   135
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   136
				if not memberships:set(fields.group, user, true) then
2874
d8325dfb6a13 mod_adhoc_groups: Fix typos [codespell]
Kim Alvefur <zash@zash.se>
parents: 2852
diff changeset
   137
					return false, "An error occurred while adding you to the group";
2852
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   138
				end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   139
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   140
				for member in pairs(group) do
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   141
					if member ~= user then
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   142
						subscribe(user, member);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   143
						subscribe(member, user);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   144
					end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   145
				end
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   146
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   147
				return true, ("Welcome to the %s group"):format(fields.group);
232da6b1d2c1 mod_adhoc_groups: Allow users to create and join roster groups
Kim Alvefur <zash@zash.se>
parents: 2851
diff changeset
   148
			end)), "local_user"));