Draft : also clear draft when composer is blank

This commit is contained in:
ganfra 2024-07-01 11:56:47 +02:00
parent c360e6b4c8
commit 113e8ecffa
5 changed files with 21 additions and 15 deletions

View file

@ -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?)
}

View file

@ -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")
}
}
}

View file

@ -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(