From 5a524c4232678377f76604c472d7b3bc3051a674 Mon Sep 17 00:00:00 2001 From: Lee *!* Clagett Date: Sat, 17 May 2025 00:03:31 -0400 Subject: [PATCH] Update lswf pin + update oa/dnssec error reporting --- external/lwsf | 2 +- src/views/send.cpp | 25 ++++++++++++------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/external/lwsf b/external/lwsf index 68ccb25..cf83295 160000 --- a/external/lwsf +++ b/external/lwsf @@ -1 +1 @@ -Subproject commit 68ccb258627b8ce879ffb07bc160f4053e5e24e1 +Subproject commit cf83295348064bae2476cb9fb2e682b387f83a82 diff --git a/src/views/send.cpp b/src/views/send.cpp index c857028..17d0787 100644 --- a/src/views/send.cpp +++ b/src/views/send.cpp @@ -238,7 +238,7 @@ namespace lwcli { namespace view ftxui::Element error_; ftxui::Component ui_; ftxui::Element cached_; - std::future>>> oa_; + std::future, bool>> oa_; std::future, dest_group, std::string>> tx_; const std::uint32_t account_; unsigned animation_; @@ -355,13 +355,11 @@ namespace lwcli { namespace view return; } const auto oa_lookup = [dest] (std::shared_ptr wm, const std::string& uri) - -> std::optional>> + -> std::tuple, bool> { bool dnssec = false; std::string result = wm->resolveOpenAlias(uri, dnssec); - if (!dnssec) - return std::nullopt; - return {{std::move(result), dest}}; + return std::make_tuple(std::move(result), dest, dnssec); }; if (!wm_) @@ -438,16 +436,17 @@ namespace lwcli { namespace view auto oa = oa_.get(); error_.reset(); - if (!oa) - error_ = ftxui::text(_("dnssec failure for domain")); - else if (oa->first.empty()) - error_ = ftxui::text(_("No XMR OpenAlias found")); - else if (!lwsf::addressValid(oa->first, wal_->nettype())) - error_ = ftxui::text(_("OpenAlias record is invalid")); + if (std::get<0>(oa).empty()) + error_ = ftxui::text(_("No XMR OpenAlias found for ") + std::get<1>(oa)->second); + else if (!lwsf::addressValid(std::get<0>(oa), wal_->nettype())) + error_ = ftxui::text(_("OpenAlias record is invalid for ") + std::get<1>(oa)->second); else if (!closing_) { - oa->second->second = std::move(oa->first); - try_construct(); + std::get<1>(oa)->second = std::move(std::get<0>(oa)); + if (!std::get<2>(oa)) + error_ = ftxui::text(_("dnssec verification failure for ") + std::get<1>(oa)->second); + else + try_construct(); } animate = oa_.valid();