fix worker

This commit is contained in:
Bnyro 2022-07-30 11:08:28 +02:00
parent e253373536
commit 41cf1c782d
3 changed files with 16 additions and 5 deletions

View File

@ -6,6 +6,7 @@ import android.app.NotificationManager
import android.os.Build import android.os.Build
import android.os.StrictMode import android.os.StrictMode
import android.os.StrictMode.VmPolicy import android.os.StrictMode.VmPolicy
import androidx.work.ExistingPeriodicWorkPolicy
import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.preferences.PreferenceHelper
import com.github.libretube.preferences.PreferenceKeys import com.github.libretube.preferences.PreferenceKeys
import com.github.libretube.util.NotificationHelper import com.github.libretube.util.NotificationHelper
@ -39,7 +40,7 @@ class MyApp : Application() {
/** /**
* initialize the notification listener in the background * initialize the notification listener in the background
*/ */
NotificationHelper.enqueueWork(this) NotificationHelper.enqueueWork(this, ExistingPeriodicWorkPolicy.KEEP)
} }
/** /**

View File

@ -4,6 +4,7 @@ import android.os.Bundle
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreferenceCompat import androidx.preference.SwitchPreferenceCompat
import androidx.work.ExistingPeriodicWorkPolicy
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.activities.SettingsActivity import com.github.libretube.activities.SettingsActivity
import com.github.libretube.util.NotificationHelper import com.github.libretube.util.NotificationHelper
@ -19,14 +20,22 @@ class NotificationSettings : PreferenceFragmentCompat() {
val notificationsEnabled = findPreference<SwitchPreferenceCompat>(PreferenceKeys.NOTIFICATION_ENABLED) val notificationsEnabled = findPreference<SwitchPreferenceCompat>(PreferenceKeys.NOTIFICATION_ENABLED)
notificationsEnabled?.setOnPreferenceChangeListener { _, _ -> notificationsEnabled?.setOnPreferenceChangeListener { _, _ ->
NotificationHelper.enqueueWork(requireContext()) updateNotificationPrefs()
true true
} }
val checkingFrequency = findPreference<ListPreference>(PreferenceKeys.CHECKING_FREQUENCY) val checkingFrequency = findPreference<ListPreference>(PreferenceKeys.CHECKING_FREQUENCY)
checkingFrequency?.setOnPreferenceChangeListener { _, _ -> checkingFrequency?.setOnPreferenceChangeListener { _, _ ->
NotificationHelper.enqueueWork(requireContext()) updateNotificationPrefs()
true true
} }
} }
private fun updateNotificationPrefs() {
// replace the previous queued work request
NotificationHelper.enqueueWork(
requireContext(),
ExistingPeriodicWorkPolicy.REPLACE
)
}
} }

View File

@ -20,7 +20,8 @@ import java.util.concurrent.TimeUnit
object NotificationHelper { object NotificationHelper {
fun enqueueWork( fun enqueueWork(
context: Context context: Context,
existingPeriodicWorkPolicy: ExistingPeriodicWorkPolicy
) { ) {
// get the notification preferences // get the notification preferences
PreferenceHelper.setContext(context) PreferenceHelper.setContext(context)
@ -57,7 +58,7 @@ object NotificationHelper {
WorkManager.getInstance(context) WorkManager.getInstance(context)
.enqueueUniquePeriodicWork( .enqueueUniquePeriodicWork(
uniqueWorkName, uniqueWorkName,
ExistingPeriodicWorkPolicy.REPLACE, existingPeriodicWorkPolicy,
notificationWorker notificationWorker
) )
} else { } else {