Software /
code /
prosody-modules
Comparison
mod_groups_internal/mod_groups_internal.lua @ 6208:e20901443eae draft
Merge
author | Trần H. Trung <xmpp:trần.h.trung@trung.fun> |
---|---|
date | Mon, 17 Mar 2025 23:42:11 +0700 |
parent | 5848:865c77b5c6dc |
child | 6211:750d64c47ec6 |
comparison
equal
deleted
inserted
replaced
5945:805515dd2960 | 6208:e20901443eae |
---|---|
9 | 9 |
10 local group_info_store = module:open_store("group_info", "keyval+"); | 10 local group_info_store = module:open_store("group_info", "keyval+"); |
11 local group_members_store = module:open_store("groups"); | 11 local group_members_store = module:open_store("groups"); |
12 local group_memberships = module:open_store("groups", "map"); | 12 local group_memberships = module:open_store("groups", "map"); |
13 | 13 |
14 local muc_host_name = module:get_option("groups_muc_host", "groups."..host); | 14 local muc_host_name = module:get_option("groups_muc_host"); |
15 local muc_host = nil; | 15 local muc_host = nil; |
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, |
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 | 31 if group_name then |
32 local user_roster = rostermanager.load_roster(user, host); | 32 local user_roster = rostermanager.load_roster(user, host); |
33 user_roster[contact_jid].groups[group_name] = true; | 33 user_roster[contact_jid].groups[group_name] = true; |
34 rostermanager.save_roster(user, host, user_roster, contact_jid); | |
34 end | 35 end |
35 | 36 |
36 -- Push updates to both rosters | 37 -- Push updates to both rosters |
37 rostermanager.roster_push(user, host, contact_jid); | 38 rostermanager.roster_push(user, host, contact_jid); |
38 rostermanager.roster_push(contact, host, user_jid); | 39 rostermanager.roster_push(contact, host, user_jid); |
205 end | 206 end |
206 | 207 |
207 function delete(group_id) | 208 function delete(group_id) |
208 if group_members_store:set(group_id, nil) then | 209 if group_members_store:set(group_id, nil) then |
209 local group_info = get_info(group_id); | 210 local group_info = get_info(group_id); |
210 if group_info and group_info.muc_jid then | 211 if group_info then |
211 local room = muc_host.get_room_from_jid(group_info.muc_jid) | 212 if group_info.muc_jid then |
212 if room then | 213 local room = muc_host.get_room_from_jid(group_info.muc_jid) |
213 room:destroy() | 214 if room then |
215 room:destroy() | |
216 end | |
217 end | |
218 for _, muc_jid in ipairs(group_info.mucs) do | |
219 local room = muc_host.get_room_from_jid(muc_jid) | |
220 if room then | |
221 room:destroy() | |
222 end | |
214 end | 223 end |
215 end | 224 end |
216 return group_info_store:set(group_id, nil); | 225 return group_info_store:set(group_id, nil); |
217 end | 226 end |
218 return nil, "internal-server-error"; | 227 return nil, "internal-server-error"; |