author | Matthew Wild <mwild1@gmail.com> |
Sun, 28 Aug 2022 11:11:50 +0100 | |
changeset 5022 | ed2a9a4c4f01 |
parent 4035 | b2a6e163a6b4 |
permissions | -rw-r--r-- |
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")); |