mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
fix task handling
This commit is contained in:
parent
524647cceb
commit
6dea4eb10f
6 changed files with 29 additions and 34 deletions
|
|
@ -49,7 +49,7 @@ class ChallengeRepositoryImpl(
|
|||
if (tasks != null) {
|
||||
val taskList = tasks.tasks.values.toList()
|
||||
taskList.forEach {
|
||||
it.userId = challengeID
|
||||
it.ownerID = challengeID
|
||||
}
|
||||
localRepository.save(taskList)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import com.habitrpg.android.habitica.data.ApiClient
|
|||
import com.habitrpg.android.habitica.data.TaskRepository
|
||||
import com.habitrpg.android.habitica.data.local.TaskLocalRepository
|
||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||
import com.habitrpg.android.habitica.interactors.ScoreTaskLocallyInteractor
|
||||
import com.habitrpg.android.habitica.models.BaseMainObject
|
||||
import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData
|
||||
|
|
@ -15,6 +14,7 @@ import com.habitrpg.android.habitica.models.tasks.TaskList
|
|||
import com.habitrpg.android.habitica.models.user.OwnedItem
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.common.habitica.helpers.AnalyticsManager
|
||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskDirection
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskDirectionData
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskScoringResult
|
||||
|
|
@ -240,7 +240,7 @@ class TaskRepositoryImpl(
|
|||
task.isSaving = true
|
||||
task.isCreating = true
|
||||
task.hasErrored = false
|
||||
task.userId = userID
|
||||
task.ownerID = userID
|
||||
if (task.id == null) {
|
||||
task.id = UUID.randomUUID().toString()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,21 +34,7 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm),
|
|||
): RealmResults<Task> {
|
||||
return realm.where(Task::class.java)
|
||||
.equalTo("typeValue", taskType.value)
|
||||
.beginGroup()
|
||||
.equalTo("userId", ownerID)
|
||||
.or()
|
||||
.beginGroup()
|
||||
.`in`("group.groupID", includedGroupIDs)
|
||||
.and()
|
||||
.beginGroup()
|
||||
.contains("group.assignedUsers", ownerID)
|
||||
.or()
|
||||
.isEmpty("group.assignedUsers")
|
||||
.endGroup()
|
||||
.endGroup()
|
||||
.or()
|
||||
.equalTo("group.groupID", ownerID)
|
||||
.endGroup()
|
||||
.equalTo("ownerID", ownerID)
|
||||
.sort("position", Sort.ASCENDING, "dateCreated", Sort.DESCENDING)
|
||||
.findAll()
|
||||
}
|
||||
|
|
@ -77,8 +63,8 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm),
|
|||
val allChecklistItems = ArrayList<ChecklistItem>()
|
||||
val allReminders = ArrayList<RemindersItem>()
|
||||
sortedTasks.forEach {
|
||||
if (it.userId.isBlank() && it.group?.groupID?.isNotBlank() != true) {
|
||||
it.userId = ownerID
|
||||
if (it.ownerID.isBlank()) {
|
||||
it.ownerID = ownerID
|
||||
}
|
||||
it.checklist?.let { it1 -> allChecklistItems.addAll(it1) }
|
||||
it.reminders?.let { it1 -> allReminders.addAll(it1) }
|
||||
|
|
@ -132,11 +118,7 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm),
|
|||
private fun removeOldTasks(ownerID: String, onlineTaskList: List<Task>) {
|
||||
if (realm.isClosed) return
|
||||
val localTasks = realm.where(Task::class.java)
|
||||
.beginGroup()
|
||||
.equalTo("userId", ownerID)
|
||||
.or()
|
||||
.equalTo("group.groupID", ownerID)
|
||||
.endGroup()
|
||||
.equalTo("ownerID", ownerID)
|
||||
.beginGroup()
|
||||
.beginGroup()
|
||||
.equalTo("typeValue", TaskType.TODO.value)
|
||||
|
|
@ -157,7 +139,7 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm),
|
|||
|
||||
private fun removeCompletedTodos(userID: String, onlineTaskList: MutableCollection<Task>) {
|
||||
val localTasks = realm.where(Task::class.java)
|
||||
.equalTo("userId", userID)
|
||||
.equalTo("ownerID", userID)
|
||||
.equalTo("typeValue", TaskType.TODO.value)
|
||||
.equalTo("completed", true)
|
||||
.findAll()
|
||||
|
|
@ -244,7 +226,7 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm),
|
|||
|
||||
override fun getErroredTasks(userID: String): Flow<List<Task>> {
|
||||
return realm.where(Task::class.java)
|
||||
.equalTo("userId", userID)
|
||||
.equalTo("ownerID", userID)
|
||||
.equalTo("hasErrored", true)
|
||||
.sort("position")
|
||||
.findAll()
|
||||
|
|
@ -265,7 +247,7 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm),
|
|||
override fun getTasksForChallenge(challengeID: String?, userID: String?): Flow<List<Task>> {
|
||||
return realm.where(Task::class.java)
|
||||
.equalTo("challengeID", challengeID)
|
||||
.equalTo("userId", userID)
|
||||
.equalTo("ownerID", userID)
|
||||
.findAll()
|
||||
.toFlow()
|
||||
.filter { it.isLoaded }
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ import android.os.Parcelable
|
|||
import android.text.Spanned
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||
import com.habitrpg.android.habitica.models.BaseMainObject
|
||||
import com.habitrpg.android.habitica.models.Tag
|
||||
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||
import com.habitrpg.common.habitica.helpers.MarkdownParser
|
||||
import com.habitrpg.shared.habitica.models.tasks.Attribute
|
||||
import com.habitrpg.shared.habitica.models.tasks.BaseTask
|
||||
|
|
@ -38,9 +38,19 @@ open class Task : RealmObject, BaseMainObject, Parcelable, BaseTask {
|
|||
get() = "id"
|
||||
|
||||
@PrimaryKey
|
||||
var combinedID: String? = null
|
||||
|
||||
@SerializedName("_id")
|
||||
var id: String? = null
|
||||
var userId: String = ""
|
||||
set(value) {
|
||||
field = value
|
||||
combinedID = id + ownerID
|
||||
}
|
||||
var ownerID: String = ""
|
||||
set(value) {
|
||||
field = value
|
||||
combinedID = id + ownerID
|
||||
}
|
||||
var priority: Float = 0.0f
|
||||
var text: String = ""
|
||||
var notes: String? = null
|
||||
|
|
@ -437,7 +447,7 @@ open class Task : RealmObject, BaseMainObject, Parcelable, BaseTask {
|
|||
override fun describeContents(): Int = 0
|
||||
|
||||
override fun writeToParcel(dest: Parcel, flags: Int) {
|
||||
dest.writeString(this.userId)
|
||||
dest.writeString(this.ownerID)
|
||||
dest.writeValue(this.priority)
|
||||
dest.writeString(this.text)
|
||||
dest.writeString(this.notes)
|
||||
|
|
@ -468,7 +478,7 @@ open class Task : RealmObject, BaseMainObject, Parcelable, BaseTask {
|
|||
constructor()
|
||||
|
||||
protected constructor(`in`: Parcel) {
|
||||
this.userId = `in`.readString() ?: ""
|
||||
this.ownerID = `in`.readString() ?: ""
|
||||
this.priority = `in`.readValue(Float::class.java.classLoader) as? Float ?: 0f
|
||||
this.text = `in`.readString() ?: ""
|
||||
this.notes = `in`.readString()
|
||||
|
|
|
|||
|
|
@ -12,10 +12,10 @@ import com.habitrpg.android.habitica.data.TagRepository
|
|||
import com.habitrpg.android.habitica.data.TaskRepository
|
||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||
import com.habitrpg.android.habitica.helpers.GroupPlanInfoProvider
|
||||
import com.habitrpg.android.habitica.models.TeamPlan
|
||||
import com.habitrpg.android.habitica.models.tasks.Task
|
||||
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskDirection
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskScoringResult
|
||||
import com.habitrpg.shared.habitica.models.tasks.TaskType
|
||||
|
|
@ -87,6 +87,9 @@ class TasksViewModel : BaseViewModel(), GroupPlanInfoProvider {
|
|||
withTasks = true,
|
||||
forced = true
|
||||
)
|
||||
if (activeFilters[TaskType.TODO] == Task.FILTER_COMPLETED) {
|
||||
taskRepository.retrieveCompletedTodos()
|
||||
}
|
||||
} else {
|
||||
userRepository.retrieveTeamPlan(ownerID.value ?: "")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ class TaskSerializer : JsonSerializer<Task>, JsonDeserializer<Task> {
|
|||
val obj = json as? JsonObject ?: return task
|
||||
task.text = obj.getAsString("text")
|
||||
task.notes = obj.getAsString("notes")
|
||||
task.userId = obj.getAsString("userId")
|
||||
task.ownerID = obj.getAsString("userId")
|
||||
task.value = obj.get("value")?.asDouble ?: 0.0
|
||||
task.type = TaskType.from(obj.getAsString("type")) ?: TaskType.HABIT
|
||||
task.frequency = Frequency.from(obj.getAsString("frequency"))
|
||||
|
|
|
|||
Loading…
Reference in a new issue