feat(chat): hide conversations + contact address picker for new conversation
Hide conversations: - A "Hide" action in the thread header drops a conversation from the list. The messages stay in the seed-encrypted store (on-chain history can't be deleted); a new INCOMING message un-hides it (you can't un-receive), so nothing is lost. - Hidden cids persist in settings (mirrors the mute list) and are skipped by both the conversation list and the unread badge. New-conversation address picker: - A "Choose from contacts" dropdown lists the address book's shielded (z-address) contacts and fills the recipient field on selection; manual paste still works. 8-language strings + CJK subset (+1 glyph 届). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -152,6 +152,11 @@ bool Settings::load(const std::string& path)
|
||||
for (const auto& c : j["muted_chat_cids"])
|
||||
if (c.is_string()) muted_chat_cids_.push_back(c.get<std::string>());
|
||||
}
|
||||
if (j.contains("hidden_chat_cids") && j["hidden_chat_cids"].is_array()) {
|
||||
hidden_chat_cids_.clear();
|
||||
for (const auto& c : j["hidden_chat_cids"])
|
||||
if (c.is_string()) hidden_chat_cids_.push_back(c.get<std::string>());
|
||||
}
|
||||
loadScalar(j, "acrylic_enabled", acrylic_enabled_);
|
||||
loadScalar(j, "acrylic_quality", acrylic_quality_);
|
||||
loadScalar(j, "blur_multiplier", blur_multiplier_);
|
||||
@@ -430,6 +435,9 @@ bool Settings::save(const std::string& path)
|
||||
j["muted_chat_cids"] = json::array();
|
||||
for (const auto& c : muted_chat_cids_)
|
||||
j["muted_chat_cids"].push_back(c);
|
||||
j["hidden_chat_cids"] = json::array();
|
||||
for (const auto& c : hidden_chat_cids_)
|
||||
j["hidden_chat_cids"].push_back(c);
|
||||
j["acrylic_enabled"] = acrylic_enabled_;
|
||||
j["acrylic_quality"] = acrylic_quality_;
|
||||
j["blur_multiplier"] = blur_multiplier_;
|
||||
|
||||
Reference in New Issue
Block a user