Software /
code /
prosody
Comparison
plugins/muc/muc.lib.lua @ 7412:f9744effae04
MUC: Include the very last message in serialized form to keep it across eviction and restore
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 28 Apr 2016 23:34:19 +0200 |
parent | 7411:f385cd6127b2 |
child | 7413:228396da1e27 |
comparison
equal
deleted
inserted
replaced
7411:f385cd6127b2 | 7412:f9744effae04 |
---|---|
1320 } | 1320 } |
1321 for jid, presence in occupant:each_session() do | 1321 for jid, presence in occupant:each_session() do |
1322 frozen[jid] = st.preserialize(presence); | 1322 frozen[jid] = st.preserialize(presence); |
1323 end | 1323 end |
1324 end | 1324 end |
1325 local history = self._history; | |
1326 if history then | |
1327 frozen._last_message = st.preserialize(history[#history].stanza); | |
1328 frozen._last_message_at = history[#history].timestamp; | |
1329 end | |
1325 end | 1330 end |
1326 return frozen; | 1331 return frozen; |
1327 end | 1332 end |
1328 | 1333 |
1329 function _M.restore_room(frozen) | 1334 function _M.restore_room(frozen) |
1334 return room; | 1339 return room; |
1335 end | 1340 end |
1336 | 1341 |
1337 local room_jid = frozen._jid; | 1342 local room_jid = frozen._jid; |
1338 local room = _M.new_room(room_jid, frozen._data); | 1343 local room = _M.new_room(room_jid, frozen._data); |
1344 | |
1345 if frozen._last_message and frozen._last_message_at then | |
1346 room._history = { | |
1347 { stanza = st.deserialize(frozen._last_message), | |
1348 timestamp = frozen._last_message_at, }, | |
1349 }; | |
1350 end | |
1339 | 1351 |
1340 local occupants = {}; | 1352 local occupants = {}; |
1341 local occupant_sessions = {}; | 1353 local occupant_sessions = {}; |
1342 local room_name, room_host = jid_split(room_jid); | 1354 local room_name, room_host = jid_split(room_jid); |
1343 for jid, data in pairs(frozen) do | 1355 for jid, data in pairs(frozen) do |