Reset the next event only if necessary

This commit is contained in:
azuo 2022-02-20 18:27:28 +08:00
parent b95a9e8e7f
commit 64ff404eac
4 changed files with 27 additions and 14 deletions

View File

@ -221,6 +221,12 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance
} }
Constants.GlanceProviderId.EVENTS -> { Constants.GlanceProviderId.EVENTS -> {
Preferences.showEventsAsGlanceProvider = isChecked Preferences.showEventsAsGlanceProvider = isChecked
if (isChecked) {
com.tommasoberlose.anotherwidget.db.EventRepository(context).run {
resetNextEventData()
close()
}
}
} }
Constants.GlanceProviderId.WEATHER -> { Constants.GlanceProviderId.WEATHER -> {
Preferences.showWeatherAsGlanceProvider = isChecked Preferences.showWeatherAsGlanceProvider = isChecked

View File

@ -27,7 +27,7 @@ class EventRepository(val context: Context) {
db.runInTransaction{ db.runInTransaction{
db.dao().run { db.dao().run {
deleteAll() deleteAll()
insertAll(eventList) insert(eventList)
} }
} }
} }
@ -119,7 +119,7 @@ class EventRepository(val context: Context) {
} }
fun getFutureEvents(): List<Event> { fun getFutureEvents(): List<Event> {
return db.dao().findFuture(Calendar.getInstance().timeInMillis).sortEvents() return db.dao().find(Calendar.getInstance().timeInMillis).sortEvents()
} }
private fun getEvents(): List<Event> { private fun getEvents(): List<Event> {
@ -141,7 +141,7 @@ class EventRepository(val context: Context) {
return db.dao().find(now, limit.timeInMillis).sortEvents() return db.dao().find(now, limit.timeInMillis).sortEvents()
} }
fun getEventsCount(): Int = db.dao().countAll() fun getEventsCount(): Int = getEvents().size
fun close() { fun close() {
// db.close() // db.close()
@ -150,19 +150,16 @@ class EventRepository(val context: Context) {
@Dao @Dao
interface EventDao { interface EventDao {
@Query("SELECT * FROM events WHERE id = :id LIMIT 1") @Query("SELECT * FROM events WHERE id = :id LIMIT 1")
fun findById(id: Long) : Event? fun findById(id: Long): Event?
@Query("SELECT * FROM events WHERE end_date > :from") @Query("SELECT * FROM events WHERE end_date > :from")
fun findFuture(from: Long) : List<Event> fun find(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> fun find(from: Long, to: Long): List<Event>
@Query("SELECT count(*) FROM events")
fun countAll() : Int
@Insert @Insert
fun insertAll(events: List<Event>) fun insert(events: List<Event>)
@Query("DELETE FROM events") @Query("DELETE FROM events")
fun deleteAll() fun deleteAll()

View File

@ -66,11 +66,11 @@ class UpdateCalendarWorker(context: Context, params: WorkerParameters) : Worker(
limit.timeInMillis + limit.timeZone.getOffset(limit.timeInMillis).coerceAtLeast(0) limit.timeInMillis + limit.timeZone.getOffset(limit.timeInMillis).coerceAtLeast(0)
) )
if (data != null) { if (data != null) {
val instances = data.list val filteredCalendarIdList = CalendarHelper.getFilteredCalendarIdList()
for (instance in instances) { for (instance in data.list) {
try { try {
val e = provider.getEvent(instance.eventId) val e = provider.getEvent(instance.eventId)
if (e == null || e.deleted || CalendarHelper.getFilteredCalendarIdList().contains(e.calendarId)) if (e == null || e.deleted || filteredCalendarIdList.contains(e.calendarId))
continue continue
if (e.allDay) { if (e.allDay) {
val start = Calendar.getInstance() val start = Calendar.getInstance()
@ -131,8 +131,12 @@ class UpdateCalendarWorker(context: Context, params: WorkerParameters) : Worker(
eventRepository.resetNextEventData() eventRepository.resetNextEventData()
eventRepository.clearEvents() eventRepository.clearEvents()
} else { } else {
val first = filteredEventList.first()
if (Preferences.nextEventId != first.id && (
//Preferences.showWeatherAsGlanceProvider || !Preferences.showNextEvent ||
eventRepository.getEventById(first.id)?.startDate != first.startDate))
eventRepository.saveNextEventData(first)
eventRepository.saveEvents(filteredEventList) eventRepository.saveEvents(filteredEventList)
//eventRepository.saveNextEventData(filteredEventList.first())
} }
} catch (ignored: java.lang.Exception) { } catch (ignored: java.lang.Exception) {
} }

View File

@ -144,6 +144,12 @@ class GesturesFragment : Fragment() {
binding.showMultipleEventsToggle.setOnCheckedChangeListener { _, isChecked -> binding.showMultipleEventsToggle.setOnCheckedChangeListener { _, isChecked ->
Preferences.showNextEvent = isChecked Preferences.showNextEvent = isChecked
if (!isChecked) {
com.tommasoberlose.anotherwidget.db.EventRepository(requireContext()).run {
resetNextEventData()
close()
}
}
} }
binding.actionOpenEventDetails.setOnClickListener { binding.actionOpenEventDetails.setOnClickListener {