comparison mod_http_admin_api/mod_http_admin_api.lua @ 4366:83370df0ce4a

mod_http_admin_api: do not report OMEMO as ok if no devices exist
author Jonas Schäfer <jonas@wielicki.name>
date Thu, 21 Jan 2021 16:18:14 +0100
parents f975a4d31f35
children e0c8d866d58c
comparison
equal deleted inserted replaced
4365:f975a4d31f35 4366:83370df0ce4a
200 return info; 200 return info;
201 end 201 end
202 202
203 local function get_user_omemo_info(username) 203 local function get_user_omemo_info(username)
204 local everything_valid = true; 204 local everything_valid = true;
205 local any_device = false;
205 local omemo_status = {}; 206 local omemo_status = {};
206 local omemo_devices; 207 local omemo_devices;
207 local pep_service = mod_pep.get_pep_service(username); 208 local pep_service = mod_pep.get_pep_service(username);
208 if pep_service and pep_service.nodes then 209 if pep_service and pep_service.nodes then
209 local ok, _, device_list = pep_service:get_last_item("eu.siacs.conversations.axolotl.devicelist", true); 210 local ok, _, device_list = pep_service:get_last_item("eu.siacs.conversations.axolotl.devicelist", true);
211 device_list = device_list:get_child("list", "eu.siacs.conversations.axolotl"); 212 device_list = device_list:get_child("list", "eu.siacs.conversations.axolotl");
212 end 213 end
213 if device_list then 214 if device_list then
214 omemo_devices = {}; 215 omemo_devices = {};
215 for device_entry in device_list:childtags("device") do 216 for device_entry in device_list:childtags("device") do
217 any_device = true;
216 local device_info = {}; 218 local device_info = {};
217 local device_id = tonumber(device_entry.attr.id or ""); 219 local device_id = tonumber(device_entry.attr.id or "");
218 if device_id then 220 if device_id then
219 device_info.id = device_id; 221 device_info.id = device_id;
220 local bundle_id = ("eu.siacs.conversations.axolotl.bundles:%d"):format(device_id); 222 local bundle_id = ("eu.siacs.conversations.axolotl.bundles:%d"):format(device_id);
254 omemo_status.config_valid = false; 256 omemo_status.config_valid = false;
255 everything_valid = false; 257 everything_valid = false;
256 end 258 end
257 end 259 end
258 end 260 end
259 omemo_status.valid = everything_valid; 261 omemo_status.valid = everything_valid and any_device;
260 return { 262 return {
261 status = omemo_status; 263 status = omemo_status;
262 devices = omemo_devices; 264 devices = omemo_devices;
263 }; 265 };
264 end 266 end