Commit 70c581ba authored by Thomas's avatar Thomas
Browse files

cache

parent 29b31078
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -92,6 +92,8 @@ public class Status implements Serializable, Cloneable {
    public Poll poll;
    @SerializedName("pleroma")
    public Pleroma pleroma;
    @SerializedName("cached")
    public boolean cached = false;

    @Override
    public boolean equals(@Nullable Object obj) {
+2 −2
Original line number Diff line number Diff line
@@ -194,8 +194,9 @@ public class StatusCache {
        ContentValues values = new ContentValues();
        values.put(Sqlite.COL_USER_ID, statusCache.user_id);
        values.put(Sqlite.COL_INSTANCE, statusCache.instance);
        values.put(Sqlite.COL_SLUG, statusCache.slug);
        values.put(Sqlite.COL_SLUG, slug);
        values.put(Sqlite.COL_STATUS_ID, statusCache.status_id);
        values.put(Sqlite.COL_TYPE, statusCache.type.getValue());
        values.put(Sqlite.COL_STATUS, mastodonStatusToStringStorage(statusCache.status));
        values.put(Sqlite.COL_CREATED_AT, Helper.dateToString(new Date()));
        //Inserts token
@@ -415,7 +416,6 @@ public class StatusCache {
    /**
     * Get statuses from db
     *
     * @param statusCache StatusCache - status in cache to compare
     * @return Statuses
     * @throws DBException - throws a db exception
     */
+2 −0
Original line number Diff line number Diff line
@@ -362,6 +362,8 @@ public class Timeline {
        LOCAL("LOCAL"),
        @SerializedName("PUBLIC")
        PUBLIC("PUBLIC"),
        @SerializedName("CONTEXT")
        CONTEXT("CONTEXT"),
        @SerializedName("TAG")
        TAG("TAG"),
        @SerializedName("ART")
+19 −25
Original line number Diff line number Diff line
@@ -22,8 +22,6 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelStoreOwner;

import com.google.gson.annotations.SerializedName;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -36,6 +34,7 @@ import app.fedilab.android.client.endpoints.MastodonAccountsService;
import app.fedilab.android.client.entities.api.Filter;
import app.fedilab.android.client.entities.api.Notification;
import app.fedilab.android.client.entities.api.Status;
import app.fedilab.android.client.entities.app.Timeline;
import app.fedilab.android.viewmodel.mastodon.AccountsVM;
import okhttp3.OkHttpClient;
import retrofit2.Call;
@@ -64,10 +63,22 @@ public class TimelineHelper {
     *
     * @param context            - Context
     * @param statuses           - List of {@link Status}
     * @param filterTimeLineType - {@link FilterTimeLineType}
     * @param filterTimeLineType - {@link Timeline.TimeLineEnum}
     * @return filtered List<Status>
     */
    public static List<Status> filterStatus(Context context, List<Status> statuses, FilterTimeLineType filterTimeLineType) {
    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)
     *
     * @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, boolean cached) {
        //A security to make sure filters have been fetched before displaying messages
        List<Status> statusesToRemove = new ArrayList<>();
        if (!BaseMainActivity.filterFetched) {
@@ -95,11 +106,12 @@ public class TimelineHelper {
                    continue;
                }
                for (String filterContext : filter.context) {
                    if (filterTimeLineType.value.equalsIgnoreCase(filterContext)) {
                    if (filterTimeLineType.getValue().equalsIgnoreCase(filterContext)) {
                        if (filter.whole_word) {
                            Pattern p = Pattern.compile("(^" + Pattern.quote(filter.phrase) + "\\b|\\b" + Pattern.quote(filter.phrase) + "$)");
                            for (Status status : statuses) {
                                String content;
                                status.cached = cached;
                                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
                                    content = Html.fromHtml(status.content, Html.FROM_HTML_MODE_LEGACY).toString();
                                else
@@ -124,6 +136,7 @@ public class TimelineHelper {
                        } else {
                            for (Status status : statuses) {
                                String content;
                                status.cached = cached;
                                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
                                    content = Html.fromHtml(status.content, Html.FROM_HTML_MODE_LEGACY).toString();
                                else
@@ -183,7 +196,7 @@ public class TimelineHelper {
                    continue;
                }
                for (String filterContext : filter.context) {
                    if (FilterTimeLineType.NOTIFICATION.value.equalsIgnoreCase(filterContext)) {
                    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) + "$)");
                            for (Notification notification : notifications) {
@@ -219,23 +232,4 @@ public class TimelineHelper {
        return notifications;
    }

    public enum FilterTimeLineType {
        @SerializedName("HOME")
        HOME("HOME"),
        @SerializedName("PUBLIC")
        PUBLIC("PUBLIC"),
        @SerializedName("CONTEXT")
        CONTEXT("CONTEXT"),
        @SerializedName("NOTIFICATION")
        NOTIFICATION("NOTIFICATION");
        private final String value;

        FilterTimeLineType(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }
}
+8 −1
Original line number Diff line number Diff line
@@ -495,7 +495,8 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
            holder.binding.actionButtonFavorite.setInActiveImageTintColor(theme_icons_color);
            holder.binding.actionButtonBookmark.setInActiveImageTintColor(theme_icons_color);
            holder.binding.actionButtonBoost.setInActiveImageTintColor(theme_icons_color);
            holder.binding.replyCount.setTextColor(theme_text_color);
            Helper.changeDrawableColor(context, R.drawable.ic_baseline_cached_24, theme_icons_color);
            holder.binding.replyCount.setTextColor(theme_icons_color);
        } else {
            holder.binding.actionButtonFavorite.setInActiveImageTintColor(ThemeHelper.getAttColor(context, R.attr.colorControlNormal));
            holder.binding.actionButtonBookmark.setInActiveImageTintColor(ThemeHelper.getAttColor(context, R.attr.colorControlNormal));
@@ -515,6 +516,12 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
        holder.binding.actionButtonBoost.setActiveImageTint(R.color.boost_icon);
        holder.binding.actionButtonBookmark.setActiveImageTint(R.color.marked_icon);

        if (status.cached) {
            holder.binding.cacheIndicator.setVisibility(View.VISIBLE);
        } else {
            holder.binding.cacheIndicator.setVisibility(View.GONE);
        }


        if (status.pinned) {
            holder.binding.statusPinned.setVisibility(View.VISIBLE);
Loading