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,