Draft : also clear draft when composer is blank
This commit is contained in:
parent
aa0a6ce111
commit
3a610e6550
5 changed files with 21 additions and 15 deletions
|
|
@ -21,5 +21,5 @@ import io.element.android.libraries.matrix.api.room.draft.ComposerDraft
|
|||
|
||||
interface ComposerDraftService {
|
||||
suspend fun loadDraft(roomId: RoomId): ComposerDraft?
|
||||
suspend fun saveDraft(roomId: RoomId, draft: ComposerDraft)
|
||||
suspend fun updateDraft(roomId: RoomId, draft: ComposerDraft?)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,14 +42,19 @@ class DefaultComposerDraftService @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
override suspend fun saveDraft(roomId: RoomId, draft: ComposerDraft) {
|
||||
override suspend fun updateDraft(roomId: RoomId, draft: ComposerDraft?) {
|
||||
client.getRoom(roomId)?.use { room ->
|
||||
room.saveComposerDraft(draft)
|
||||
val updateDraftResult = if (draft == null) {
|
||||
room.clearComposerDraft()
|
||||
} else {
|
||||
room.saveComposerDraft(draft)
|
||||
}
|
||||
updateDraftResult
|
||||
.onFailure {
|
||||
Timber.e(it, "Failed to save composer draft for room $roomId")
|
||||
Timber.e(it, "Failed to update composer draft for room $roomId")
|
||||
}
|
||||
.onSuccess {
|
||||
Timber.d("Saved composer draft for room $roomId")
|
||||
Timber.d("Updated composer draft for room $roomId")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -582,16 +582,16 @@ class MessageComposerPresenter @Inject constructor(
|
|||
}
|
||||
is MessageComposerMode.Reply -> ComposerDraftType.Reply(mode.eventId)
|
||||
}
|
||||
if (draftType == null || markdown.isBlank()) {
|
||||
return@launch
|
||||
val composerDraft = if (draftType == null || markdown.isBlank()) {
|
||||
null
|
||||
} else {
|
||||
val composerDraft = ComposerDraft(
|
||||
ComposerDraft(
|
||||
draftType = draftType,
|
||||
htmlText = html,
|
||||
plainText = markdown,
|
||||
)
|
||||
draftService.saveDraft(room.roomId, composerDraft)
|
||||
}
|
||||
draftService.updateDraft(room.roomId, composerDraft)
|
||||
}
|
||||
|
||||
private fun CoroutineScope.toggleTextFormatting(
|
||||
|
|
|
|||
|
|
@ -23,6 +23,6 @@ class FakeComposerDraftService : ComposerDraftService {
|
|||
var loadDraftLambda: (RoomId) -> ComposerDraft? = { null }
|
||||
override suspend fun loadDraft(roomId: RoomId) = loadDraftLambda(roomId)
|
||||
|
||||
var saveDraftLambda: (RoomId, ComposerDraft) -> Unit = { _, _ -> }
|
||||
override suspend fun saveDraft(roomId: RoomId, draft: ComposerDraft) = saveDraftLambda(roomId, draft)
|
||||
var saveDraftLambda: (RoomId, ComposerDraft?) -> Unit = { _, _ -> }
|
||||
override suspend fun updateDraft(roomId: RoomId, draft: ComposerDraft?) = saveDraftLambda(roomId, draft)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1176,8 +1176,8 @@ class MessageComposerPresenterTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `present - when save draft event is invoked and composer is empty then nothing happens`() = runTest {
|
||||
val saveDraftLambda = lambdaRecorder<RoomId, ComposerDraft, Unit> { _, _ -> }
|
||||
fun `present - when save draft event is invoked and composer is empty then service is called with null draft`() = runTest {
|
||||
val saveDraftLambda = lambdaRecorder<RoomId, ComposerDraft?, Unit> { _, _ -> }
|
||||
val composerDraftService = FakeComposerDraftService().apply {
|
||||
this.saveDraftLambda = saveDraftLambda
|
||||
}
|
||||
|
|
@ -1189,13 +1189,14 @@ class MessageComposerPresenterTest {
|
|||
initialState.eventSink.invoke(MessageComposerEvents.SaveDraft)
|
||||
advanceUntilIdle()
|
||||
assert(saveDraftLambda)
|
||||
.isNeverCalled()
|
||||
.isCalledOnce()
|
||||
.with(value(A_ROOM_ID), value(null))
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `present - when save draft event is invoked and composer is not empty then service is called`() = runTest {
|
||||
val saveDraftLambda = lambdaRecorder<RoomId, ComposerDraft, Unit> { _, _ -> }
|
||||
val saveDraftLambda = lambdaRecorder<RoomId, ComposerDraft?, Unit> { _, _ -> }
|
||||
val composerDraftService = FakeComposerDraftService().apply {
|
||||
this.saveDraftLambda = saveDraftLambda
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue