diff --git a/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java b/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java index e51436e37..bf4b7c176 100644 --- a/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java +++ b/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java @@ -8,9 +8,7 @@ import androidx.recyclerview.widget.ListUpdateCallback; import androidx.recyclerview.widget.RecyclerView; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.adapter.TaskAdapter; -import com.todoroo.astrid.api.CaldavFilter; import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.api.GtasksFilter; import com.todoroo.astrid.dao.TaskDao; import java.util.List; import org.tasks.data.TaskContainer; @@ -23,7 +21,6 @@ public abstract class TaskListRecyclerAdapter extends RecyclerView.Adapter chips = - chipProvider.getChips(context, isRemoteList || indent > 0, hideSubtaskChip, task); + chipProvider.getChips( + context, + filter, + indent > 0, + hideSubtaskChip, + task); if (chips.isEmpty()) { chipGroup.setVisibility(View.GONE); } else { diff --git a/app/src/main/java/org/tasks/ui/ChipProvider.java b/app/src/main/java/org/tasks/ui/ChipProvider.java index eadf9553d..d76e3592d 100644 --- a/app/src/main/java/org/tasks/ui/ChipProvider.java +++ b/app/src/main/java/org/tasks/ui/ChipProvider.java @@ -2,8 +2,9 @@ package org.tasks.ui; import static com.google.common.collect.Iterables.filter; import static com.google.common.collect.Iterables.removeIf; -import static com.google.common.collect.Lists.newArrayList; +import static com.google.common.collect.Iterables.transform; import static com.google.common.collect.Lists.transform; +import static com.google.common.collect.Sets.newHashSet; import static com.todoroo.andlib.utility.AndroidUtilities.assertMainThread; import android.app.Activity; @@ -24,6 +25,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import javax.inject.Inject; import org.tasks.LocalBroadcastManager; import org.tasks.R; @@ -103,7 +105,11 @@ public class ChipProvider { } public List getChips( - Activity activity, boolean hideListChips, boolean hideSubtaskChip, TaskContainer task) { + Activity activity, + Filter filter, + boolean isSubtask, + boolean hideSubtaskChip, + TaskContainer task) { assertMainThread(); List chips = new ArrayList<>(); @@ -127,18 +133,23 @@ public class ChipProvider { task.getLocation().getDisplayName(), task.getLocation())); } - if (!hideListChips) { - if (!Strings.isNullOrEmpty(task.getGoogleTaskList())) { + if (!isSubtask) { + if (!Strings.isNullOrEmpty(task.getGoogleTaskList()) && !(filter instanceof GtasksFilter)) { chips.add(newTagChip(activity, googleTaskLists.get(task.getGoogleTaskList()))); - } else if (!Strings.isNullOrEmpty(task.getCaldav())) { + } else if (!Strings.isNullOrEmpty(task.getCaldav()) && !(filter instanceof CaldavFilter)) { chips.add(newTagChip(activity, caldavCalendars.get(task.getCaldav()))); } } - String tags = task.getTagsString(); - if (!Strings.isNullOrEmpty(tags)) { - Iterable tagFilters = - filter(transform(newArrayList(tags.split(",")), tagDatas::get), Predicates.notNull()); - chips.addAll(transform(orderByName.sortedCopy(tagFilters), tag -> newTagChip(activity, tag))); + String tagString = task.getTagsString(); + if (!Strings.isNullOrEmpty(tagString)) { + Set tags = newHashSet(tagString.split(",")); + if (filter instanceof TagFilter) { + tags.remove(((TagFilter) filter).getUuid()); + } + chips.addAll( + transform( + orderByName.sortedCopy(filter(transform(tags, tagDatas::get), Predicates.notNull())), + tag -> newTagChip(activity, tag))); } removeIf(chips, Predicates.isNull()); diff --git a/app/src/main/java/org/tasks/ui/TaskListViewModel.java b/app/src/main/java/org/tasks/ui/TaskListViewModel.java index 59aba5184..d059f34ad 100644 --- a/app/src/main/java/org/tasks/ui/TaskListViewModel.java +++ b/app/src/main/java/org/tasks/ui/TaskListViewModel.java @@ -30,7 +30,6 @@ import com.todoroo.astrid.api.CaldavFilter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.GtasksFilter; import com.todoroo.astrid.api.PermaSql; -import com.todoroo.astrid.api.TagFilter; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; @@ -86,6 +85,17 @@ public class TaskListViewModel extends ViewModel implements Observer