From bbccc27a26f0c72050442880e55235c4848c4bb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20D=E2=80=99Aquino?= Date: Mon, 23 Oct 2023 23:33:09 +0000 Subject: [PATCH] ui: Add setting that allows users to optionally disable profile action sheets. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tested on iOS 17.0.1 on an iPhone 15 Pro simulator. Closes: https://github.com/damus-io/damus/issues/1641 Changelog-Added: Add setting that allows users to optionally disable the new profile action sheet feature Signed-off-by: Daniel D’Aquino Reviewed-by: William Casarin Signed-off-by: William Casarin --- damus/Models/UserSettingsStore.swift | 3 +++ damus/Views/Events/EventProfile.swift | 2 +- damus/Views/Profile/MaybeAnonPfpView.swift | 2 +- damus/Views/ProfileActionSheetView.swift | 9 +++++++++ damus/Views/Settings/AppearanceSettingsView.swift | 9 +++++++++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/damus/Models/UserSettingsStore.swift b/damus/Models/UserSettingsStore.swift index 2bab8c1e0..a9137adda 100644 --- a/damus/Models/UserSettingsStore.swift +++ b/damus/Models/UserSettingsStore.swift @@ -112,6 +112,9 @@ class UserSettingsStore: ObservableObject { @Setting(key: "hide_nsfw_tagged_content", default_value: false) var hide_nsfw_tagged_content: Bool + + @Setting(key: "show_profile_action_sheet_on_pfp_click", default_value: true) + var show_profile_action_sheet_on_pfp_click: Bool @Setting(key: "zap_vibration", default_value: true) var zap_vibration: Bool diff --git a/damus/Views/Events/EventProfile.swift b/damus/Views/Events/EventProfile.swift index 60525b133..ac5130c74 100644 --- a/damus/Views/Events/EventProfile.swift +++ b/damus/Views/Events/EventProfile.swift @@ -39,7 +39,7 @@ struct EventProfile: View { HStack(alignment: .center, spacing: 10) { ProfilePicView(pubkey: pubkey, size: pfp_size, highlight: .none, profiles: damus_state.profiles, disable_animation: disable_animation, show_zappability: true) .onTapGesture { - notify(.present_sheet(Sheets.profile_action(pubkey))) + show_profile_action_sheet_if_enabled(damus_state: damus_state, pubkey: pubkey) } VStack(alignment: .leading, spacing: 0) { diff --git a/damus/Views/Profile/MaybeAnonPfpView.swift b/damus/Views/Profile/MaybeAnonPfpView.swift index 62c123934..f5cf1249e 100644 --- a/damus/Views/Profile/MaybeAnonPfpView.swift +++ b/damus/Views/Profile/MaybeAnonPfpView.swift @@ -30,7 +30,7 @@ struct MaybeAnonPfpView: View { } else { ProfilePicView(pubkey: pubkey, size: size, highlight: .none, profiles: state.profiles, disable_animation: state.settings.disable_animation, show_zappability: true) .onTapGesture { - notify(.present_sheet(Sheets.profile_action(pubkey))) + show_profile_action_sheet_if_enabled(damus_state: state, pubkey: pubkey) } } } diff --git a/damus/Views/ProfileActionSheetView.swift b/damus/Views/ProfileActionSheetView.swift index d89288944..4ce08c172 100644 --- a/damus/Views/ProfileActionSheetView.swift +++ b/damus/Views/ProfileActionSheetView.swift @@ -334,6 +334,15 @@ struct InnerHeightPreferenceKey: PreferenceKey { } } +func show_profile_action_sheet_if_enabled(damus_state: DamusState, pubkey: Pubkey) { + if damus_state.settings.show_profile_action_sheet_on_pfp_click { + notify(.present_sheet(Sheets.profile_action(pubkey))) + } + else { + damus_state.nav.push(route: Route.ProfileByKey(pubkey: pubkey)) + } +} + #Preview { ProfileActionSheetView(damus_state: test_damus_state, pubkey: test_pubkey) } diff --git a/damus/Views/Settings/AppearanceSettingsView.swift b/damus/Views/Settings/AppearanceSettingsView.swift index 0ee6311b3..e1add45c1 100644 --- a/damus/Views/Settings/AppearanceSettingsView.swift +++ b/damus/Views/Settings/AppearanceSettingsView.swift @@ -100,6 +100,15 @@ struct AppearanceSettingsView: View { Toggle(NSLocalizedString("Hide notes with #nsfw tags", comment: "Setting to hide notes with the #nsfw (not safe for work) tags"), isOn: $settings.hide_nsfw_tagged_content) .toggleStyle(.switch) } + + // MARK: - Profiles + Section( + header: Text(NSLocalizedString("Profiles", comment: "Section title for profile view configuration.")), + footer: Text(NSLocalizedString("Profile action sheets allow you to follow, zap, or DM profiles more quickly without having to view their full profile", comment: "Section footer clarifying what the profile action sheet feature does")) + ) { + Toggle(NSLocalizedString("Show profile action sheets", comment: "Setting to show profile action sheets when clicking on a user's profile picture"), isOn: $settings.show_profile_action_sheet_on_pfp_click) + .toggleStyle(.switch) + } }