Client-side filtering is annoying

This commit is contained in:
Grishka
2022-04-29 17:25:32 +03:00
parent 0fe58e49b6
commit a58a279e8c
4 changed files with 55 additions and 10 deletions

View File

@@ -0,0 +1,31 @@
package org.joinmastodon.android.utils;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.model.Filter;
import org.joinmastodon.android.model.Status;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class StatusFilterPredicate implements Predicate<Status>{
private final List<Filter> filters;
public StatusFilterPredicate(List<Filter> filters){
this.filters=filters;
}
public StatusFilterPredicate(String accountID, Filter.FilterContext context){
filters=AccountSessionManager.getInstance().getAccount(accountID).wordFilters.stream().filter(f->f.context.contains(context)).collect(Collectors.toList());
}
@Override
public boolean test(Status status){
CharSequence content=status.getContentStatus().content;
for(Filter filter:filters){
if(filter.matches(content))
return false;
}
return true;
}
}