diff --git a/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java b/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java index 312f18ec6..b94f6e7b6 100644 --- a/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java @@ -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 - */ - public static List filterStatus(Context context, List 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 */ - public static List filterStatus(Context context, List statuses, Timeline.TimeLineEnum filterTimeLineType, boolean cached) { + public static List filterStatus(Context context, List statuses, Timeline.TimeLineEnum filterTimeLineType) { //A security to make sure filters have been fetched before displaying messages List 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) { diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java index 334950a58..35192a2f3 100644 --- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java +++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java @@ -413,23 +413,27 @@ public class TimelinesVM extends AndroidViewModel { List 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();