diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/TabFilterPreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/TabFilterPreferencesFragment.kt
index 375922b3c..15697f644 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/preference/TabFilterPreferencesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/TabFilterPreferencesFragment.kt
@@ -42,6 +42,14 @@ class TabFilterPreferencesFragment : PreferenceFragmentCompat() {
setDefaultValue(true)
isIconSpaceReserved = false
}
+
+ switchPreference {
+ setTitle(R.string.pref_title_show_self_boosts)
+ setSummary(R.string.pref_title_show_self_boosts_description)
+ key = PrefKeys.TAB_SHOW_HOME_SELF_BOOSTS
+ setDefaultValue(true)
+ isIconSpaceReserved = false
+ }.apply { dependency = PrefKeys.TAB_FILTER_HOME_BOOSTS }
}
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt
index 88c5f1df7..953c3cfd5 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt
@@ -73,6 +73,7 @@ abstract class TimelineViewModel(
private var alwaysOpenSpoilers = false
private var filterRemoveReplies = false
private var filterRemoveReblogs = false
+ private var filterRemoveSelfReblogs = false
protected var readingOrder: ReadingOrder = ReadingOrder.OLDEST_FIRST
fun init(
@@ -91,6 +92,8 @@ abstract class TimelineViewModel(
!sharedPreferences.getBoolean(PrefKeys.TAB_FILTER_HOME_REPLIES, true)
filterRemoveReblogs =
!sharedPreferences.getBoolean(PrefKeys.TAB_FILTER_HOME_BOOSTS, true)
+ filterRemoveSelfReblogs =
+ !sharedPreferences.getBoolean(PrefKeys.TAB_SHOW_HOME_SELF_BOOSTS, true)
}
readingOrder = ReadingOrder.from(sharedPreferences.getString(PrefKeys.READING_ORDER, null))
@@ -185,7 +188,8 @@ abstract class TimelineViewModel(
val status = statusViewData.asStatusOrNull()?.status ?: return Filter.Action.NONE
return if (
(status.inReplyToId != null && filterRemoveReplies) ||
- (status.reblog != null && filterRemoveReblogs)
+ (status.reblog != null && filterRemoveReblogs) ||
+ ((status.account.id == status.reblog?.account?.id) && filterRemoveSelfReblogs)
) {
return Filter.Action.HIDE
} else {
@@ -212,6 +216,14 @@ abstract class TimelineViewModel(
fullReload()
}
}
+ PrefKeys.TAB_SHOW_HOME_SELF_BOOSTS -> {
+ val filter = sharedPreferences.getBoolean(PrefKeys.TAB_SHOW_HOME_SELF_BOOSTS, true)
+ val oldRemoveSelfReblogs = filterRemoveSelfReblogs
+ filterRemoveSelfReblogs = kind == Kind.HOME && !filter
+ if (oldRemoveSelfReblogs != filterRemoveSelfReblogs) {
+ fullReload()
+ }
+ }
FilterV1.HOME, FilterV1.NOTIFICATIONS, FilterV1.THREAD, FilterV1.PUBLIC, FilterV1.ACCOUNT -> {
if (filterContextMatchesKind(kind, listOf(key))) {
reloadFilters()
diff --git a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
index 8530fde26..64a5461da 100644
--- a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
@@ -106,6 +106,7 @@ object PrefKeys {
const val TAB_FILTER_HOME_REPLIES = "tabFilterHomeReplies_v2" // This was changed once to reset an unintentionally set default.
const val TAB_FILTER_HOME_BOOSTS = "tabFilterHomeBoosts"
+ const val TAB_SHOW_HOME_SELF_BOOSTS = "tabShowHomeSelfBoosts"
/** UI text scaling factor, stored as float, 100 = 100% = no scaling */
const val UI_TEXT_SCALE_RATIO = "uiTextScaleRatio"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a6d2541f6..d206e7b3f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -138,6 +138,8 @@
Share username of account
Hide boosts
Show boosts
+ Show self-boosts
+ Someone boosting their own post
Report
Edit
Delete