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.StrictMode
import android.os.StrictMode.VmPolicy
import androidx.work.ExistingPeriodicWorkPolicy
import com.github.libretube.preferences.PreferenceHelper
import com.github.libretube.preferences.PreferenceKeys
import com.github.libretube.util.NotificationHelper
@ -39,7 +40,7 @@ class MyApp : Application() {
/**
* 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.PreferenceFragmentCompat
import androidx.preference.SwitchPreferenceCompat
import androidx.work.ExistingPeriodicWorkPolicy
import com.github.libretube.R
import com.github.libretube.activities.SettingsActivity
import com.github.libretube.util.NotificationHelper
@ -19,14 +20,22 @@ class NotificationSettings : PreferenceFragmentCompat() {
val notificationsEnabled = findPreference<SwitchPreferenceCompat>(PreferenceKeys.NOTIFICATION_ENABLED)
notificationsEnabled?.setOnPreferenceChangeListener { _, _ ->
NotificationHelper.enqueueWork(requireContext())
updateNotificationPrefs()
true
}
val checkingFrequency = findPreference<ListPreference>(PreferenceKeys.CHECKING_FREQUENCY)
checkingFrequency?.setOnPreferenceChangeListener { _, _ ->
NotificationHelper.enqueueWork(requireContext())
updateNotificationPrefs()
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 {
fun enqueueWork(
context: Context
context: Context,
existingPeriodicWorkPolicy: ExistingPeriodicWorkPolicy
) {
// get the notification preferences
PreferenceHelper.setContext(context)
@ -57,7 +58,7 @@ object NotificationHelper {
WorkManager.getInstance(context)
.enqueueUniquePeriodicWork(
uniqueWorkName,
ExistingPeriodicWorkPolicy.REPLACE,
existingPeriodicWorkPolicy,
notificationWorker
)
} else {