Skip to content

Commit

Permalink
Re-enqueue wallpaper worker after reboot (closes #81)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bnyro committed Jun 7, 2023
1 parent 464f70f commit d8b9369
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
10 changes: 10 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,16 @@
</intent-filter>
</activity>

<!-- Listen for booting and re-enqueue the wallpaper worker -->
<receiver
android:name=".receivers.BootReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>

</application>

</manifest>
12 changes: 12 additions & 0 deletions app/src/main/java/com/bnyro/wallpaper/receivers/BootReceiver.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.bnyro.wallpaper.receivers

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.bnyro.wallpaper.util.WorkerHelper

class BootReceiver: BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
WorkerHelper.enqueue(context, true)
}
}
8 changes: 5 additions & 3 deletions app/src/main/java/com/bnyro/wallpaper/util/WorkerHelper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@ import java.util.concurrent.TimeUnit
object WorkerHelper {
private const val JOB_NAME = "WallpaperChanger"

fun enqueue(context: Context, verbose: Boolean = false) {
fun enqueue(context: Context, forceUpdate: Boolean = false) {
if (!Preferences.getBoolean(Preferences.wallpaperChangerKey, false)) {
cancel(context)
return
}

val networkType = if (Preferences.getChangerSource() == WallpaperSource.LOCAL) NetworkType.NOT_REQUIRED else NetworkType.CONNECTED
val networkType = if (
Preferences.getChangerSource() == WallpaperSource.LOCAL
) NetworkType.NOT_REQUIRED else NetworkType.CONNECTED

val job = PeriodicWorkRequestBuilder<BackgroundWorker>(
Preferences.getString(
Expand All @@ -32,7 +34,7 @@ object WorkerHelper {
.build()
).build()

val policy = if (verbose) ExistingPeriodicWorkPolicy.REPLACE else ExistingPeriodicWorkPolicy.KEEP
val policy = if (forceUpdate) ExistingPeriodicWorkPolicy.UPDATE else ExistingPeriodicWorkPolicy.KEEP
WorkManager.getInstance(context)
.enqueueUniquePeriodicWork(JOB_NAME, policy, job)
}
Expand Down

0 comments on commit d8b9369

Please sign in to comment.