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

Unverified Commit dfe3619a authored by cketti's avatar cketti Committed by GitHub
Browse files

Merge pull request #4254 from k9mail/disable_push

Disable Push
parents dcb91307 4f0e90a4
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -4,14 +4,12 @@ import com.evernote.android.job.Job
import com.evernote.android.job.JobCreator

class K9JobCreator(
        private val mailSyncJobManager: MailSyncJobManager,
        private val pusherRefreshJobManager: PusherRefreshJobManager
        private val mailSyncJobManager: MailSyncJobManager
) : JobCreator {

    override fun create(tag: String): Job? {
        return when (tag) {
            MailSyncJob.TAG -> mailSyncJobManager.getJob()
            PusherRefreshJob.TAG -> pusherRefreshJobManager.getJob()
            else -> null
        }
    }
+3 −13
Original line number Diff line number Diff line
@@ -8,8 +8,7 @@ class K9JobManager(
        jobCreator: K9JobCreator,
        private val jobManager: JobManager,
        private val preferences: Preferences,
        private val mailSyncJobManager: MailSyncJobManager,
        private val pusherRefreshJobManager: PusherRefreshJobManager
        private val mailSyncJobManager: MailSyncJobManager
) {

    // It's recommended to initialize JobManager in Application onCreate()
@@ -34,11 +33,7 @@ class K9JobManager(
    }

    fun schedulePusherRefresh() {
        cancelAllPusherRefreshJobs()

        preferences.availableAccounts?.forEach { account ->
            pusherRefreshJobManager.scheduleJob(account)
        }
        // Push is temporarily disabled. See GH-4253
    }

    fun cancelAllMailSyncJobs() {
@@ -46,11 +41,6 @@ class K9JobManager(
        jobManager.cancelAllForTag(MailSyncJob.TAG)
    }

    fun cancelAllPusherRefreshJobs() {
        Timber.v("canceling pusher refresh job")
        jobManager.cancelAllForTag(PusherRefreshJob.TAG)
    }

    companion object {
        const val EXTRA_KEY_ACCOUNT_UUID = "param_key_account_uuid"
    }
+2 −3
Original line number Diff line number Diff line
@@ -5,8 +5,7 @@ import org.koin.dsl.module.applicationContext

val jobModule = applicationContext {
    bean { JobManager.create(get()) as JobManager }
    bean { K9JobManager(get(), get(), get(), get(), get()) }
    bean { K9JobCreator(get(), get()) }
    bean { K9JobManager(get(), get(), get(), get()) }
    bean { K9JobCreator(get()) }
    factory { MailSyncJobManager(get(), get()) }
    factory { PusherRefreshJobManager(get(), get(), get()) }
}
+0 −45
Original line number Diff line number Diff line
package com.fsck.k9.job

import com.evernote.android.job.Job
import com.fsck.k9.Preferences
import com.fsck.k9.controller.MessagingController
import timber.log.Timber


class PusherRefreshJob(
        private val messagingController: MessagingController,
        private val preferences: Preferences
) : Job() {

    override fun onRunJob(params: Params): Result {

        params.extras.getString(K9JobManager.EXTRA_KEY_ACCOUNT_UUID, null)
                ?.let { accountUuid ->

                    preferences.getAccount(accountUuid)?.let { account ->
                        try {

                            // Refresh pushers
                            Timber.i("Refreshing pusher for ${account.description}")
                            messagingController.getPusher(account)?.refresh()

                            // Whenever we refresh our pushers, send any unsent messages
                            Timber.d("trying to send mail in all folders!")
                            messagingController.sendPendingMessages(null)

                        } catch (e: Exception) {
                            Timber.e(e, "Exception while refreshing pushers")
                            return Result.RESCHEDULE
                        }
                    }
                }

        return Result.SUCCESS
    }


    companion object {
        const val TAG: String = "PusherRefreshJob"
    }

}
 No newline at end of file
+0 −64
Original line number Diff line number Diff line
package com.fsck.k9.job

import android.content.Context
import com.evernote.android.job.JobRequest
import com.evernote.android.job.util.support.PersistableBundleCompat
import com.fsck.k9.Account
import com.fsck.k9.Preferences
import com.fsck.k9.controller.MessagingController
import timber.log.Timber

class PusherRefreshJobManager(
        private val context: Context,
        private val messagingController: MessagingController,
        private val preferences: Preferences
) {

    fun getJob() = PusherRefreshJob(messagingController, preferences)

    fun scheduleJob(account: Account) {

        if (!isPushEnabled(account)) {
            return
        }

        getPushIntervalInMillisecondsIfEnabled(account)?.let { syncInterval ->

            Timber.v("scheduling pusher refresh job for ${account.description}")

            val extras = PersistableBundleCompat()
            extras.putString(K9JobManager.EXTRA_KEY_ACCOUNT_UUID, account.uuid)

            val jobRequest = JobRequest.Builder(PusherRefreshJob.TAG)
                    .setRequiredNetworkType(JobRequest.NetworkType.CONNECTED)
                    .setRequiresStorageNotLow(true)
                    .setPeriodic(syncInterval)
                    .setExtras(extras)
                    .setRequirementsEnforced(true)
                    .build()

            jobRequest.scheduleAsync()
        }

    }

    private fun getPushIntervalInMillisecondsIfEnabled(account: Account): Long? {
        val intervalMinutes = account.idleRefreshMinutes

        if (intervalMinutes <= Account.INTERVAL_MINUTES_NEVER) {
            return null
        }

        return (intervalMinutes * 60 * 1000).toLong()
    }

    private fun isPushEnabled(account: Account): Boolean {
        if (account.isEnabled && account.isAvailable(context)) {
            Timber.i("Setting up pushers for account %s", account.description)
            return messagingController.setupPushing(account)
        }

        return false
    }

}
 No newline at end of file
Loading