diff options
author | Kim Alvefur <zash@zash.se> | 2016-04-29 17:04:05 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2016-04-29 17:04:05 +0200 |
commit | e1c897b8e3251493bfa2e9df38b7da90d94d3da8 (patch) | |
tree | 498ecaf6ffc1cf0cb11c8b2d3f410d685d670c28 /plugins/muc/mod_muc.lua | |
parent | e4a91c1d8f3d8f1a673b220e6812c7038964525b (diff) | |
download | prosody-e1c897b8e3251493bfa2e9df38b7da90d94d3da8.tar.gz prosody-e1c897b8e3251493bfa2e9df38b7da90d94d3da8.zip |
MUC: Separate config from live state
Diffstat (limited to 'plugins/muc/mod_muc.lua')
-rw-r--r-- | plugins/muc/mod_muc.lua | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/plugins/muc/mod_muc.lua b/plugins/muc/mod_muc.lua index 5b342c02..c1ecb4f1 100644 --- a/plugins/muc/mod_muc.lua +++ b/plugins/muc/mod_muc.lua @@ -94,6 +94,7 @@ end local persistent_rooms_storage = module:open_store("persistent"); local persistent_rooms = module:open_store("persistent", "map"); local room_configs = module:open_store("config"); +local room_state = module:open_store("state"); local room_items_cache = {}; @@ -103,10 +104,12 @@ local function room_save(room, forced, savestate) room_items_cache[room.jid] = room:get_public() and room:get_name() or nil; if is_persistent or savestate then persistent_rooms:set(nil, room.jid, true); - local data = room:freeze(savestate); + local data, state = room:freeze(savestate); + room_state:set(node, state); return room_configs:set(node, data); elseif forced then persistent_rooms:set(nil, room.jid, nil); + room_state:set(node, nil); return room_configs:set(node, nil); end end @@ -133,8 +136,9 @@ end local function restore_room(jid) local node = jid_split(jid); local data = room_configs:get(node); + local state = room_state:get(node); if data then - local room = muclib.restore_room(data); + local room = muclib.restore_room(data, state); track_room(room); return room; end |