Bump DRAGONX_LITE_VERSION 1.0.0 -> 1.1.0: since lite-1.0.0 the Lite variant
gained the whole 2.0.x shared UI/UX + diagnostics + i18n + perf work and this
session's chat delete/block — a minor bump (new features, no breaking change).
Make the FAQ variant-aware (walletFaq(fullNode)) so the Lite build reads
correctly: "What is ObsidianDragonLite?", encryption in the Wallet tab (not
Node & Security), migrate-to-seed hidden, node-specific answers reworded
neutrally ("the wallet syncs"), a new "Lite Wallet" subcategory (server model +
privacy tradeoff) standing in for the hidden Daemon group, and the redundant
single "Wallet" group tab dropped when there's no Daemon group to switch to.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
136 lines
5.4 KiB
C++
136 lines
5.4 KiB
C++
// DragonX Wallet - ImGui Edition
|
|
// Copyright 2024-2026 The Hush Developers
|
|
// Released under the GPLv3
|
|
|
|
#include "faq_content.h"
|
|
|
|
namespace dragonx {
|
|
namespace ui {
|
|
namespace faq {
|
|
|
|
// ── Wallet group ───────────────────────────────────────────────────────────
|
|
// Variant-aware: gs_1 (what the app IS) and sec_1 (where encryption lives) differ between the
|
|
// full-node and Lite builds; migrate-to-seed (seed_2) is full-node only; and the Lite build gets a
|
|
// trailing "Lite Wallet" subcategory that stands in for the (hidden) Daemon group. The remaining
|
|
// answers are worded neutrally so one string serves both variants.
|
|
static std::vector<FaqSubcategory> buildWalletFaq(bool fullNode)
|
|
{
|
|
std::vector<FaqSubcategory> w;
|
|
w.push_back({ "faq_w_gs_title", {
|
|
{ fullNode ? "faq_w_gs_1_q" : "faq_l_gs_1_q", fullNode ? "faq_w_gs_1_a" : "faq_l_gs_1_a" },
|
|
{ "faq_w_gs_2_q", "faq_w_gs_2_a" },
|
|
{ "faq_w_gs_3_q", "faq_w_gs_3_a" },
|
|
{ "faq_w_gs_4_q", "faq_w_gs_4_a" },
|
|
}});
|
|
w.push_back({ "faq_w_addr_title", {
|
|
{ "faq_w_addr_1_q", "faq_w_addr_1_a" },
|
|
{ "faq_w_addr_2_q", "faq_w_addr_2_a" },
|
|
{ "faq_w_addr_3_q", "faq_w_addr_3_a" },
|
|
{ "faq_w_addr_4_q", "faq_w_addr_4_a" },
|
|
}});
|
|
w.push_back({ "faq_w_send_title", {
|
|
{ "faq_w_send_1_q", "faq_w_send_1_a" },
|
|
{ "faq_w_send_2_q", "faq_w_send_2_a" },
|
|
{ "faq_w_send_3_q", "faq_w_send_3_a" },
|
|
{ "faq_w_send_4_q", "faq_w_send_4_a" },
|
|
}});
|
|
w.push_back({ "faq_w_bal_title", {
|
|
{ "faq_w_bal_1_q", "faq_w_bal_1_a" },
|
|
{ "faq_w_bal_2_q", "faq_w_bal_2_a" },
|
|
{ "faq_w_bal_3_q", "faq_w_bal_3_a" },
|
|
}});
|
|
w.push_back({ "faq_w_sec_title", {
|
|
{ "faq_w_sec_1_q", fullNode ? "faq_w_sec_1_a" : "faq_l_sec_1_a" },
|
|
{ "faq_w_sec_2_q", "faq_w_sec_2_a" },
|
|
{ "faq_w_sec_3_q", "faq_w_sec_3_a" },
|
|
}});
|
|
{
|
|
std::vector<FaqEntry> seed = { { "faq_w_seed_1_q", "faq_w_seed_1_a" } };
|
|
if (fullNode) seed.push_back({ "faq_w_seed_2_q", "faq_w_seed_2_a" }); // migrate-to-seed is full-node only
|
|
seed.push_back({ "faq_w_seed_3_q", "faq_w_seed_3_a" });
|
|
seed.push_back({ "faq_w_seed_4_q", "faq_w_seed_4_a" });
|
|
w.push_back({ "faq_w_seed_title", std::move(seed) });
|
|
}
|
|
w.push_back({ "faq_w_chat_title", {
|
|
{ "faq_w_chat_1_q", "faq_w_chat_1_a" },
|
|
{ "faq_w_chat_2_q", "faq_w_chat_2_a" },
|
|
{ "faq_w_chat_3_q", "faq_w_chat_3_a" },
|
|
{ "faq_w_chat_4_q", "faq_w_chat_4_a" },
|
|
}});
|
|
w.push_back({ "faq_w_set_title", {
|
|
{ "faq_w_set_1_q", "faq_w_set_1_a" },
|
|
{ "faq_w_set_2_q", "faq_w_set_2_a" },
|
|
{ "faq_w_set_3_q", "faq_w_set_3_a" },
|
|
{ "faq_w_set_4_q", "faq_w_set_4_a" },
|
|
}});
|
|
// Lite-only: explain the server model (stands in for the hidden Daemon group).
|
|
if (!fullNode) {
|
|
w.push_back({ "faq_l_lite_title", {
|
|
{ "faq_l_lite_1_q", "faq_l_lite_1_a" },
|
|
{ "faq_l_lite_2_q", "faq_l_lite_2_a" },
|
|
{ "faq_l_lite_3_q", "faq_l_lite_3_a" },
|
|
}});
|
|
}
|
|
return w;
|
|
}
|
|
|
|
const std::vector<FaqSubcategory>& walletFaq(bool fullNode)
|
|
{
|
|
static const std::vector<FaqSubcategory> kFull = buildWalletFaq(true);
|
|
static const std::vector<FaqSubcategory> kLite = buildWalletFaq(false);
|
|
return fullNode ? kFull : kLite;
|
|
}
|
|
|
|
// ── Daemon group (full-node only) ──────────────────────────────────────────
|
|
const std::vector<FaqSubcategory>& daemonFaq()
|
|
{
|
|
static const std::vector<FaqSubcategory> kDaemon = {
|
|
{ "faq_d_node_title", {
|
|
{ "faq_d_node_1_q", "faq_d_node_1_a" },
|
|
{ "faq_d_node_2_q", "faq_d_node_2_a" },
|
|
{ "faq_d_node_3_q", "faq_d_node_3_a" },
|
|
}},
|
|
{ "faq_d_sync_title", {
|
|
{ "faq_d_sync_1_q", "faq_d_sync_1_a" },
|
|
{ "faq_d_sync_2_q", "faq_d_sync_2_a" },
|
|
{ "faq_d_sync_3_q", "faq_d_sync_3_a" },
|
|
{ "faq_d_sync_4_q", "faq_d_sync_4_a" },
|
|
}},
|
|
{ "faq_d_mgmt_title", {
|
|
{ "faq_d_mgmt_1_q", "faq_d_mgmt_1_a" },
|
|
{ "faq_d_mgmt_2_q", "faq_d_mgmt_2_a" },
|
|
{ "faq_d_mgmt_3_q", "faq_d_mgmt_3_a" },
|
|
}},
|
|
{ "faq_d_upd_title", {
|
|
{ "faq_d_upd_1_q", "faq_d_upd_1_a" },
|
|
{ "faq_d_upd_2_q", "faq_d_upd_2_a" },
|
|
{ "faq_d_upd_3_q", "faq_d_upd_3_a" },
|
|
}},
|
|
{ "faq_d_mine_title", {
|
|
{ "faq_d_mine_1_q", "faq_d_mine_1_a" },
|
|
{ "faq_d_mine_2_q", "faq_d_mine_2_a" },
|
|
{ "faq_d_mine_3_q", "faq_d_mine_3_a" },
|
|
{ "faq_d_mine_4_q", "faq_d_mine_4_a" },
|
|
}},
|
|
{ "faq_d_net_title", {
|
|
{ "faq_d_net_1_q", "faq_d_net_1_a" },
|
|
{ "faq_d_net_2_q", "faq_d_net_2_a" },
|
|
}},
|
|
{ "faq_d_perf_title", {
|
|
{ "faq_d_perf_1_q", "faq_d_perf_1_a" },
|
|
{ "faq_d_perf_2_q", "faq_d_perf_2_a" },
|
|
}},
|
|
{ "faq_d_trbl_title", {
|
|
{ "faq_d_trbl_1_q", "faq_d_trbl_1_a" },
|
|
{ "faq_d_trbl_2_q", "faq_d_trbl_2_a" },
|
|
{ "faq_d_trbl_3_q", "faq_d_trbl_3_a" },
|
|
{ "faq_d_trbl_4_q", "faq_d_trbl_4_a" },
|
|
}},
|
|
};
|
|
return kDaemon;
|
|
}
|
|
|
|
} // namespace faq
|
|
} // namespace ui
|
|
} // namespace dragonx
|