mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-14 18:21:57 +00:00
Fix various crashes
This commit is contained in:
parent
820cfbd446
commit
21d130a18b
3 changed files with 29 additions and 26 deletions
|
|
@ -146,6 +146,9 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm),
|
|||
}
|
||||
|
||||
override fun getTask(taskId: String): Flowable<Task> {
|
||||
if (realm.isClosed) {
|
||||
return Flowable.empty()
|
||||
}
|
||||
return realm.where(Task::class.java).equalTo("id", taskId).findFirstAsync().asFlowable<RealmObject>()
|
||||
.filter { realmObject -> realmObject.isLoaded }
|
||||
.cast(Task::class.java)
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
package com.habitrpg.android.habitica.helpers
|
||||
|
||||
import com.habitrpg.android.habitica.models.tasks.Task
|
||||
|
||||
import java.util.ArrayList
|
||||
import java.util.HashMap
|
||||
|
||||
import io.realm.OrderedRealmCollection
|
||||
import io.realm.RealmQuery
|
||||
import java.util.*
|
||||
|
||||
class TaskFilterHelper {
|
||||
private var tagsId: MutableList<String> = ArrayList()
|
||||
|
|
@ -86,31 +83,32 @@ class TaskFilterHelper {
|
|||
return activeFilters[type]
|
||||
}
|
||||
|
||||
fun createQuery(unfilteredData: OrderedRealmCollection<Task>): RealmQuery<Task> {
|
||||
fun createQuery(unfilteredData: OrderedRealmCollection<Task>): RealmQuery<Task>? {
|
||||
if (!unfilteredData.isValid) {
|
||||
return null
|
||||
}
|
||||
var query = unfilteredData.where()
|
||||
|
||||
if (unfilteredData.size == 0) {
|
||||
return query
|
||||
}
|
||||
if (unfilteredData.size != 0) {
|
||||
val taskType = unfilteredData[0].type
|
||||
val activeFilter = getActiveFilter(taskType)
|
||||
|
||||
val taskType = unfilteredData[0].type
|
||||
val activeFilter = getActiveFilter(taskType)
|
||||
|
||||
if (tagsId.size > 0) {
|
||||
query = query.`in`("tags.id", tagsId.toTypedArray())
|
||||
}
|
||||
if (activeFilter != null && activeFilter != Task.FILTER_ALL) {
|
||||
when (activeFilter) {
|
||||
Task.FILTER_ACTIVE -> query = if (Task.TYPE_DAILY == taskType) {
|
||||
query.equalTo("completed", false).equalTo("isDue", true)
|
||||
} else {
|
||||
query.equalTo("completed", false)
|
||||
if (tagsId.size > 0) {
|
||||
query = query.`in`("tags.id", tagsId.toTypedArray())
|
||||
}
|
||||
if (activeFilter != null && activeFilter != Task.FILTER_ALL) {
|
||||
when (activeFilter) {
|
||||
Task.FILTER_ACTIVE -> query = if (Task.TYPE_DAILY == taskType) {
|
||||
query.equalTo("completed", false).equalTo("isDue", true)
|
||||
} else {
|
||||
query.equalTo("completed", false)
|
||||
}
|
||||
Task.FILTER_GRAY -> query = query.equalTo("completed", true).or().equalTo("isDue", false)
|
||||
Task.FILTER_WEAK -> query = query.lessThan("value", 1.0)
|
||||
Task.FILTER_STRONG -> query = query.greaterThanOrEqualTo("value", 1.0)
|
||||
Task.FILTER_DATED -> query = query.isNotNull("dueDate").equalTo("completed", false)
|
||||
Task.FILTER_COMPLETED -> query = query.equalTo("completed", true)
|
||||
}
|
||||
Task.FILTER_GRAY -> query = query.equalTo("completed", true).or().equalTo("isDue", false)
|
||||
Task.FILTER_WEAK -> query = query.lessThan("value", 1.0)
|
||||
Task.FILTER_STRONG -> query = query.greaterThanOrEqualTo("value", 1.0)
|
||||
Task.FILTER_DATED -> query = query.isNotNull("dueDate").equalTo("completed", false)
|
||||
Task.FILTER_COMPLETED -> query = query.equalTo("completed", true)
|
||||
}
|
||||
}
|
||||
return query
|
||||
|
|
|
|||
|
|
@ -98,7 +98,9 @@ abstract class RealmBaseTasksRecyclerViewAdapter<VH : BaseTaskViewHolder>(privat
|
|||
|
||||
if (taskFilterHelper != null) {
|
||||
val query = taskFilterHelper.createQuery(unfilteredData)
|
||||
updateData(query.sort("position").findAll())
|
||||
if (query != null) {
|
||||
updateData(query.sort("position").findAll())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue