From b428cf4de912e5344689d323c4f34ca624622eb5 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 20 Dec 2022 10:24:03 +0100 Subject: [PATCH] Group reblogs --- .../android/helper/TimelineHelper.java | 30 ++++++++++++++++--- app/src/main/res/values/strings.xml | 3 ++ app/src/main/res/xml/pref_timelines.xml | 7 ++++- .../metadata/android/en/changelogs/451.txt | 1 + 4 files changed, 36 insertions(+), 5 deletions(-) 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 4ad014c17..6c94cf293 100644 --- a/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java @@ -17,6 +17,7 @@ package app.fedilab.android.helper; import static app.fedilab.android.BaseMainActivity.filteredAccounts; import android.content.Context; +import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; @@ -25,6 +26,7 @@ import android.text.Html; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelStoreOwner; +import androidx.preference.PreferenceManager; import java.io.IOException; import java.util.ArrayList; @@ -35,6 +37,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import app.fedilab.android.BaseMainActivity; +import app.fedilab.android.R; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.endpoints.MastodonFiltersService; import app.fedilab.android.client.entities.api.Account; @@ -153,21 +156,40 @@ public class TimelineHelper { } } } + + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); + boolean groupReblogs = sharedpreferences.getBoolean(context.getString(R.string.SET_GROUP_REBLOGS), true); if (filterTimeLineType == Timeline.TimeLineEnum.HOME) { - if (filteredAccounts != null && filteredAccounts.size() > 0) { - for (Status status : statuses) { + + for (int i = 0; i < statuses.size(); i++) { + if (filteredAccounts != null && filteredAccounts.size() > 0) { for (Account account : filteredAccounts) { - if (account.acct.equals(status.account.acct) || (status.reblog != null && account.acct.equals(status.reblog.account.acct))) { + if (account.acct.equals(statuses.get(i).account.acct) || (statuses.get(i).reblog != null && account.acct.equals(statuses.get(i).reblog.account.acct))) { Filter filterCustom = new Filter(); filterCustom.filter_action = "hide"; ArrayList contextCustom = new ArrayList<>(); contextCustom.add("home"); filterCustom.title = "Fedilab"; filterCustom.context = contextCustom; - status.filteredByApp = filterCustom; + statuses.get(i).filteredByApp = filterCustom; } } } + //Group boosts + if (groupReblogs && statuses.get(i).filteredByApp == null && statuses.get(i).reblog != null) { + for (int j = 0; j < i; j++) { + if (statuses.get(j).reblog != null && statuses.get(j).reblog.id.equals(statuses.get(i).reblog.id)) { + Filter filterCustom = new Filter(); + filterCustom.filter_action = "hide"; + ArrayList contextCustom = new ArrayList<>(); + contextCustom.add("home"); + filterCustom.title = "Fedilab reblog"; + filterCustom.context = contextCustom; + statuses.get(i).filteredByApp = filterCustom; + } + } + } + } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a6f5edb45..acded866a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1409,6 +1409,8 @@ SET_DISPLAY_ALL_NOTIFICATIONS_TYPE SET_EXCLUDED_NOTIFICATIONS_TYPE SET_EXPAND_MEDIA + SET_GROUP_REBLOGS + SET_LIVE_TRANSLATE SET_TRUNCATE_TOOTS_SIZE SET_ART_WITH_NSFW @@ -2108,4 +2110,5 @@ All accounts will be muted for the Home timeline. Mute them all Import data + Group reblogs in home timeline \ No newline at end of file diff --git a/app/src/main/res/xml/pref_timelines.xml b/app/src/main/res/xml/pref_timelines.xml index 4afdb7d7b..4ba37efa0 100644 --- a/app/src/main/res/xml/pref_timelines.xml +++ b/app/src/main/res/xml/pref_timelines.xml @@ -19,7 +19,12 @@ app:key="@string/SET_EXPAND_MEDIA" app:singleLineTitle="false" app:title="@string/expand_image" /> - +