Make sure we clean up the pre-processed and uploaded media (#5039)
* Add `MediaSender.cleanUp()` and `MediaPreProcessor.cleanUp()` methods: this will remove the temporary files created when pre-processing media before sending them. * Make sure we clean up also the previous temporary media. * Fix the condition for the custom back handler in the attachments preview screen * Tests: check the clean up is performed when needed
This commit is contained in:
committed by
GitHub
parent
746699b468
commit
b219c05d06
@@ -131,12 +131,17 @@ class AttachmentsPreviewPresenter @AssistedInject constructor(
|
||||
dismissAfterSend = !useSendQueue,
|
||||
replyParameters = null,
|
||||
)
|
||||
|
||||
// Clean up the pre-processed media after it's been sent
|
||||
mediaSender.cleanUp()
|
||||
}
|
||||
}
|
||||
}
|
||||
AttachmentsPreviewEvents.CancelAndDismiss -> {
|
||||
// Cancel media preprocessing and sending
|
||||
preprocessMediaJob?.cancel()
|
||||
// If we couldn't send the pre-processed media, remove it
|
||||
mediaSender.cleanUp()
|
||||
ongoingSendAttachmentJob.value?.cancel()
|
||||
|
||||
// Dismiss the screen
|
||||
|
||||
@@ -66,7 +66,7 @@ fun AttachmentsPreviewView(
|
||||
state.eventSink(AttachmentsPreviewEvents.CancelAndClearSendState)
|
||||
}
|
||||
|
||||
BackHandler(enabled = state.sendActionState !is SendActionState.Sending) {
|
||||
BackHandler(enabled = state.sendActionState !is SendActionState.Sending.Uploading) {
|
||||
postCancel()
|
||||
}
|
||||
|
||||
|
||||
@@ -123,8 +123,10 @@ class AttachmentsPreviewPresenterTest {
|
||||
},
|
||||
)
|
||||
val onDoneListener = lambdaRecorder<Unit> { }
|
||||
val mediaPreProcessor = FakeMediaPreProcessor()
|
||||
val presenter = createAttachmentsPreviewPresenter(
|
||||
room = room,
|
||||
mediaPreProcessor = mediaPreProcessor,
|
||||
onDoneListener = { onDoneListener() },
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
@@ -143,6 +145,7 @@ class AttachmentsPreviewPresenterTest {
|
||||
assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Done)
|
||||
sendFileResult.assertions().isCalledOnce()
|
||||
onDoneListener.assertions().isCalledOnce()
|
||||
assertThat(mediaPreProcessor.cleanUpCallCount).isEqualTo(1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,11 +162,10 @@ class AttachmentsPreviewPresenterTest {
|
||||
)
|
||||
val onDoneListener = lambdaRecorder<Unit> { }
|
||||
val processLatch = CompletableDeferred<Unit>()
|
||||
val mediaPreProcessor = FakeMediaPreProcessor(processLatch)
|
||||
val presenter = createAttachmentsPreviewPresenter(
|
||||
room = room,
|
||||
mediaPreProcessor = FakeMediaPreProcessor(
|
||||
processLatch = processLatch,
|
||||
),
|
||||
mediaPreProcessor = mediaPreProcessor,
|
||||
onDoneListener = { onDoneListener() },
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
@@ -181,6 +183,7 @@ class AttachmentsPreviewPresenterTest {
|
||||
assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Done)
|
||||
sendFileResult.assertions().isCalledOnce()
|
||||
onDoneListener.assertions().isCalledOnce()
|
||||
assertThat(mediaPreProcessor.cleanUpCallCount).isEqualTo(1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,11 +200,10 @@ class AttachmentsPreviewPresenterTest {
|
||||
)
|
||||
val onDoneListener = lambdaRecorder<Unit> { }
|
||||
val processLatch = CompletableDeferred<Unit>()
|
||||
val mediaPreProcessor = FakeMediaPreProcessor(processLatch)
|
||||
val presenter = createAttachmentsPreviewPresenter(
|
||||
room = room,
|
||||
mediaPreProcessor = FakeMediaPreProcessor(
|
||||
processLatch = processLatch,
|
||||
),
|
||||
mediaPreProcessor = mediaPreProcessor,
|
||||
onDoneListener = { onDoneListener() },
|
||||
)
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
@@ -219,6 +221,7 @@ class AttachmentsPreviewPresenterTest {
|
||||
assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Done)
|
||||
sendFileResult.assertions().isCalledOnce()
|
||||
onDoneListener.assertions().isCalledOnce()
|
||||
assertThat(mediaPreProcessor.cleanUpCallCount).isEqualTo(1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,7 +282,9 @@ class AttachmentsPreviewPresenterTest {
|
||||
fun `present - cancel scenario`() = runTest {
|
||||
val onDoneListener = lambdaRecorder<Unit> { }
|
||||
val deleteCallback = lambdaRecorder<Uri?, Unit> {}
|
||||
val mediaPreProcessor = FakeMediaPreProcessor()
|
||||
val presenter = createAttachmentsPreviewPresenter(
|
||||
mediaPreProcessor = mediaPreProcessor,
|
||||
temporaryUriDeleter = FakeTemporaryUriDeleter(deleteCallback),
|
||||
onDoneListener = { onDoneListener() },
|
||||
)
|
||||
@@ -293,6 +298,7 @@ class AttachmentsPreviewPresenterTest {
|
||||
assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Done)
|
||||
deleteCallback.assertions().isCalledOnce()
|
||||
onDoneListener.assertions().isCalledOnce()
|
||||
assertThat(mediaPreProcessor.cleanUpCallCount).isEqualTo(1)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user