mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
group task logic fixes
# Conflicts: # Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt # version.properties
This commit is contained in:
parent
f93f45e692
commit
576d81c868
3 changed files with 20 additions and 9 deletions
|
|
@ -9,17 +9,17 @@ import com.habitrpg.android.habitica.helpers.ExceptionHandler
|
|||
import com.habitrpg.android.habitica.interactors.ScoreTaskLocallyInteractor
|
||||
import com.habitrpg.android.habitica.models.BaseMainObject
|
||||
import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskDirection
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskDirectionData
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskScoringResult
|
||||
import com.habitrpg.android.habitica.models.tasks.ChecklistItem
|
||||
import com.habitrpg.android.habitica.models.tasks.Task
|
||||
import com.habitrpg.android.habitica.models.tasks.TaskList
|
||||
import com.habitrpg.shared.habitica.models.tasks.TaskType
|
||||
import com.habitrpg.shared.habitica.models.tasks.TasksOrder
|
||||
import com.habitrpg.android.habitica.models.user.OwnedItem
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.proxy.AnalyticsManager
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskDirection
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskDirectionData
|
||||
import com.habitrpg.shared.habitica.models.responses.TaskScoringResult
|
||||
import com.habitrpg.shared.habitica.models.tasks.TaskType
|
||||
import com.habitrpg.shared.habitica.models.tasks.TasksOrder
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
import io.reactivex.rxjava3.core.Maybe
|
||||
import io.reactivex.rxjava3.core.Single
|
||||
|
|
@ -144,7 +144,7 @@ class TaskRepositoryImpl(
|
|||
if (bgTask.type != TaskType.REWARD && (bgTask.value - localDelta) + res.delta != bgTask.value) {
|
||||
bgTask.value = (bgTask.value - localDelta) + res.delta
|
||||
if (TaskType.DAILY == bgTask.type || TaskType.TODO == bgTask.type) {
|
||||
bgTask.completed = up
|
||||
bgTask.completeForUser(userID, up)
|
||||
if (TaskType.DAILY == bgTask.type) {
|
||||
if (up) {
|
||||
bgTask.streak = (bgTask.streak ?: 0) + 1
|
||||
|
|
|
|||
|
|
@ -119,15 +119,26 @@ open class Task : RealmObject, BaseMainObject, Parcelable, BaseTask {
|
|||
|
||||
fun completed(byUserID: String?): Boolean {
|
||||
return if (isGroupTask) {
|
||||
group?.assignedUsersDetail?.firstOrNull { it.assignedUserID == byUserID }?.completed ?: false
|
||||
group?.assignedUsersDetail?.firstOrNull { it.assignedUserID == byUserID }?.completed ?: completed
|
||||
} else {
|
||||
completed
|
||||
}
|
||||
}
|
||||
|
||||
fun completeForUser(userID: String?, completed: Boolean) {
|
||||
if (isGroupTask && group?.assignedUsersDetail?.isNotEmpty() == true) {
|
||||
group?.assignedUsersDetail?.firstOrNull { it.assignedUserID == userID }?.completed = completed
|
||||
if (group?.assignedUsersDetail?.filter { it.completed != completed }?.isEmpty() == true) {
|
||||
this.completed = completed
|
||||
}
|
||||
} else {
|
||||
this.completed = completed
|
||||
}
|
||||
}
|
||||
|
||||
fun isDisplayedActiveForUser(userID: String?): Boolean {
|
||||
val isActive = ((isDue == true && type == TaskType.DAILY) || type == TaskType.TODO)
|
||||
return isActive && completed(userID)
|
||||
return isActive && !completed(userID)
|
||||
}
|
||||
|
||||
val streakString: String?
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ class DailyViewHolder(
|
|||
}
|
||||
|
||||
override fun shouldDisplayAsActive(task: Task?, userID: String?): Boolean {
|
||||
return task?.isDisplayedActive ?: false
|
||||
return task?.isDisplayedActiveForUser(userID) ?: false
|
||||
}
|
||||
|
||||
override fun configureSpecialTaskTextView(task: Task) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue