Mercurial > prosody-modules
comparison mod_groups_internal/mod_groups_internal.lua @ 5800:8566a423da88
mod_groups_internal: Set group names as roster groups
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 23 Dec 2023 17:27:35 +0100 |
parents | 5533c577dd02 |
children | 742142f9771e |
comparison
equal
deleted
inserted
replaced
5799:c75328aeaba3 | 5800:8566a423da88 |
---|---|
16 | 16 |
17 local is_contact_subscribed = rostermanager.is_contact_subscribed; | 17 local is_contact_subscribed = rostermanager.is_contact_subscribed; |
18 | 18 |
19 -- Make a *one-way* subscription. User will see when contact is online, | 19 -- Make a *one-way* subscription. User will see when contact is online, |
20 -- contact will not see when user is online. | 20 -- contact will not see when user is online. |
21 local function subscribe(user, user_jid, contact, contact_jid) | 21 local function subscribe(user, user_jid, contact, contact_jid, group_name) |
22 -- Update user's roster to say subscription request is pending... | 22 -- Update user's roster to say subscription request is pending... |
23 rostermanager.set_contact_pending_out(user, host, contact_jid); | 23 rostermanager.set_contact_pending_out(user, host, contact_jid); |
24 -- Update contact's roster to say subscription request is pending... | 24 -- Update contact's roster to say subscription request is pending... |
25 rostermanager.set_contact_pending_in(contact, host, user_jid); | 25 rostermanager.set_contact_pending_in(contact, host, user_jid); |
26 -- Update contact's roster to say subscription request approved... | 26 -- Update contact's roster to say subscription request approved... |
27 rostermanager.subscribed(contact, host, user_jid); | 27 rostermanager.subscribed(contact, host, user_jid); |
28 -- Update user's roster to say subscription request approved... | 28 -- Update user's roster to say subscription request approved... |
29 rostermanager.process_inbound_subscription_approval(user, host, contact_jid); | 29 rostermanager.process_inbound_subscription_approval(user, host, contact_jid); |
30 | 30 |
31 if group_name then | |
32 local user_roster = rostermanager.load_roster(user, host); | |
33 user_roster[contact_jid].groups[group_name] = true; | |
34 end | |
35 | |
31 -- Push updates to both rosters | 36 -- Push updates to both rosters |
32 rostermanager.roster_push(user, host, contact_jid); | 37 rostermanager.roster_push(user, host, contact_jid); |
33 rostermanager.roster_push(contact, host, user_jid); | 38 rostermanager.roster_push(contact, host, user_jid); |
34 end | 39 end |
35 | 40 |
38 end | 43 end |
39 | 44 |
40 local function do_single_group_subscriptions(username, group_id) | 45 local function do_single_group_subscriptions(username, group_id) |
41 local members = group_members_store:get(group_id); | 46 local members = group_members_store:get(group_id); |
42 if not members then return; end | 47 if not members then return; end |
48 local group_name = group_info_store:get_key(group_id, "name"); | |
43 local user_jid = jid_join(username, host); | 49 local user_jid = jid_join(username, host); |
44 for membername in pairs(members) do | 50 for membername in pairs(members) do |
45 if membername ~= username then | 51 if membername ~= username then |
46 local member_jid = jid_join(membername, host); | 52 local member_jid = jid_join(membername, host); |
47 if not is_contact_subscribed(username, host, member_jid) then | 53 if not is_contact_subscribed(username, host, member_jid) then |
48 module:log("debug", "[group %s] Subscribing %s to %s", member_jid, user_jid); | 54 module:log("debug", "[group %s] Subscribing %s to %s", member_jid, user_jid); |
49 subscribe(membername, member_jid, username, user_jid); | 55 subscribe(membername, member_jid, username, user_jid, group_name); |
50 end | 56 end |
51 if not is_contact_subscribed(membername, host, user_jid) then | 57 if not is_contact_subscribed(membername, host, user_jid) then |
52 module:log("debug", "[group %s] Subscribing %s to %s", user_jid, member_jid); | 58 module:log("debug", "[group %s] Subscribing %s to %s", user_jid, member_jid); |
53 subscribe(username, user_jid, membername, member_jid); | 59 subscribe(username, user_jid, membername, member_jid, group_name); |
54 end | 60 end |
55 end | 61 end |
56 end | 62 end |
57 end | 63 end |
58 | 64 |