Loading app/src/main/AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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> Loading app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +2 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 } Loading app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt +2 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) } } } Loading app/src/main/java/foundation/e/apps/updates/manager/UpdatesBroadcastReceiver.kt 0 → 100644 +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) } } } app/src/main/java/foundation/e/apps/updates/manager/UpdatesManager.kt→app/src/main/java/foundation/e/apps/updates/manager/UpdatesWorkManager.kt +22 −28 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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, Loading Loading
app/src/main/AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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> Loading
app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +2 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 } Loading
app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt +2 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) } } } Loading
app/src/main/java/foundation/e/apps/updates/manager/UpdatesBroadcastReceiver.kt 0 → 100644 +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) } } }
app/src/main/java/foundation/e/apps/updates/manager/UpdatesManager.kt→app/src/main/java/foundation/e/apps/updates/manager/UpdatesWorkManager.kt +22 −28 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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, Loading