diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt index 9fa6bc7c7..997a00be3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt @@ -21,6 +21,7 @@ import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.activities.TaskFormActivity import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment import com.habitrpg.android.habitica.ui.views.tasks.TaskFilterDialog +import io.reactivex.disposables.Disposable import io.reactivex.functions.Consumer import java.util.* import javax.inject.Inject @@ -158,9 +159,11 @@ class TasksFragment : BaseMainFragment(), SearchView.OnQueryTextListener { private fun showFilterDialog() { context?.let { + var disposable: Disposable? = null val dialog = TaskFilterDialog(it, HabiticaBaseApplication.userComponent) if (user != null) { dialog.setTags(user?.tags?.createSnapshot() ?: emptyList()) + disposable = tagRepository.getTags(user?.id ?: "").subscribe(Consumer {tagsList -> dialog.setTags(tagsList)}, RxErrorHandler.handleEmptyError()) } dialog.setActiveTags(taskFilterHelper.tags) if (activeFragment != null) { @@ -182,6 +185,11 @@ class TasksFragment : BaseMainFragment(), SearchView.OnQueryTextListener { updateFilterIcon() } }) + dialog.setOnDismissListener { + if (disposable?.isDisposed == false) { + disposable?.dispose() + } + } dialog.show() } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.kt index 8fe8aa7b7..0ede16d8d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.kt @@ -112,6 +112,7 @@ class TaskFilterDialog(context: Context, component: UserComponent?) : AlertDialo } private fun createTagViews() { + tagsList.removeAllViews() val colorStateList = ColorStateList( arrayOf(intArrayOf(-android.R.attr.state_checked), //disabled intArrayOf(android.R.attr.state_checked) //enabled