group task logic fixes

# Conflicts:
#	Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt
#	version.properties
This commit is contained in:
Phillip Thelen 2022-11-02 10:17:47 +01:00
parent f93f45e692
commit 576d81c868
3 changed files with 20 additions and 9 deletions

View file

@ -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

View file

@ -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?

View file

@ -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) {