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

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

Loading…
Cancel
Save