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