Fix filters
This commit is contained in:
parent
2625101883
commit
ee68f4fc7d
|
@ -60,17 +60,6 @@ public class TimelineHelper {
|
|||
return retrofit.create(MastodonAccountsService.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows to filter statuses, should be called in API calls (background)
|
||||
*
|
||||
* @param context - Context
|
||||
* @param statuses - List of {@link Status}
|
||||
* @param filterTimeLineType - {@link Timeline.TimeLineEnum}
|
||||
* @return filtered List<Status>
|
||||
*/
|
||||
public static List<Status> filterStatus(Context context, List<Status> statuses, Timeline.TimeLineEnum filterTimeLineType) {
|
||||
return filterStatus(context, statuses, filterTimeLineType, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows to filter statuses, should be called in API calls (background)
|
||||
|
@ -80,7 +69,7 @@ public class TimelineHelper {
|
|||
* @param filterTimeLineType - {@link Timeline.TimeLineEnum}
|
||||
* @return filtered List<Status>
|
||||
*/
|
||||
public static List<Status> filterStatus(Context context, List<Status> statuses, Timeline.TimeLineEnum filterTimeLineType, boolean cached) {
|
||||
public static List<Status> filterStatus(Context context, List<Status> statuses, Timeline.TimeLineEnum filterTimeLineType) {
|
||||
//A security to make sure filters have been fetched before displaying messages
|
||||
List<Status> statusesToRemove = new ArrayList<>();
|
||||
if (!BaseMainActivity.filterFetched) {
|
||||
|
@ -102,9 +91,6 @@ public class TimelineHelper {
|
|||
}
|
||||
//If there are filters:
|
||||
if (BaseMainActivity.mainFilters != null && BaseMainActivity.mainFilters.size() > 0 && statuses != null && statuses.size() > 0) {
|
||||
for (Status status : statuses) {
|
||||
status.cached = cached;
|
||||
}
|
||||
for (Filter filter : BaseMainActivity.mainFilters) {
|
||||
if (filter.irreversible) { //Dealt by the server
|
||||
continue;
|
||||
|
@ -200,7 +186,7 @@ public class TimelineHelper {
|
|||
for (String filterContext : filter.context) {
|
||||
if (Timeline.TimeLineEnum.NOTIFICATION.getValue().equalsIgnoreCase(filterContext)) {
|
||||
if (filter.whole_word) {
|
||||
Pattern p = Pattern.compile("(^" + Pattern.quote(filter.phrase) + "\\b|\\b" + Pattern.quote(filter.phrase) + "$)");
|
||||
Pattern p = Pattern.compile("(^" + Pattern.quote(filter.phrase) + "\\b|\\b" + Pattern.quote(filter.phrase) + "$)", Pattern.CASE_INSENSITIVE);
|
||||
for (Notification notification : notifications) {
|
||||
notification.cached = cached;
|
||||
if (notification.status != null) {
|
||||
|
|
|
@ -413,23 +413,27 @@ public class TimelinesVM extends AndroidViewModel {
|
|||
List<Status> statusList = timelineResponse.body();
|
||||
statuses.statuses = TimelineHelper.filterStatus(getApplication().getApplicationContext(), statusList, timelineParams.type);
|
||||
statuses.pagination = MastodonHelper.getPagination(timelineResponse.headers());
|
||||
if (statusList != null && statusList.size() > 0) {
|
||||
addFetchMore(statusList, timelineStatuses, timelineParams);
|
||||
for (Status status : statuses.statuses) {
|
||||
StatusCache statusCacheDAO = new StatusCache(getApplication().getApplicationContext());
|
||||
StatusCache statusCache = new StatusCache();
|
||||
statusCache.instance = timelineParams.instance;
|
||||
statusCache.user_id = timelineParams.userId;
|
||||
statusCache.status = status;
|
||||
statusCache.type = timelineParams.type;
|
||||
statusCache.status_id = status.id;
|
||||
try {
|
||||
int inserted = statusCacheDAO.insertOrUpdate(statusCache, timelineParams.slug);
|
||||
if (inserted == 0) {
|
||||
status.cached = true;
|
||||
if (statuses.statuses != null && statuses.statuses.size() > 0) {
|
||||
//Fetch More is added on filtered statuses
|
||||
addFetchMore(statuses.statuses, timelineStatuses, timelineParams);
|
||||
//All statuses (even filtered will be added to cache)
|
||||
if (statusList != null && statusList.size() > 0) {
|
||||
for (Status status : statusList) {
|
||||
StatusCache statusCacheDAO = new StatusCache(getApplication().getApplicationContext());
|
||||
StatusCache statusCache = new StatusCache();
|
||||
statusCache.instance = timelineParams.instance;
|
||||
statusCache.user_id = timelineParams.userId;
|
||||
statusCache.status = status;
|
||||
statusCache.type = timelineParams.type;
|
||||
statusCache.status_id = status.id;
|
||||
try {
|
||||
int inserted = statusCacheDAO.insertOrUpdate(statusCache, timelineParams.slug);
|
||||
if (inserted == 0) {
|
||||
status.cached = true;
|
||||
}
|
||||
} catch (DBException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} catch (DBException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -465,7 +469,7 @@ public class TimelinesVM extends AndroidViewModel {
|
|||
//Only not already present statuses are added
|
||||
statusesDb.statuses = notPresentStatuses;
|
||||
}
|
||||
statuses.statuses = TimelineHelper.filterStatus(getApplication().getApplicationContext(), statusesDb.statuses, timelineParams.type, true);
|
||||
statuses.statuses = TimelineHelper.filterStatus(getApplication().getApplicationContext(), statusesDb.statuses, timelineParams.type);
|
||||
if (statuses.statuses != null && statuses.statuses.size() > 0) {
|
||||
addFetchMore(statuses.statuses, timelineStatuses, timelineParams);
|
||||
statuses.pagination = new Pagination();
|
||||
|
|
Loading…
Reference in New Issue