feat(chat): copy, add-to-contacts, and new-message toast (Q2/Q3/Q4)
- Q3: copy the peer z-address from the thread header (SmallButton), and right-click any message to copy its body. - Q2: an "Add contact" action in the header when the peer isn't already known — one click saves them to the address book (rename later in Contacts). - Q4: capture ChatService::ingest's new-message count (previously discarded) and fire an in-app toast when new encrypted chat arrives while the user isn't on the Chat tab (main-thread MainCb sites only). i18n (EN + 8 languages, additive; no new CJK glyphs). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1668,7 +1668,9 @@ void App::refreshTransactionData()
|
||||
!result.hushChatMetadata.empty()) {
|
||||
std::unordered_map<std::string, std::int64_t> chatTxTimes;
|
||||
for (const auto& tx : result.transactions) chatTxTimes[tx.txid] = tx.timestamp;
|
||||
chat_service_.ingest(result.hushChatMetadata, chatTxTimes, std::time(nullptr));
|
||||
const int newMsgs = chat_service_.ingest(result.hushChatMetadata, chatTxTimes, std::time(nullptr));
|
||||
if (newMsgs > 0 && current_page_ != ui::NavPage::Chat)
|
||||
ui::Notifications::instance().info(TR("chat_new_message_toast")); // Q4: alert when not on the Chat tab
|
||||
}
|
||||
NetworkRefreshService::applyTransactionRefreshResult(
|
||||
state_, cacheUpdate, std::move(result), std::time(nullptr));
|
||||
@@ -1726,7 +1728,9 @@ void App::refreshRecentTransactionData()
|
||||
!result.hushChatMetadata.empty()) {
|
||||
std::unordered_map<std::string, std::int64_t> chatTxTimes;
|
||||
for (const auto& tx : result.transactions) chatTxTimes[tx.txid] = tx.timestamp;
|
||||
chat_service_.ingest(result.hushChatMetadata, chatTxTimes, std::time(nullptr));
|
||||
const int newMsgs = chat_service_.ingest(result.hushChatMetadata, chatTxTimes, std::time(nullptr));
|
||||
if (newMsgs > 0 && current_page_ != ui::NavPage::Chat)
|
||||
ui::Notifications::instance().info(TR("chat_new_message_toast")); // Q4: alert when not on the Chat tab
|
||||
}
|
||||
NetworkRefreshService::applyTransactionRefreshResult(
|
||||
state_, cacheUpdate, std::move(result), std::time(nullptr));
|
||||
|
||||
Reference in New Issue
Block a user