diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/DataStoreUtils.java b/twidere/src/main/java/org/mariotaku/twidere/util/DataStoreUtils.java index c0df5e3fe..665189483 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/DataStoreUtils.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/DataStoreUtils.java @@ -1065,24 +1065,29 @@ public class DataStoreUtils implements Constants { } } - public static void removeFromFilter(Context context, ParcelableUser user) { + public static void removeFromFilter(Context context, Collection users) { + List userKeyValues = new ArrayList<>(); + List linkValues = new ArrayList<>(); + List keywordValues = new ArrayList<>(); final ContentResolver cr = context.getContentResolver(); - // Delete from filtered users - cr.delete(Filters.Users.CONTENT_URI, Expression.equalsArgs(Filters.Users.USER_KEY).getSQL(), - new String[]{user.key.toString()}); - // Delete user mention from keywords - cr.delete(Filters.Keywords.CONTENT_URI, Expression.equalsArgs(Filters.Keywords.VALUE).getSQL(), - new String[]{"@" + user.screen_name}); + for (ParcelableUser user : users) { + // Delete from filtered users + userKeyValues.add(user.key.toString()); + // Delete user mention from keywords + keywordValues.add("@" + user.screen_name); - // Delete user link (without scheme) from links - Uri userLink = LinkCreator.getUserWebLink(user); - String linkWithoutScheme = userLink.toString(); - int idx; - if ((idx = linkWithoutScheme.indexOf("://")) >= 0) { - linkWithoutScheme = linkWithoutScheme.substring(idx + 3); + // Delete user link (without scheme) from links + Uri userLink = LinkCreator.getUserWebLink(user); + String linkWithoutScheme = userLink.toString(); + int idx; + if ((idx = linkWithoutScheme.indexOf("://")) >= 0) { + linkWithoutScheme = linkWithoutScheme.substring(idx + 3); + } + linkValues.add(linkWithoutScheme); } - cr.delete(Filters.Links.CONTENT_URI, Expression.equalsArgs(Filters.Links.VALUE).getSQL(), - new String[]{linkWithoutScheme}); + ContentResolverUtils.bulkDelete(cr, Filters.Users.CONTENT_URI, Filters.Users.USER_KEY, userKeyValues, null); + ContentResolverUtils.bulkDelete(cr, Filters.Keywords.CONTENT_URI, Filters.Keywords.VALUE, keywordValues, null); + ContentResolverUtils.bulkDelete(cr, Filters.Links.CONTENT_URI, Filters.Links.VALUE, linkValues, null); } public interface UpdateActivityAction { diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt index cbe4f6f55..19dc0e0b1 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt @@ -856,7 +856,7 @@ class UserFragment : BaseSupportFragment(), OnClickListener, OnLinkClickListener R.id.add_to_filter -> { if (userRelationship == null) return true if (userRelationship.filtering) { - DataStoreUtils.removeFromFilter(context, user) + DataStoreUtils.removeFromFilter(context, listOf(user)) Utils.showInfoMessage(activity, R.string.message_user_unmuted, false) getFriendship() } else { diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/filter/BaseFiltersImportFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/filter/BaseFiltersImportFragment.kt index 274f7ee6a..37ac660f5 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/filter/BaseFiltersImportFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/filter/BaseFiltersImportFragment.kt @@ -188,6 +188,7 @@ abstract class BaseFiltersImportFragment : AbsContentListRecyclerViewFragment