feat(chat): harvest chat memos on the lite variant (lite receive)
The full-node receive harvest works off z_viewtransaction; the lite wallet's transactions come from the backend instead, so lite chat receive was unwired. App::ingestLiteChatMemos runs after each lite refresh: the backend lists one entry per received (non-change) note — same txid, distinct position + decoded UTF-8 memo — so a chat tx yields two entries (header + payload). Group the Receive-kind notes by txid, feed them through the SAME extractHushChatTransaction Metadata parser (now order-tolerant, so the daemon's output shuffle is a non-issue), and thread the result into ChatService. The store dedups (txid+position), so re-listing every refresh is harmless. This closes the lite variant's chat loop end-to-end: identity (exportSeed), DB unlock/load, receive (here), UI, and send (broadcastChatMemosLite). Gated by DRAGONX_ENABLE_CHAT (default OFF). Verified: Linux + Windows build with chat ON, ctest 100%, hygiene clean; caches restored to OFF. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,7 +38,7 @@ namespace dragonx {
|
||||
namespace config { class Settings; }
|
||||
namespace daemon { class DaemonController; class EmbeddedDaemon; class XmrigManager; }
|
||||
namespace util { class Bootstrap; class SecureVault; }
|
||||
namespace wallet { class LiteWalletController; }
|
||||
namespace wallet { class LiteWalletController; struct LiteWalletAppRefreshModel; }
|
||||
}
|
||||
|
||||
namespace dragonx {
|
||||
@@ -597,6 +597,7 @@ private:
|
||||
std::string generateChatLocalId(const char* prefix, int numBytes) const; // unique echo id / cid
|
||||
void broadcastChatMemos(const chat::OutgoingChatMemos& memos); // full-node z_sendmany / lite
|
||||
void broadcastChatMemosLite(const chat::OutgoingChatMemos& memos); // lite two-recipient send
|
||||
void ingestLiteChatMemos(const wallet::LiteWalletAppRefreshModel& model); // lite chat receive harvest
|
||||
// Lite first-run welcome prompt: dismissed for the session once the user picks an action.
|
||||
bool lite_firstrun_dismissed_ = false;
|
||||
// Lite send-time unlock: set to show the unlock modal when a spend is attempted while locked.
|
||||
|
||||
Reference in New Issue
Block a user