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

Commit 9141da1d authored by Hasib Prince's avatar Hasib Prince
Browse files

fixed: auto update is replaced by manual update

parent 1b927cf6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
                UpdatesWorkManager.enqueueWork(
                    it,
                    newValue.toString().toLong(),
                    ExistingPeriodicWorkPolicy.KEEP
                    ExistingPeriodicWorkPolicy.REPLACE
                )
            }
            true
+13 −3
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.WorkInfo
import androidx.work.WorkManager
import dagger.hilt.android.AndroidEntryPoint
@@ -181,7 +182,9 @@ class UpdatesFragment : TimeoutFragment(R.layout.fragment_updates), FusedAPIInte
            (
                workInfoList.isNullOrEmpty() ||
                    (
                        !updatesViewModel.checkWorkInfoListHasAnyUpdatableWork(workInfoList) &&
                        !updatesViewModel.checkWorkInfoListHasAnyUpdatableWork(
                            workInfoList
                        ) &&
                            updatesViewModel.hasAnyUpdatableApp()
                        )
                )
@@ -275,7 +278,12 @@ class UpdatesFragment : TimeoutFragment(R.layout.fragment_updates), FusedAPIInte
            true
        }
        binding.button.setOnClickListener {
            UpdatesWorkManager.startUpdateAllWork(requireContext().applicationContext)
            val interval = updatesViewModel.getUpdateInterval()
            UpdatesWorkManager.enqueueWork(
                requireContext(),
                interval,
                ExistingPeriodicWorkPolicy.REPLACE
            )
            observeUpdateWork()
            binding.button.isEnabled = false
        }
@@ -283,7 +291,7 @@ class UpdatesFragment : TimeoutFragment(R.layout.fragment_updates), FusedAPIInte

    private fun observeUpdateWork() {
        WorkManager.getInstance(requireContext())
            .getWorkInfosByTagLiveData(UpdatesWorkManager.UPDATES_WORK_NAME)
            .getWorkInfosByTagLiveData(UpdatesWorkManager.TAG)
            .observe(viewLifecycleOwner) {
                binding.button.isEnabled = hasAnyPendingUpdates(it)
            }
@@ -357,6 +365,8 @@ class UpdatesFragment : TimeoutFragment(R.layout.fragment_updates), FusedAPIInte
    }

    override fun onDestroyView() {
        mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner)
        isDownloadObserverAdded = false
        super.onDestroyView()
        _binding = null
    }
+5 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import foundation.e.apps.utils.enums.ResultStatus
import foundation.e.apps.utils.enums.Status
import foundation.e.apps.utils.exceptions.CleanApkException
import foundation.e.apps.utils.exceptions.GPlayException
import foundation.e.apps.utils.modules.PreferenceManagerModule
import foundation.e.apps.utils.parentFragment.LoadingViewModel
import kotlinx.coroutines.launch
import javax.inject.Inject
@@ -38,7 +39,8 @@ import javax.inject.Inject
@HiltViewModel
class UpdatesViewModel @Inject constructor(
    private val updatesManagerRepository: UpdatesManagerRepository,
    private val fusedAPIRepository: FusedAPIRepository
    private val fusedAPIRepository: FusedAPIRepository,
    private val preferenceManagerModule: PreferenceManagerModule
) : LoadingViewModel() {

    val updatesList: MutableLiveData<Pair<List<FusedApp>, ResultStatus?>> = MutableLiveData()
@@ -133,4 +135,6 @@ class UpdatesViewModel @Inject constructor(
        )
        return updatesList.value?.first?.any { pendingStatesForUpdate.contains(it.status) } == true
    }

    fun getUpdateInterval() = preferenceManagerModule.getUpdateInterval()
}
+4 −9
Original line number Diff line number Diff line
@@ -20,9 +20,8 @@ package foundation.e.apps.updates.manager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import androidx.preference.PreferenceManager
import androidx.work.ExistingPeriodicWorkPolicy
import foundation.e.apps.R
import foundation.e.apps.utils.modules.PreferenceManagerModule
import timber.log.Timber

class UpdatesBroadcastReceiver : BroadcastReceiver() {
@@ -33,13 +32,9 @@ class UpdatesBroadcastReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        Timber.d("onReceive: ${intent.action}")
        if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
            val preferences = PreferenceManager.getDefaultSharedPreferences(context)
            val interval =
                preferences.getString(
                    context.getString(R.string.update_check_intervals),
                    context.getString(R.string.preference_update_interval_default)
                )!!.toLong()
            UpdatesWorkManager.enqueueWork(context, interval, ExistingPeriodicWorkPolicy.KEEP)
            val preferenceManagerModule = PreferenceManagerModule(context)
            val interval = preferenceManagerModule.getUpdateInterval()
            UpdatesWorkManager.enqueueWork(context, interval, ExistingPeriodicWorkPolicy.REPLACE)
        }
    }
}
+2 −24
Original line number Diff line number Diff line
@@ -20,29 +20,15 @@ package foundation.e.apps.updates.manager
import android.content.Context
import android.util.Log
import androidx.work.Constraints
import androidx.work.Data
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.ExistingWorkPolicy
import androidx.work.NetworkType
import androidx.work.OneTimeWorkRequest
import androidx.work.PeriodicWorkRequest
import androidx.work.WorkManager
import java.util.UUID
import java.util.concurrent.TimeUnit

object UpdatesWorkManager {
    const val UPDATES_WORK_NAME = "updates_work"
    private const val TAG = "UpdatesManager"

    fun startUpdateAllWork(context: Context): UUID {
        val oneTimeWorkRequest = buildOneTimeWorkRequest()
        WorkManager.getInstance(context).enqueueUniqueWork(
            UPDATES_WORK_NAME,
            ExistingWorkPolicy.REPLACE,
            buildOneTimeWorkRequest()
        )
        return oneTimeWorkRequest.id
    }
    private const val UPDATES_WORK_NAME = "updates_work"
    const val TAG = "UpdatesWorkTag"

    private fun buildWorkerConstraints() = Constraints.Builder().apply {
        setRequiresBatteryNotLow(true)
@@ -60,14 +46,6 @@ object UpdatesWorkManager {
        }.build()
    }

    private fun buildOneTimeWorkRequest(): OneTimeWorkRequest {
        return OneTimeWorkRequest.Builder(UpdatesWorker::class.java).apply {
            setConstraints(buildWorkerConstraints())
            addTag(UPDATES_WORK_NAME)
        }.setInputData(Data.Builder().putBoolean(UpdatesWorker.IS_AUTO_UPDATE, false).build())
            .build()
    }

    fun enqueueWork(
        context: Context,
        interval: Long,
Loading