Fix crash for missing account in getAnyList

pull/3263/head
Alex Baker 11 months ago
parent 1140c28cff
commit 17f305379c

@ -11,6 +11,7 @@ import org.tasks.data.dao.TagDataDao
import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_READ_ONLY
import org.tasks.data.entity.CaldavTask
import org.tasks.data.entity.Task
import org.tasks.data.getLocalAccount
import org.tasks.data.getLocalList
import org.tasks.filters.CaldavFilter
import org.tasks.filters.CustomFilter
@ -85,8 +86,13 @@ class DefaultFilterProvider @Inject constructor(
val filter = caldavDao
.getCalendars()
.filterNot { it.access == ACCESS_READ_ONLY }
.getOrElse(0) { caldavDao.getLocalList() }
.let { CaldavFilter(calendar = it, account = caldavDao.getAccountByUuid(it.account!!)!!) }
.getOrNull(0)
?.let { list ->
list.account
?.let { caldavDao.getAccountByUuid(it) }
?.let { account -> CaldavFilter(calendar = list, account = account) }
}
?: CaldavFilter(calendar = caldavDao.getLocalList(), account = caldavDao.getLocalAccount())
defaultList = filter
return filter
}

@ -21,12 +21,13 @@ suspend fun CaldavDao.getLocalList() = mutex.withLock {
getLocalList(getLocalAccount())
}
private suspend fun CaldavDao.getLocalAccount() = getAccountByUuid(CaldavDao.LOCAL) ?: CaldavAccount(
accountType = CaldavAccount.TYPE_LOCAL,
uuid = CaldavDao.LOCAL,
).let {
it.copy(id = insert(it))
}
suspend fun CaldavDao.getLocalAccount() =
getAccountByUuid(CaldavDao.LOCAL)
?: CaldavAccount(
accountType = CaldavAccount.TYPE_LOCAL,
uuid = CaldavDao.LOCAL,
)
.let { it.copy(id = insert(it)) }
private suspend fun CaldavDao.getLocalList(account: CaldavAccount): CaldavCalendar =
getCalendarsByAccount(account.uuid!!).getOrNull(0)

Loading…
Cancel
Save