diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8ba0e48..db1803f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,6 +6,7 @@
+
-
\ No newline at end of file
+
diff --git a/app/src/main/kotlin/me/amrbashir/hijriwidget/android/HijriWidgetApp.kt b/app/src/main/kotlin/me/amrbashir/hijriwidget/android/HijriWidgetApp.kt
new file mode 100644
index 0000000..bd360f4
--- /dev/null
+++ b/app/src/main/kotlin/me/amrbashir/hijriwidget/android/HijriWidgetApp.kt
@@ -0,0 +1,15 @@
+package me.amrbashir.hijriwidget.android
+
+import android.app.Application
+import me.amrbashir.hijriwidget.preferences.HijriWidgetLauncherIconWorker
+import me.amrbashir.hijriwidget.widget.HijriWidgetWorker
+
+class HijriWidgetApp : Application() {
+
+ override fun onCreate() {
+ super.onCreate()
+
+ HijriWidgetLauncherIconWorker.setup24Periodic(this)
+ HijriWidgetWorker.setup24Periodic(this)
+ }
+}
diff --git a/app/src/main/kotlin/me/amrbashir/hijriwidget/preferences/LauncherIconWorker.kt b/app/src/main/kotlin/me/amrbashir/hijriwidget/preferences/LauncherIconWorker.kt
index b1e2e31..4487ac0 100644
--- a/app/src/main/kotlin/me/amrbashir/hijriwidget/preferences/LauncherIconWorker.kt
+++ b/app/src/main/kotlin/me/amrbashir/hijriwidget/preferences/LauncherIconWorker.kt
@@ -29,8 +29,13 @@ class HijriWidgetLauncherIconWorker(
params: WorkerParameters
) : CoroutineWorker(appContext, params) {
override suspend fun doWork(): Result {
- changeLauncherIcon(this.applicationContext)
- return Result.success()
+ try {
+ changeLauncherIcon(this.applicationContext)
+ return Result.success()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ return Result.retry()
+ }
}
companion object {
@@ -73,7 +78,7 @@ class HijriWidgetLauncherIconWorker(
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"hijriWidgetLauncherIconWorker",
- ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE,
+ ExistingPeriodicWorkPolicy.KEEP,
PeriodicWorkRequest.Builder(
HijriWidgetLauncherIconWorker::class.java,
24,
diff --git a/app/src/main/kotlin/me/amrbashir/hijriwidget/preferences/MainActivity.kt b/app/src/main/kotlin/me/amrbashir/hijriwidget/preferences/MainActivity.kt
index 298fe8e..276fbc7 100644
--- a/app/src/main/kotlin/me/amrbashir/hijriwidget/preferences/MainActivity.kt
+++ b/app/src/main/kotlin/me/amrbashir/hijriwidget/preferences/MainActivity.kt
@@ -88,7 +88,6 @@ open class WidgetConfiguration(private val autoClose: Boolean = true) : Componen
}
override fun onDestroy() {
- // TODO: find a better way to change icon when app is first installed
HijriWidgetLauncherIconWorker.changeLauncherIcon(this.baseContext)
super.onDestroy()
}
diff --git a/app/src/main/kotlin/me/amrbashir/hijriwidget/widget/Widget.kt b/app/src/main/kotlin/me/amrbashir/hijriwidget/widget/Widget.kt
index b88553c..4fd04a8 100644
--- a/app/src/main/kotlin/me/amrbashir/hijriwidget/widget/Widget.kt
+++ b/app/src/main/kotlin/me/amrbashir/hijriwidget/widget/Widget.kt
@@ -28,7 +28,6 @@ class HijriWidget : GlanceAppWidget() {
override suspend fun provideGlance(context: Context, id: GlanceId) {
Preferences.load(context)
HijriDate.load(Preferences.language.value)
- HijriWidgetWorker.setup24Periodic(context)
provideContent {
GlanceTheme {
diff --git a/app/src/main/kotlin/me/amrbashir/hijriwidget/widget/Worker.kt b/app/src/main/kotlin/me/amrbashir/hijriwidget/widget/Worker.kt
index 5eccb2d..009abe8 100644
--- a/app/src/main/kotlin/me/amrbashir/hijriwidget/widget/Worker.kt
+++ b/app/src/main/kotlin/me/amrbashir/hijriwidget/widget/Worker.kt
@@ -14,8 +14,13 @@ class HijriWidgetWorker(
params: WorkerParameters
) : CoroutineWorker(appContext, params) {
override suspend fun doWork(): Result {
- HijriWidget.update(applicationContext)
- return Result.success()
+ try {
+ HijriWidget.update(applicationContext)
+ return Result.success()
+ } catch (ex: Exception) {
+ ex.printStackTrace()
+ return Result.retry()
+ }
}
@@ -33,7 +38,7 @@ class HijriWidgetWorker(
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"hijriWidgetWorker",
- ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE,
+ ExistingPeriodicWorkPolicy.KEEP,
PeriodicWorkRequest.Builder(
HijriWidgetWorker::class.java,
24,