mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 06:55:41 +00:00
Support thread root in drafts
This commit is contained in:
+1
-1
@@ -107,7 +107,7 @@ class MessagesNode(
|
|||||||
private val timelineController = TimelineController(room, room.liveTimeline)
|
private val timelineController = TimelineController(room, room.liveTimeline)
|
||||||
private val presenter = presenterFactory.create(
|
private val presenter = presenterFactory.create(
|
||||||
navigator = this,
|
navigator = this,
|
||||||
composerPresenter = messageComposerPresenterFactory.create(timelineController, this, isInThread = false),
|
composerPresenter = messageComposerPresenterFactory.create(timelineController, this, isInThread = false, threadRoot = null),
|
||||||
timelinePresenter = timelinePresenterFactory.create(timelineController = timelineController, this),
|
timelinePresenter = timelinePresenterFactory.create(timelineController = timelineController, this),
|
||||||
actionListPresenter = actionListPresenterFactory.create(
|
actionListPresenter = actionListPresenterFactory.create(
|
||||||
postProcessor = TimelineItemActionPostProcessor.Default,
|
postProcessor = TimelineItemActionPostProcessor.Default,
|
||||||
|
|||||||
+6
-6
@@ -49,6 +49,7 @@ import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatch
|
|||||||
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
|
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
|
||||||
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
|
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||||
import io.element.android.libraries.matrix.api.core.UserId
|
import io.element.android.libraries.matrix.api.core.UserId
|
||||||
import io.element.android.libraries.matrix.api.permalink.PermalinkBuilder
|
import io.element.android.libraries.matrix.api.permalink.PermalinkBuilder
|
||||||
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
|
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
|
||||||
@@ -110,6 +111,7 @@ class MessageComposerPresenter(
|
|||||||
@Assisted private val navigator: MessagesNavigator,
|
@Assisted private val navigator: MessagesNavigator,
|
||||||
@Assisted private val timelineController: TimelineController,
|
@Assisted private val timelineController: TimelineController,
|
||||||
@Assisted private val isInThread: Boolean,
|
@Assisted private val isInThread: Boolean,
|
||||||
|
@Assisted private val threadRoot: ThreadId?,
|
||||||
@SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope,
|
@SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope,
|
||||||
private val room: JoinedRoom,
|
private val room: JoinedRoom,
|
||||||
private val mediaPickerProvider: PickerProvider,
|
private val mediaPickerProvider: PickerProvider,
|
||||||
@@ -139,6 +141,7 @@ class MessageComposerPresenter(
|
|||||||
timelineController: TimelineController,
|
timelineController: TimelineController,
|
||||||
navigator: MessagesNavigator,
|
navigator: MessagesNavigator,
|
||||||
isInThread: Boolean,
|
isInThread: Boolean,
|
||||||
|
threadRoot: ThreadId?,
|
||||||
): MessageComposerPresenter
|
): MessageComposerPresenter
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,8 +237,7 @@ class MessageComposerPresenter(
|
|||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
val draft = draftService.loadDraft(
|
val draft = draftService.loadDraft(
|
||||||
roomId = room.roomId,
|
roomId = room.roomId,
|
||||||
// TODO support threads in composer
|
threadRoot = threadRoot,
|
||||||
threadRoot = null,
|
|
||||||
isVolatile = false
|
isVolatile = false
|
||||||
)
|
)
|
||||||
if (draft != null) {
|
if (draft != null) {
|
||||||
@@ -652,8 +654,7 @@ class MessageComposerPresenter(
|
|||||||
roomId = room.roomId,
|
roomId = room.roomId,
|
||||||
draft = draft,
|
draft = draft,
|
||||||
isVolatile = isVolatile,
|
isVolatile = isVolatile,
|
||||||
// TODO support threads in composer
|
threadRoot = threadRoot,
|
||||||
threadRoot = null,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -816,8 +817,7 @@ class MessageComposerPresenter(
|
|||||||
// Use the volatile draft only when coming from edit mode otherwise.
|
// Use the volatile draft only when coming from edit mode otherwise.
|
||||||
val draft = draftService.loadDraft(
|
val draft = draftService.loadDraft(
|
||||||
roomId = room.roomId,
|
roomId = room.roomId,
|
||||||
// TODO support threads in composer
|
threadRoot = threadRoot,
|
||||||
threadRoot = null,
|
|
||||||
isVolatile = true
|
isVolatile = true
|
||||||
).takeIf { fromEdit }
|
).takeIf { fromEdit }
|
||||||
if (draft != null) {
|
if (draft != null) {
|
||||||
|
|||||||
+1
-1
@@ -112,7 +112,7 @@ class ThreadedMessagesNode(
|
|||||||
this.timelineController = timelineController
|
this.timelineController = timelineController
|
||||||
return presenterFactory.create(
|
return presenterFactory.create(
|
||||||
navigator = this,
|
navigator = this,
|
||||||
composerPresenter = messageComposerPresenterFactory.create(timelineController, this, isInThread = true),
|
composerPresenter = messageComposerPresenterFactory.create(timelineController, this, isInThread = true, threadRoot = inputs.threadRootEventId),
|
||||||
timelinePresenter = timelinePresenterFactory.create(timelineController = timelineController, this),
|
timelinePresenter = timelinePresenterFactory.create(timelineController = timelineController, this),
|
||||||
// TODO add special processor for threaded timeline
|
// TODO add special processor for threaded timeline
|
||||||
actionListPresenter = actionListPresenterFactory.create(
|
actionListPresenter = actionListPresenterFactory.create(
|
||||||
|
|||||||
+3
@@ -24,6 +24,7 @@ import io.element.android.features.messages.impl.utils.FakeMentionSpanFormatter
|
|||||||
import io.element.android.features.messages.impl.utils.FakeTextPillificationHelper
|
import io.element.android.features.messages.impl.utils.FakeTextPillificationHelper
|
||||||
import io.element.android.features.messages.impl.utils.TextPillificationHelper
|
import io.element.android.features.messages.impl.utils.TextPillificationHelper
|
||||||
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
|
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
|
||||||
|
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||||
import io.element.android.libraries.matrix.api.core.UserId
|
import io.element.android.libraries.matrix.api.core.UserId
|
||||||
import io.element.android.libraries.matrix.api.permalink.PermalinkBuilder
|
import io.element.android.libraries.matrix.api.permalink.PermalinkBuilder
|
||||||
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
|
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
|
||||||
@@ -272,11 +273,13 @@ class MessageComposerPresenterSlashCommandTest {
|
|||||||
draftService: ComposerDraftService = FakeComposerDraftService(),
|
draftService: ComposerDraftService = FakeComposerDraftService(),
|
||||||
mediaOptimizationConfigProvider: FakeMediaOptimizationConfigProvider = FakeMediaOptimizationConfigProvider(),
|
mediaOptimizationConfigProvider: FakeMediaOptimizationConfigProvider = FakeMediaOptimizationConfigProvider(),
|
||||||
isInThread: Boolean = false,
|
isInThread: Boolean = false,
|
||||||
|
threadRoot: ThreadId? = null,
|
||||||
slashCommandService: SlashCommandService = FakeSlashCommandService(),
|
slashCommandService: SlashCommandService = FakeSlashCommandService(),
|
||||||
) = MessageComposerPresenter(
|
) = MessageComposerPresenter(
|
||||||
navigator = navigator,
|
navigator = navigator,
|
||||||
sessionCoroutineScope = this,
|
sessionCoroutineScope = this,
|
||||||
isInThread = isInThread,
|
isInThread = isInThread,
|
||||||
|
threadRoot = threadRoot,
|
||||||
room = room,
|
room = room,
|
||||||
mediaPickerProvider = pickerProvider,
|
mediaPickerProvider = pickerProvider,
|
||||||
sessionPreferencesStore = sessionPreferencesStore,
|
sessionPreferencesStore = sessionPreferencesStore,
|
||||||
|
|||||||
+2
@@ -1535,11 +1535,13 @@ class MessageComposerPresenterTest {
|
|||||||
draftService: ComposerDraftService = FakeComposerDraftService(),
|
draftService: ComposerDraftService = FakeComposerDraftService(),
|
||||||
mediaOptimizationConfigProvider: FakeMediaOptimizationConfigProvider = FakeMediaOptimizationConfigProvider(),
|
mediaOptimizationConfigProvider: FakeMediaOptimizationConfigProvider = FakeMediaOptimizationConfigProvider(),
|
||||||
isInThread: Boolean = false,
|
isInThread: Boolean = false,
|
||||||
|
threadRoot: ThreadId? = null,
|
||||||
slashCommandService: SlashCommandService = FakeSlashCommandService(),
|
slashCommandService: SlashCommandService = FakeSlashCommandService(),
|
||||||
) = MessageComposerPresenter(
|
) = MessageComposerPresenter(
|
||||||
navigator = navigator,
|
navigator = navigator,
|
||||||
sessionCoroutineScope = this,
|
sessionCoroutineScope = this,
|
||||||
isInThread = isInThread,
|
isInThread = isInThread,
|
||||||
|
threadRoot = threadRoot,
|
||||||
room = room,
|
room = room,
|
||||||
mediaPickerProvider = pickerProvider,
|
mediaPickerProvider = pickerProvider,
|
||||||
sessionPreferencesStore = sessionPreferencesStore,
|
sessionPreferencesStore = sessionPreferencesStore,
|
||||||
|
|||||||
Reference in New Issue
Block a user