From b95a9e8e7ff261c29bc34b3fcf9369a03246e0d4 Mon Sep 17 00:00:00 2001 From: azuo Date: Sat, 19 Feb 2022 13:46:33 +0800 Subject: [PATCH] Keep the next event after updating the event list, if it still exists --- .../anotherwidget/db/EventRepository.kt | 27 +++++++++---------- .../anotherwidget/global/Preferences.kt | 6 ----- .../services/UpdateCalendarWorker.kt | 4 +-- 3 files changed, 14 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt index f9d1935..4a96a38 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt @@ -39,12 +39,6 @@ class EventRepository(val context: Context) { fun resetNextEventData() { Preferences.bulk { remove(Preferences::nextEventId) - remove(Preferences::nextEventName) - remove(Preferences::nextEventStartDate) - remove(Preferences::nextEventAllDay) - remove(Preferences::nextEventLocation) - remove(Preferences::nextEventEndDate) - remove(Preferences::nextEventCalendarId) } } @@ -75,7 +69,7 @@ class EventRepository(val context: Context) { val events = getEvents() if (events.isNotEmpty()) { val newNextEvent = events.first() - Preferences.nextEventId = newNextEvent.id + saveNextEventData(newNextEvent) newNextEvent } else { resetNextEventData() @@ -93,9 +87,9 @@ class EventRepository(val context: Context) { if (eventList.isNotEmpty()) { val index = eventList.indexOfFirst { it.id == Preferences.nextEventId } if (index > -1 && index < eventList.size - 1) { - Preferences.nextEventId = eventList[index + 1].id + saveNextEventData(eventList[index + 1]) } else { - Preferences.nextEventId = eventList.first().id + saveNextEventData(eventList.first()) } } else { resetNextEventData() @@ -111,9 +105,9 @@ class EventRepository(val context: Context) { if (eventList.isNotEmpty()) { val index = eventList.indexOfFirst { it.id == Preferences.nextEventId } if (index > 0) { - Preferences.nextEventId = eventList[index - 1].id + saveNextEventData(eventList[index - 1]) } else { - Preferences.nextEventId = eventList.last().id + saveNextEventData(eventList.last()) } } else { resetNextEventData() @@ -125,7 +119,7 @@ class EventRepository(val context: Context) { } fun getFutureEvents(): List { - return db.dao().findFuture(Calendar.getInstance().timeInMillis).applyFilters().sortEvents() + return db.dao().findFuture(Calendar.getInstance().timeInMillis).sortEvents() } private fun getEvents(): List { @@ -144,10 +138,10 @@ class EventRepository(val context: Context) { else -> add(Calendar.HOUR, 6) } } - return db.dao().find(now, limit.timeInMillis).applyFilters().sortEvents() + return db.dao().find(now, limit.timeInMillis).sortEvents() } - fun getEventsCount(): Int = getEvents().size + fun getEventsCount(): Int = db.dao().countAll() fun close() { // db.close() @@ -161,9 +155,12 @@ class EventRepository(val context: Context) { @Query("SELECT * FROM events WHERE end_date > :from") fun findFuture(from: Long) : List - @Query("SELECT * FROM events WHERE end_date > :from and start_date <= :to") + @Query("SELECT * FROM events WHERE end_date > :from AND start_date <= :to") fun find(from: Long, to: Long) : List + @Query("SELECT count(*) FROM events") + fun countAll() : Int + @Insert fun insertAll(events: List) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt index 4db926a..d5a9464 100755 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt @@ -23,12 +23,6 @@ object Preferences : KotprefModel() { var calendarFilter by stringPref(key = "PREF_CALENDAR_FILTER", default = "") var nextEventId by longPref(key = "PREF_NEXT_EVENT_ID", default = -1) - var nextEventName by stringPref(key = "PREF_NEXT_EVENT_NAME") - var nextEventStartDate by longPref(key = "PREF_NEXT_EVENT_START_DATE") - var nextEventAllDay by booleanPref(key = "PREF_NEXT_EVENT_ALL_DAY") - var nextEventLocation by stringPref(key = "PREF_NEXT_EVENT_LOCATION") - var nextEventEndDate by longPref(key = "PREF_NEXT_EVENT_END_DATE") - var nextEventCalendarId by intPref(key = "PREF_NEXT_EVENT_CALENDAR_ID") var customLocationLat by stringPref(key = "PREF_CUSTOM_LOCATION_LAT", default = "") var customLocationLon by stringPref(key = "PREF_CUSTOM_LOCATION_LON", default = "") var customLocationAdd by stringPref(key = "PREF_CUSTOM_LOCATION_ADD", default = "") diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarWorker.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarWorker.kt index 6e8144d..9670f8d 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarWorker.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarWorker.kt @@ -131,8 +131,8 @@ class UpdateCalendarWorker(context: Context, params: WorkerParameters) : Worker( eventRepository.resetNextEventData() eventRepository.clearEvents() } else { - eventRepository.saveEvents(sortedEvents) - eventRepository.saveNextEventData(filteredEventList.first()) + eventRepository.saveEvents(filteredEventList) + //eventRepository.saveNextEventData(filteredEventList.first()) } } catch (ignored: java.lang.Exception) { }