commit bbccc27a26f0c72050442880e55235c4848c4bb6
parent 9969e70b5ff3187dd0a5f95d3661c0b7d3d6298f
Author: Daniel D’Aquino <daniel@daquino.me>
Date: Mon, 23 Oct 2023 23:33:09 +0000
ui: Add setting that allows users to optionally disable profile action sheets.
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 <daniel@daquino.me>
Reviewed-by: William Casarin <jb55@jb55.com>
Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat:
5 files changed, 23 insertions(+), 2 deletions(-)
diff --git 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
@@ -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
@@ -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
@@ -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
@@ -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)
+ }
}