Keep the next event after updating the event list, if it still exists

This commit is contained in:
azuo 2022-02-19 13:46:33 +08:00
parent 1667d9c22c
commit b95a9e8e7f
3 changed files with 14 additions and 23 deletions

View File

@ -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<Event> {
return db.dao().findFuture(Calendar.getInstance().timeInMillis).applyFilters().sortEvents()
return db.dao().findFuture(Calendar.getInstance().timeInMillis).sortEvents()
}
private fun getEvents(): List<Event> {
@ -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<Event>
@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<Event>
@Query("SELECT count(*) FROM events")
fun countAll() : Int
@Insert
fun insertAll(events: List<Event>)

View File

@ -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 = "")

View File

@ -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) {
}