From b4b26484ec20a4fde9c8cbf74c9835d989ff741e Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Tue, 25 Apr 2023 20:27:07 -0700 Subject: [PATCH] modules/console: Add wildcard for all devices to user devices update cmd. --- modules/console.cc | 50 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/modules/console.cc b/modules/console.cc index b3af90f96..9b308c4e3 100644 --- a/modules/console.cc +++ b/modules/console.cc @@ -14457,9 +14457,9 @@ console_cmd__user__devices__update(opt &out, const string_view &line) param.at("user_id") }; - const string_view &device_id + const string_view &device_id_ { - param.at("device_id") + param.at("device_id", "*"_sv) }; const bool deleted @@ -14472,20 +14472,46 @@ console_cmd__user__devices__update(opt &out, const string_view &line) user_id }; - json::iov content; - const json::iov::push push[] + const auto update{[&out, &user_id, &deleted] + (const auto &device_id) { - { content, { "user_id", user_id } }, - { content, { "device_id", device_id } }, - { content, { "deleted", deleted } }, + json::iov content; + const json::iov::push push[] + { + { content, { "user_id", user_id } }, + { content, { "device_id", device_id } }, + { content, { "deleted", deleted } }, + }; + + const bool broadcasted + { + m::user::devices::send(content) + }; + + out + << "broadcast:" + << broadcasted + << ' ' + << device_id + << std::endl; + }}; + + const bool found + { + !devices.for_each([&update, &device_id_] + (const auto &, const string_view &device_id) + { + if(device_id_ != "*" && device_id != device_id_) + return true; + + update(device_id); + return device_id != device_id_; // false to break + }) }; - const bool broadcasted - { - m::user::devices::send(content) - }; + if(!found && deleted) + update(device_id_); - out << "done" << std::endl; return true; }