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:
@@ -682,6 +682,9 @@ void App::update()
|
||||
wallet::LiteWalletAppRefreshModel liteModel;
|
||||
if (lite_wallet_->takeRefreshedModel(liteModel)) {
|
||||
wallet::applyLiteRefreshModelToWalletState(liteModel, state_);
|
||||
// HushChat (lite): harvest chat memos from the refreshed transactions and thread them
|
||||
// (no-op when the feature is off or no identity; the store dedups across refreshes).
|
||||
ingestLiteChatMemos(liteModel);
|
||||
}
|
||||
// Deliver a completed async send/shield result to the waiting send_tab callback.
|
||||
wallet::LiteBroadcastResult broadcast;
|
||||
|
||||
Reference in New Issue
Block a user