From 0b85bfdb8fe3f7339f0b6724edd1045ea6eb63e3 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 5 Dec 2019 09:00:54 -0600 Subject: [PATCH] Fix crashes on missing filter --- .../main/java/org/tasks/ui/ChipProvider.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/tasks/ui/ChipProvider.java b/app/src/main/java/org/tasks/ui/ChipProvider.java index f11c06045..eadf9553d 100644 --- a/app/src/main/java/org/tasks/ui/ChipProvider.java +++ b/app/src/main/java/org/tasks/ui/ChipProvider.java @@ -1,5 +1,7 @@ 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.Lists.transform; import static com.todoroo.andlib.utility.AndroidUtilities.assertMainThread; @@ -8,8 +10,10 @@ import android.app.Activity; import android.content.Context; import android.content.res.ColorStateList; import androidx.annotation.LayoutRes; +import androidx.annotation.Nullable; import androidx.core.content.res.ResourcesCompat; import com.google.android.material.chip.Chip; +import com.google.common.base.Predicates; import com.google.common.base.Strings; import com.google.common.collect.Ordering; import com.todoroo.astrid.api.CaldavFilter; @@ -132,12 +136,12 @@ public class ChipProvider { } String tags = task.getTagsString(); if (!Strings.isNullOrEmpty(tags)) { - chips.addAll( - transform( - orderByName.sortedCopy(transform(newArrayList(tags.split(",")), tagDatas::get)), - tag -> newTagChip(activity, tag))); + Iterable tagFilters = + filter(transform(newArrayList(tags.split(",")), tagDatas::get), Predicates.notNull()); + chips.addAll(transform(orderByName.sortedCopy(tagFilters), tag -> newTagChip(activity, tag))); } + removeIf(chips, Predicates.isNull()); return chips; } @@ -156,7 +160,10 @@ public class ChipProvider { return chip; } - private Chip newTagChip(Activity activity, Filter filter) { + private @Nullable Chip newTagChip(Activity activity, Filter filter) { + if (filter == null) { + return null; + } Chip chip = newChip(activity, R.layout.chip_tag, filter); apply(chip, filter.listingTitle, filter.tint); return chip;