MessageTopBar
The default top app bar for the message screen.
Parameters
The title to display (contact or channel name).
The index of the current channel, if applicable.
True if there's a key mismatch for the current PKC.
Callback for the navigation icon.
The set of all channels, used for the SecurityIcon.
The specific channel index for the SecurityIcon.
The default top app bar for the message screen.
Parameters
The title to display (contact or channel name).
The index of the current channel, if applicable.
True if there's a key mismatch for the current PKC.
Callback for the navigation icon.
The set of all channels, used for the SecurityIcon.
The specific channel index for the SecurityIcon.
QuickChatRow
A row of quick chat action buttons.
Parameters
Whether the buttons should be enabled.
The list of QuickChatActions to display.
Callback when a quick chat button is clicked.
A row of quick chat action buttons.
Parameters
Whether the buttons should be enabled.
The list of QuickChatActions to display.
Callback when a quick chat button is clicked.
UnreadMessagesDivider
ellipsize
handleQuickChatAction
Handles a quick chat action, either appending its message to the current text or sending it directly.
Parameters
The QuickChatAction to handle.
The current text in the message input.
Lambda to call when the text needs to be updated (for Append mode).
Lambda to call when a message needs to be sent (for Instant mode).
Handles a quick chat action, either appending its message to the current text or sending it directly.
Parameters
The QuickChatAction to handle.
The current text in the message input.
Lambda to call when the text needs to be updated (for Append mode).
Lambda to call when a message needs to be sent (for Instant mode).
The default top app bar for the message screen.
The default top app bar for the message screen.
limitBytes
AdaptiveContactsScreen
ContactsScreen
MessageInputPreview
MessageViewModel
channels
clearDraftMessage
clearUnreadCount
closeSearch
confirmTranslationModelDownload
connectionState
contactSettings
currentSearchResult
The currently focused search result message (for scroll-to-match).
The currently focused search result message (for scroll-to-match).
deleteMessages
dismissTranslationDialog
draftMessage
Persisted draft for the conversation on screen. Null until loadDraft has read it back.
Persisted draft for the conversation on screen. Null until loadDraft has read it back.
filteredCount
firstUnreadMessageUuid
frequentEmojis
getMessagesFlow
Returns a non-paged reactive Flow of messages for a conversation. Used by desktop targets that don't use paging-compose.
Parameters
The unique contact key identifying the conversation.
Optional maximum number of messages to return (null = all).
Returns a non-paged reactive Flow of messages for a conversation. Used by desktop targets that don't use paging-compose.
Parameters
The unique contact key identifying the conversation.
Optional maximum number of messages to return (null = all).
getMessagesFromPaged
getNode
getUser
hasUnreadMessages
homoglyphEncodingEnabled
MessageViewModel
- Constructors
-isSearchActive
loadDraft
Reads the stored draft for contactKey once per conversation.
SavedStateHandle wins over the database when it holds something, because it can carry keystrokes newer than the last debounced write — the database copy is what makes the draft visible to the conversation list and survive the screen being popped.
Reads the stored draft for contactKey once per conversation.
SavedStateHandle wins over the database when it holds something, because it can carry keystrokes newer than the last debounced write — the database copy is what makes the draft visible to the conversation list and survive the screen being popped.
-
+
+
- + + +
-
+
navigateToNextResult
navigateToPreviousResult
nodeList
onConversationHidden
onConversationVisible
Marks contactKey as the conversation on screen so an arriving message for it is not also announced as a notification. Paired with onConversationHidden on pause — backgrounding the app hides the screen, which is what makes a single signal enough.
Marks contactKey as the conversation on screen so an arriving message for it is not also announced as a notification. Paired with onConversationHidden on pause — backgrounding the app hides the screen, which is what makes a single signal enough.
ourNodeInfo
quickChatActions
searchQuery
searchResultIndex
searchResults
sendMessage
Sends a message to a contact or channel.
If the message is a direct message (no channel specified), this function will:
If the device firmware version is older than 2.7.12, it will mark the destination node as a favorite to prevent it from being removed from the on-device node database.
If the device firmware version is 2.7.12 or newer, it will send a shared contact to the destination node.
Parameters
The message content.
The unique contact key, which is a combination of channel (optional) and node ID. Defaults to broadcasting on channel 0.
The ID of the message this is a reply to, if any.
Sends a message to a contact or channel.
If the message is a direct message (no channel specified), this function will:
If the device firmware version is older than 2.7.12, it will mark the destination node as a favorite to prevent it from being removed from the on-device node database.
If the device firmware version is 2.7.12 or newer, it will send a shared contact to the destination node.
Parameters
The message content.
The unique contact key, which is a combination of channel (optional) and node ID. Defaults to broadcasting on channel 0.
The ID of the message this is a reply to, if any.
sendReaction
setContactFilteringDisabled
setContactKey
setDraftMessage
Updates the in-memory draft immediately; the durable writes are debounced by DRAFT_PERSISTENCE_DELAY_MS, so rapid edits cancel the prior pending flush and only the trailing value persists. On process death within that window the last ≤DRAFT_PERSISTENCE_DELAY_MS of typing is not durably saved — a conscious trade-off to avoid per-keystroke jank.
No-ops while draftMessage is still null, so the composer's initial empty value cannot erase a stored draft before it has been read back.
Updates the in-memory draft immediately; the durable writes are debounced by DRAFT_PERSISTENCE_DELAY_MS, so rapid edits cancel the prior pending flush and only the trailing value persists. On process death within that window the last ≤DRAFT_PERSISTENCE_DELAY_MS of typing is not durably saved — a conscious trade-off to avoid per-keystroke jank.
No-ops while draftMessage is still null, so the composer's initial empty value cannot erase a stored draft before it has been read back.
setSearchQuery
setTitle
showFiltered
showFullMessageTimestamps
showQuickChat
title
toggleSearch
toggleShowFiltered
toggleShowQuickChat
toggleShowTranslated
translateMessage
Translates message into the device language, or just re-shows a previously persisted translation.
Translates message into the device language, or just re-shows a previously persisted translation.
translationAvailable
Whether on-device translation into the current locale is possible (always false on F-Droid/desktop).
Whether on-device translation into the current locale is possible (always false on F-Droid/desktop).
translationDialogState
unreadCount
RetiredChannelNoticePreview
The composer a live channel gets, above the notice that replaces it once that channel leaves the radio. Shown together because the point is the swap: the affordance is removed, not greyed out.
The composer a live channel gets, above the notice that replaces it once that channel leaves the radio. Shown together because the point is the swap: the affordance is removed, not greyed out.
DownloadPrompt
estimatedSizeMb
DownloadPrompt
- Ask the user to confirm downloading the missing languageTags models (~estimatedSizeMb MB).
Ask the user to confirm downloading the missing languageTags models (~estimatedSizeMb MB).
languageTags
message
Downloading
Downloading
-message
Hidden
-TranslationDialogState
- State of the translation-model download dialog on the message screen.
Inheritors
State of the translation-model download dialog on the message screen.