From 1d33a1ab07eb84fc87501942633e7acb6ea8d328 Mon Sep 17 00:00:00 2001 From: Matte23 Date: Thu, 10 Sep 2020 19:57:24 +0200 Subject: [PATCH] Remove old circulars if a new circulars list is available --- .../circolapp/viewmodels/CircularLetterViewModel.kt | 5 +++++ .../java/net/underdesk/circolapp/works/PollWork.kt | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/net/underdesk/circolapp/viewmodels/CircularLetterViewModel.kt b/app/src/main/java/net/underdesk/circolapp/viewmodels/CircularLetterViewModel.kt index da460e9..0f0062f 100644 --- a/app/src/main/java/net/underdesk/circolapp/viewmodels/CircularLetterViewModel.kt +++ b/app/src/main/java/net/underdesk/circolapp/viewmodels/CircularLetterViewModel.kt @@ -56,6 +56,11 @@ class CircularLetterViewModel(application: Application) : AndroidViewModel(appli withContext(Dispatchers.IO) { val newCirculars = fetcher.getCircularsFromServer() if (newCirculars.size != circulars.value?.size ?: true) { + if (newCirculars.size < circulars.value?.size ?: 0) { + AppDatabase.getInstance(getApplication()).circularDao() + .deleteAll() + } + AppDatabase.getInstance(getApplication()).circularDao() .insertAll(newCirculars) } diff --git a/app/src/main/java/net/underdesk/circolapp/works/PollWork.kt b/app/src/main/java/net/underdesk/circolapp/works/PollWork.kt index 800f79d..b73bb5b 100644 --- a/app/src/main/java/net/underdesk/circolapp/works/PollWork.kt +++ b/app/src/main/java/net/underdesk/circolapp/works/PollWork.kt @@ -100,6 +100,9 @@ class PollWork(appContext: Context, workerParams: WorkerParameters) : } if (newCirculars.size != oldCirculars.size) { + val oldCircularsSize = + if (newCirculars.size < oldCirculars.size) 0 else oldCirculars.size + withContext(Dispatchers.Main) { createNotificationChannel() @@ -107,7 +110,7 @@ class PollWork(appContext: Context, workerParams: WorkerParameters) : .setBigContentTitle(applicationContext.getString(R.string.notification_summary_title)) .setSummaryText(applicationContext.getString(R.string.notification_summary)) - val circularCount = newCirculars.size - oldCirculars.size + val circularCount = newCirculars.size - oldCircularsSize for (i in 0 until circularCount) { createNotification(newCirculars[i]) @@ -135,6 +138,11 @@ class PollWork(appContext: Context, workerParams: WorkerParameters) : } } + if (newCirculars.size < oldCirculars.size) { + AppDatabase.getInstance(applicationContext).circularDao() + .deleteAll() + } + AppDatabase.getInstance(applicationContext).circularDao() .insertAll(newCirculars) }