# HG changeset patch # User Link Mauve # Date 1738106401 -3600 # Node ID 877416deacfabf72f4200da17c87c90296119da2 # Parent f99f730f2b84c643b6208aa7d98eb54070e3b739 mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries diff -r f99f730f2b84 -r 877416deacfa mod_storage_metronome_readonly/mod_storage_metronome_readonly.lua --- a/mod_storage_metronome_readonly/mod_storage_metronome_readonly.lua Tue Jan 28 22:27:35 2025 +0100 +++ b/mod_storage_metronome_readonly/mod_storage_metronome_readonly.lua Wed Jan 29 00:20:01 2025 +0100 @@ -332,20 +332,25 @@ elseif self.store == "muc_log" then local base_path = datamanager.getpath("", host, "stanza_log"):sub(1, -5); + local days = {}; + for date in dir(base_path) do + if date ~= "." and date ~= ".." then + table.insert(days, date); + end + end + table.sort(days); local list = {}; - for dir_name in dir(base_path) do - if dir_name ~= "." and dir_name ~= ".." then - local path = base_path..dir_name.."/"..encode(username)..".dat"; - local get_data = envloadfile(path, {}); - if get_data then - local success, data = pcall(get_data); - if not success then - module:log("error", "Unable to load metronome storage"); - return nil, "Error reading storage"; - end - for key, item, when in parse_logs(data) do - table.insert(list, {key, item, when}); - end + for _, date in ipairs(days) do + local path = base_path..date.."/"..encode(username)..".dat"; + local get_data = envloadfile(path, {}); + if get_data then + local success, data = pcall(get_data); + if not success then + module:log("error", "Unable to load metronome storage"); + return nil, "Error reading storage"; + end + for key, item, when in parse_logs(data) do + table.insert(list, {key, item, when}); end end end