diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt
index 53eb3cc91..6d1754c52 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt
@@ -675,6 +675,8 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
binding.accountFloatingActionButton.setOnClickListener { mention() }
binding.accountFollowButton.setOnClickListener {
+ val preferences = PreferenceManager.getDefaultSharedPreferences(this)
+ val confirmFollows = preferences.getBoolean(PrefKeys.CONFIRM_FOLLOWS, false)
if (viewModel.isSelf) {
val intent = Intent(this@AccountActivity, EditProfileActivity::class.java)
startActivity(intent)
@@ -688,7 +690,11 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
when (followState) {
FollowState.NOT_FOLLOWING -> {
- viewModel.changeFollowState()
+ if (confirmFollows) {
+ showFollowWarningDialog()
+ } else {
+ viewModel.changeFollowState()
+ }
}
FollowState.REQUESTED -> {
showFollowRequestPendingDialog()
@@ -908,6 +914,14 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
.show()
}
+ private fun showFollowWarningDialog() {
+ AlertDialog.Builder(this)
+ .setMessage(R.string.dialog_follow_warning)
+ .setPositiveButton(android.R.string.ok) { _, _ -> viewModel.changeFollowState() }
+ .setNegativeButton(android.R.string.cancel, null)
+ .show()
+ }
+
private fun toggleBlockDomain(instance: String) {
if (blockingDomain) {
viewModel.unblockDomain(instance)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt
index a0d4f3112..011f7ca5a 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt
@@ -241,6 +241,13 @@ class PreferencesFragment : PreferenceFragmentCompat() {
isSingleLineTitle = false
}
+ switchPreference {
+ setDefaultValue(false)
+ key = PrefKeys.CONFIRM_FOLLOWS
+ setTitle(R.string.pref_title_confirm_follows)
+ isSingleLineTitle = false
+ }
+
switchPreference {
setDefaultValue(true)
key = PrefKeys.ENABLE_SWIPE_FOR_TABS
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 0760d1147..8e7d9d932 100644
--- a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
@@ -71,6 +71,7 @@ object PrefKeys {
const val SHOW_CARDS_IN_TIMELINES = "showCardsInTimelines"
const val CONFIRM_REBLOGS = "confirmReblogs"
const val CONFIRM_FAVOURITES = "confirmFavourites"
+ const val CONFIRM_FOLLOWS = "confirmFollows"
const val ENABLE_SWIPE_FOR_TABS = "enableSwipeForTabs"
const val ANIMATE_CUSTOM_EMOJIS = "animateCustomEmojis"
const val SHOW_STATS_INLINE = "showStatsInline"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b648bc00e..6e16daec4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -265,6 +265,7 @@
Download
Revoke the follow request?
Unfollow this account?
+ Follow this account?
Delete this post?
Delete and re-draft this post?
Delete this conversation?
@@ -720,6 +721,7 @@
Show link previews in timelines
Show confirmation before boosting
Show confirmation before favoriting
+ Show confirmation before following
Hide the title of the top toolbar
Wellbeing
Your private note about this account