Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be83b62d authored by GitStart's avatar GitStart Committed by cketti
Browse files

Migrate JobIntentService to WorkManager

parent 2985c670
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -342,10 +342,6 @@
            android:name=".service.DatabaseUpgradeService"
            android:exported="false"/>

        <service
            android:name="com.fsck.k9.account.AccountRemoverService"
            android:permission="android.permission.BIND_JOB_SERVICE"/>

        <service
            android:name=".controller.push.PushService"
            android:exported="false"
+2 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ import androidx.lifecycle.LifecycleOwner
import androidx.work.WorkerParameters
import app.k9mail.feature.account.setup.domain.DomainContract.UseCase.ValidateServerSettings
import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract
import com.fsck.k9.account.AccountRemoverWorker
import com.fsck.k9.job.MailSyncWorker
import com.fsck.k9.mail.oauth.AuthStateStorage
import com.fsck.k9.ui.R
@@ -61,6 +62,7 @@ class DependencyInjectionTest : AutoCloseKoinTest() {
            withParameter<AccountValidationContract.ViewModel>(named("incoming_validation")) { authStateStorage }
            withParameter<AccountValidationContract.ViewModel>(named("outgoing_validation")) { authStateStorage }
            withParameter<ValidateServerSettings> { authStateStorage }
            withParameter<AccountRemoverWorker> { mock<WorkerParameters>() }
        }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ dependencies {
    implementation(libs.fastadapter.extensions.drag)
    implementation(libs.fastadapter.extensions.utils)
    implementation(libs.circleimageview)
    implementation(libs.androidx.work.ktx)
    api(libs.appauth)

    implementation(libs.commons.io)
+3 −2
Original line number Diff line number Diff line
@@ -20,11 +20,11 @@ class AccountRemover(
    private val preferences: Preferences,
) {

    fun removeAccount(accountUuid: String) {
    fun removeAccount(accountUuid: String): Boolean {
        val account = preferences.getAccount(accountUuid)
        if (account == null) {
            Timber.w("Can't remove account with UUID %s because it doesn't exist.", accountUuid)
            return
            return false
        }

        val accountName = account.toString()
@@ -40,6 +40,7 @@ class AccountRemover(
        Core.setServicesEnabled()

        Timber.v("Finished removing account '%s'.", accountName)
        return true
    }

    private fun removeLocalStore(account: Account) {
+0 −34
Original line number Diff line number Diff line
package com.fsck.k9.account

import android.content.Context
import android.content.Intent
import androidx.core.app.JobIntentService
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

/**
 * A [JobIntentService] to remove an account in the background.
 */
class AccountRemoverService : JobIntentService(), KoinComponent {
    private val accountRemover: AccountRemover by inject()

    override fun onHandleWork(intent: Intent) {
        val accountUuid = intent.getStringExtra(ARG_ACCOUNT_UUID)
            ?: throw IllegalArgumentException("No account UUID provided")

        accountRemover.removeAccount(accountUuid)
    }

    companion object {
        private const val JOB_ID = 1
        private const val ARG_ACCOUNT_UUID = "accountUuid"

        fun enqueueRemoveAccountJob(context: Context, accountUuid: String) {
            val workIntent = Intent().apply {
                putExtra(ARG_ACCOUNT_UUID, accountUuid)
            }

            JobIntentService.enqueueWork(context, AccountRemoverService::class.java, JOB_ID, workIntent)
        }
    }
}
Loading