diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt index 767c78e48..14be08d2b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt @@ -42,7 +42,7 @@ interface TaskRepository : BaseRepository { fun swapTaskPosition(firstPosition: Int, secondPosition: Int) - fun updateTaskPosition(taskType: String, oldPosition: Int, newPosition: Int): Maybe> + fun updateTaskPosition(taskType: String, taskID: String, newPosition: Int): Maybe> fun getUnmanagedTask(taskid: String): Flowable diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt index cd975a49a..5055bbf01 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt @@ -214,16 +214,8 @@ class TaskRepositoryImpl(localRepository: TaskLocalRepository, apiClient: ApiCli localRepository.swapTaskPosition(firstPosition, secondPosition) } - override fun updateTaskPosition(taskType: String, oldPosition: Int, newPosition: Int): Maybe> { - return localRepository.getTaskAtPosition(taskType, oldPosition) - .firstElement() - .flatMap { task -> - return@flatMap if (task.isValid) { - apiClient.postTaskNewPosition(task.id ?: "", newPosition).firstElement() - } else { - Maybe.just>(ArrayList()) - } - } + override fun updateTaskPosition(taskType: String, taskID: String, newPosition: Int): Maybe> { + return apiClient.postTaskNewPosition(taskID, newPosition).firstElement() .doOnSuccess { localRepository.updateTaskPositions(it) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt index 5f9c276d0..0cae3910d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt @@ -198,7 +198,7 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), override fun updateTaskPositions(taskOrder: List) { if (taskOrder.isNotEmpty()) { val tasks = realm.where(Task::class.java).`in`("id", taskOrder.toTypedArray()).findAll() - realm.executeTransaction { + realm.executeTransaction { _ -> tasks.filter { taskOrder.contains(it.id) }.forEach { it.position = taskOrder.indexOf(it.id) } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.kt index 3a2d2dd0c..24b4ecab0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.kt @@ -109,7 +109,7 @@ class TaskFilterHelper { Task.FILTER_GRAY -> query = query.equalTo("completed", true).or().equalTo("isDue", false) Task.FILTER_WEAK -> query = query.lessThan("value", 0.0) Task.FILTER_STRONG -> query = query.greaterThanOrEqualTo("value", 0.0) - Task.FILTER_DATED -> query = query.isNotNull("dueDate") + Task.FILTER_DATED -> query = query.isNotNull("dueDate").equalTo("completed", false) Task.FILTER_COMPLETED -> query = query.equalTo("completed", true) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt index 9230c88ae..8fffcbf4b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt @@ -154,4 +154,8 @@ abstract class RealmBaseTasksRecyclerViewAdapter(privat override fun setIgnoreUpdates(ignoreUpdates: Boolean) { this.ignoreUpdates = ignoreUpdates } + + override fun getTaskIDAt(position: Int): String { + return data?.get(position)?.id ?: "" + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java index 5a91cc873..72c349b29 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java @@ -126,4 +126,9 @@ public class RewardsRecyclerViewAdapter extends RecyclerView.Adapter? + recyclerView.adapter = recyclerAdapter as? RecyclerView.Adapter<*> recyclerAdapter?.filter() layoutManager = recyclerView.layoutManager