Changeset

6174:877416deacfa

mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
author Link Mauve <linkmauve@linkmauve.fr>
date Wed, 29 Jan 2025 00:20:01 +0100
parents 6173:f99f730f2b84
children 6175:e2d130104b98
files mod_storage_metronome_readonly/mod_storage_metronome_readonly.lua
diffstat 1 files changed, 18 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- 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