Fix wrong TextComposer placeholder displayed when in a thread.

We cannot only use MessageComposerMode since use can edit a message in a thread, so this is becoming handly.
This commit is contained in:
Benoit Marty
2026-08-12 16:40:49 +02:00
parent 76092fcba6
commit 00e9a8ab71
6 changed files with 21 additions and 1 deletions
@@ -425,6 +425,7 @@ class MessageComposerPresenter(
textEditorState = textEditorState,
isFullScreen = isFullScreen.value,
mode = messageComposerContext.composerMode,
isInThreadTimeline = isInThread,
showAttachmentSourcePicker = showAttachmentSourcePicker,
showTextFormatting = showTextFormatting,
canShareLocation = canShareLocation.value,
@@ -21,6 +21,7 @@ data class MessageComposerState(
val textEditorState: TextEditorState,
val isFullScreen: Boolean,
val mode: MessageComposerMode,
val isInThreadTimeline: Boolean,
val showAttachmentSourcePicker: Boolean,
val showTextFormatting: Boolean,
val canShareLocation: Boolean,
@@ -29,6 +29,7 @@ fun aMessageComposerState(
textEditorState: TextEditorState = aTextEditorStateRich(),
isFullScreen: Boolean = false,
mode: MessageComposerMode = MessageComposerMode.Normal,
isInThreadTimeline: Boolean = false,
showTextFormatting: Boolean = false,
showAttachmentSourcePicker: Boolean = false,
canShareLocation: Boolean = true,
@@ -39,6 +40,7 @@ fun aMessageComposerState(
textEditorState = textEditorState,
isFullScreen = isFullScreen,
mode = mode,
isInThreadTimeline = isInThreadTimeline,
showTextFormatting = showTextFormatting,
showAttachmentSourcePicker = showAttachmentSourcePicker,
canShareLocation = canShareLocation,
@@ -102,6 +102,7 @@ internal fun MessageComposerView(
onRequestFocus = ::onRequestFocus,
onSendMessage = ::sendMessage,
composerMode = state.mode,
isInThreadTimeline = state.isInThreadTimeline,
showTextFormatting = state.showTextFormatting,
onResetComposerMode = ::onCloseSpecialMode,
onAddAttachment = ::onAddAttachment,
@@ -61,6 +61,7 @@ import io.element.android.libraries.matrix.test.A_CAPTION
import io.element.android.libraries.matrix.test.A_MESSAGE
import io.element.android.libraries.matrix.test.A_REPLY
import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.libraries.matrix.test.A_THREAD_ID
import io.element.android.libraries.matrix.test.A_TRANSACTION_ID
import io.element.android.libraries.matrix.test.A_USER_ID
import io.element.android.libraries.matrix.test.A_USER_ID_2
@@ -148,12 +149,25 @@ class MessageComposerPresenterTest : RobolectricTest() {
assertThat(initialState.isFullScreen).isFalse()
assertThat(initialState.textEditorState.messageHtml()).isEqualTo("")
assertThat(initialState.mode).isEqualTo(MessageComposerMode.Normal)
assertThat(initialState.isInThreadTimeline).isFalse()
assertThat(initialState.showAttachmentSourcePicker).isFalse()
assertThat(initialState.canShareLocation).isTrue()
assertThat(initialState.slashCommandAction).isEqualTo(AsyncAction.Uninitialized)
}
}
@Test
fun `present - when a threadRoot is provided, isInThreadTimeline is true`() = runTest {
val presenter = createPresenter(
threadRoot = A_THREAD_ID,
)
presenter.test {
val initialState = awaitFirstItem()
assertThat(initialState.mode).isEqualTo(MessageComposerMode.Normal)
assertThat(initialState.isInThreadTimeline).isTrue()
}
}
@Test
fun `present - toggle fullscreen`() = runTest {
val presenter = createPresenter()