Add default error message when attachment worker fails
This commit is contained in:
parent
5e8a9cc516
commit
4484890cf4
|
@ -20,6 +20,7 @@
|
|||
package ch.protonmail.android.usecase.compose
|
||||
|
||||
import androidx.work.WorkInfo
|
||||
import ch.protonmail.android.R
|
||||
import ch.protonmail.android.activities.messageDetails.repository.MessageDetailsRepository
|
||||
import ch.protonmail.android.api.models.DatabaseProvider
|
||||
import ch.protonmail.android.attachments.KEY_OUTPUT_RESULT_UPLOAD_ATTACHMENTS_ERROR
|
||||
|
@ -31,6 +32,7 @@ import ch.protonmail.android.core.Constants.MessageLocationType.DRAFT
|
|||
import ch.protonmail.android.crypto.AddressCrypto
|
||||
import ch.protonmail.android.data.local.model.Message
|
||||
import ch.protonmail.android.utils.notifier.UserNotifier
|
||||
import ch.protonmail.android.utils.resources.StringResourceResolver
|
||||
import ch.protonmail.android.worker.drafts.CreateDraftWorker
|
||||
import ch.protonmail.android.worker.drafts.CreateDraftWorkerErrors
|
||||
import ch.protonmail.android.worker.drafts.KEY_OUTPUT_RESULT_SAVE_DRAFT_ERROR_ENUM
|
||||
|
@ -54,7 +56,8 @@ class SaveDraft @Inject constructor(
|
|||
private val databaseProvider: DatabaseProvider,
|
||||
private val createDraftWorker: CreateDraftWorker.Enqueuer,
|
||||
private val uploadAttachmentsWorker: UploadAttachmentsWorker.Enqueuer,
|
||||
private val userNotifier: UserNotifier
|
||||
private val userNotifier: UserNotifier,
|
||||
private val stringResourceResolver: StringResourceResolver,
|
||||
) {
|
||||
|
||||
suspend operator fun invoke(
|
||||
|
@ -143,9 +146,10 @@ class SaveDraft @Inject constructor(
|
|||
.filter { it?.state?.isFinished == true }
|
||||
.map {
|
||||
if (it?.state == WorkInfo.State.FAILED) {
|
||||
val errorMessage = requireNotNull(
|
||||
it.outputData.getString(KEY_OUTPUT_RESULT_UPLOAD_ATTACHMENTS_ERROR)
|
||||
)
|
||||
val errorMessage = it.outputData.getString(KEY_OUTPUT_RESULT_UPLOAD_ATTACHMENTS_ERROR)
|
||||
?: "${stringResourceResolver(R.string.attachment_failed)} ${localDraft.subject}"
|
||||
Timber.e("SaveDraft failed permanently for ${localDraft.messageId}. $errorMessage")
|
||||
|
||||
userNotifier.showAttachmentUploadError(errorMessage, localDraft.subject)
|
||||
return@map SaveDraftResult.UploadDraftAttachmentsFailed
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ package ch.protonmail.android.usecase.compose
|
|||
import androidx.work.Data
|
||||
import androidx.work.WorkInfo
|
||||
import androidx.work.workDataOf
|
||||
import ch.protonmail.android.R
|
||||
import ch.protonmail.android.activities.messageDetails.repository.MessageDetailsRepository
|
||||
import ch.protonmail.android.api.models.DatabaseProvider
|
||||
import ch.protonmail.android.attachments.KEY_OUTPUT_RESULT_UPLOAD_ATTACHMENTS_ERROR
|
||||
|
@ -40,6 +41,7 @@ import ch.protonmail.android.pendingaction.data.PendingActionDao
|
|||
import ch.protonmail.android.pendingaction.data.model.PendingSend
|
||||
import ch.protonmail.android.usecase.compose.SaveDraft.SaveDraftParameters
|
||||
import ch.protonmail.android.utils.notifier.UserNotifier
|
||||
import ch.protonmail.android.utils.resources.StringResourceResolver
|
||||
import ch.protonmail.android.worker.drafts.CreateDraftWorker.Enqueuer
|
||||
import ch.protonmail.android.worker.drafts.CreateDraftWorkerErrors
|
||||
import ch.protonmail.android.worker.drafts.KEY_OUTPUT_RESULT_SAVE_DRAFT_ERROR_ENUM
|
||||
|
@ -84,6 +86,10 @@ class SaveDraftTest : CoroutinesTest {
|
|||
|
||||
private val userId = UserId("Id")
|
||||
|
||||
private val stringResourceResolver: StringResourceResolver = mockk {
|
||||
every { this@mockk.invoke(R.string.attachment_failed) } returns "Error"
|
||||
}
|
||||
|
||||
private val saveDraft = SaveDraft(
|
||||
addressCryptoFactory = addressCryptoFactory,
|
||||
messageDetailsRepository = messageDetailsRepository,
|
||||
|
@ -91,7 +97,8 @@ class SaveDraftTest : CoroutinesTest {
|
|||
databaseProvider = databaseProcess,
|
||||
createDraftWorker = createDraftScheduler,
|
||||
uploadAttachmentsWorker = uploadAttachmentsWorkerEnqueuer,
|
||||
userNotifier = userNotifier
|
||||
userNotifier = userNotifier,
|
||||
stringResourceResolver = stringResourceResolver
|
||||
)
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue