Mercurial > prosody-hg
comparison plugins/mod_mam/mod_mam.lua @ 10737:b2ede421adeb
mod_mam: Rework hints handling
Improved readability and early returns definite yes/no answer.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 21 Apr 2020 01:01:25 +0200 |
| parents | c5a3576a5335 |
| children | 19ffb2ebf114 |
comparison
equal
deleted
inserted
replaced
| 10736:c5a3576a5335 | 10737:b2ede421adeb |
|---|---|
| 265 | 265 |
| 266 local function should_store(stanza) --> boolean, reason: string | 266 local function should_store(stanza) --> boolean, reason: string |
| 267 local st_type = stanza.attr.type or "normal"; | 267 local st_type = stanza.attr.type or "normal"; |
| 268 local st_to_full = (stanza.attr.to or ""):find("/"); | 268 local st_to_full = (stanza.attr.to or ""):find("/"); |
| 269 | 269 |
| 270 -- or if hints suggest we shouldn't | |
| 271 if not stanza:get_child("store", "urn:xmpp:hints") then -- No hint telling us we should store | |
| 272 if stanza:get_child("no-permanent-store", "urn:xmpp:hints") | |
| 273 or stanza:get_child("no-store", "urn:xmpp:hints") then -- Hint telling us we should NOT store | |
| 274 return false, "hint"; | |
| 275 end | |
| 276 end | |
| 277 if st_type == "headline" then | 270 if st_type == "headline" then |
| 278 -- Headline messages are ephemeral by definition | 271 -- Headline messages are ephemeral by definition |
| 279 return false, "headline"; | 272 return false, "headline"; |
| 280 end | 273 end |
| 281 if st_type == "groupchat" and st_to_full then | 274 if st_type == "groupchat" and st_to_full then |
| 282 -- MUC messages always go to the full JID, usually archived by the MUC | 275 -- MUC messages always go to the full JID, usually archived by the MUC |
| 283 return false, "groupchat"; | 276 return false, "groupchat"; |
| 277 end | |
| 278 if stanza:get_child("no-permanent-store", "urn:xmpp:hints") then | |
| 279 return false, "hint"; | |
| 280 end | |
| 281 if stanza:get_child("store", "urn:xmpp:hints") then | |
| 282 return true, "hint"; | |
| 284 end | 283 end |
| 285 if stanza:get_child("body") then | 284 if stanza:get_child("body") then |
| 286 return true, "body"; | 285 return true, "body"; |
| 287 end | 286 end |
| 288 | 287 |
