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

Commit b27ee1e9 authored by Hasib Prince's avatar Hasib Prince
Browse files

App Lounge: fixed action for Update all

parent 444831f6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@
            </intent-filter>
        </receiver>

        <receiver android:name=".updates.manager.UpdatesManager">
        <receiver android:name=".updates.manager.UpdatesBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
+2 −2
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ import foundation.e.apps.MainActivityViewModel
import foundation.e.apps.R
import foundation.e.apps.databinding.CustomPreferenceBinding
import foundation.e.apps.setup.signin.SignInViewModel
import foundation.e.apps.updates.manager.UpdatesManager
import foundation.e.apps.updates.manager.UpdatesWorkManager
import foundation.e.apps.utils.enums.User
import javax.inject.Inject

@@ -67,7 +67,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
            preferenceManager.findPreference<Preference>(getString(R.string.update_check_intervals))
        updateCheckInterval?.setOnPreferenceChangeListener { _, newValue ->
            Log.d(TAG, "onCreatePreferences: updated Value: $newValue")
            context?.let { UpdatesManager().enqueueWork(it, newValue.toString().toLong(), ExistingPeriodicWorkPolicy.REPLACE) }
            context?.let { UpdatesWorkManager.enqueueWork(it, newValue.toString().toLong(), ExistingPeriodicWorkPolicy.REPLACE) }
            true
        }

+2 −3
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import foundation.e.apps.applicationlist.model.ApplicationListRVAdapter
import foundation.e.apps.databinding.FragmentUpdatesBinding
import foundation.e.apps.manager.download.data.DownloadProgress
import foundation.e.apps.manager.pkg.PkgManagerModule
import foundation.e.apps.updates.manager.UpdatesWorkManager
import foundation.e.apps.utils.enums.Status
import foundation.e.apps.utils.enums.User
import foundation.e.apps.utils.modules.PWAManagerModule
@@ -78,9 +79,7 @@ class UpdatesFragment : Fragment(R.layout.fragment_updates), FusedAPIInterface {
                if (hasInternet) {
                    updatesViewModel.getUpdates(data)
                    binding.button.setOnClickListener {
                        updatesViewModel.updatesList.value?.forEach { app ->
                            getApplication(app)
                        }
                        UpdatesWorkManager.startUpdateAllWork(requireContext().applicationContext)
                    }
                }
            }
+45 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019-2022  E FOUNDATION
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

package foundation.e.apps.updates.manager

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log
import androidx.preference.PreferenceManager
import androidx.work.*
import foundation.e.apps.R

class UpdatesBroadcastReceiver : BroadcastReceiver() {
    companion object {
        private const val TAG = "UpdatesManager"
    }

    override fun onReceive(context: Context, intent: Intent) {
        Log.d(TAG, "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)
        }
    }
}
+22 −28
Original line number Diff line number Diff line
@@ -17,37 +17,21 @@

package foundation.e.apps.updates.manager

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log
import androidx.preference.PreferenceManager
import androidx.work.Constraints
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.NetworkType
import androidx.work.PeriodicWorkRequest
import androidx.work.WorkManager
import foundation.e.apps.R
import androidx.work.*
import java.util.concurrent.TimeUnit

class UpdatesManager : BroadcastReceiver() {

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

    override fun onReceive(context: Context, intent: Intent) {
        Log.d(TAG, "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()
            enqueueWork(context, interval, ExistingPeriodicWorkPolicy.KEEP)
        }
    fun startUpdateAllWork(context: Context) {
        WorkManager.getInstance(context).enqueueUniqueWork(
            UPDATES_WORK_NAME,
            ExistingWorkPolicy.KEEP,
            buildOneTimeWorkRequest()
        )
    }

    private fun buildWorkerConstraints() = Constraints.Builder().apply {
@@ -65,7 +49,17 @@ class UpdatesManager : BroadcastReceiver() {
        }.build()
    }

    fun enqueueWork(context: Context, interval: Long, existingPeriodicWorkPolicy: ExistingPeriodicWorkPolicy) {
    private fun buildOneTimeWorkRequest(): OneTimeWorkRequest {
        return OneTimeWorkRequest.Builder(UpdatesWorker::class.java).apply {
            setConstraints(buildWorkerConstraints())
        }.build()
    }

    fun enqueueWork(
        context: Context,
        interval: Long,
        existingPeriodicWorkPolicy: ExistingPeriodicWorkPolicy
    ) {
        Log.i(TAG, "UpdatesWorker interval: $interval hours")
        WorkManager.getInstance(context).enqueueUniquePeriodicWork(
            UPDATES_WORK_NAME,