// DragonX Wallet - ImGui Edition // Copyright 2024-2026 The Hush Developers // Released under the GPLv3 #pragma once namespace dragonx { class App; namespace ui { /** * @brief Render the Chat tab (HushChat conversation view). * * A two-pane view: a conversation list on the left and the selected thread on the * right, both read from the App-owned ChatService store (App::chatService()). Peer * z-addresses are resolved to contact names via the address book when known. * Composing/sending and starting new conversations are wired (App::sendChatMessage / * startChatConversation). Reachable when built with DRAGONX_ENABLE_CHAT * (gated via WalletUiSurface::Chat). * * @param app Pointer to the app instance. */ void RenderChatTab(App* app); /** * @brief Render the chat-customization controls (emoji style, poll rate, bubble style/color, * density, text size, chat timestamps, Enter-to-send). Shared by the Chat tab's settings * "notch" modal and the Settings tab's Chat & Contacts section. The app-wide clock format * (which chat timestamps fall back to) lives separately in Settings → General. * @param app Pointer to the app instance. * @param contentWidth Explicit row width for right-aligning controls; pass the card's inner content * width from the Settings tab (whose GlassCard doesn't narrow the content region). 0 = auto * (use the current content region, correct inside the chat modal's dialog). */ void RenderChatSettingsControls(App* app, float contentWidth = 0.0f, bool drawCards = false); /** * @brief Securely wipe the Chat tab's UI-local state (composer / new-conversation * plaintext buffers + the selected-conversation ids). Called by * App::resetChatSession() on a wallet switch/lock so one wallet's typed * plaintext can't resurface (or linger unwiped in RAM) under the next wallet. */ void ResetChatTab(); } // namespace ui } // namespace dragonx