From 24c82293b3574250bcd04fa72dbb44826eb18229 Mon Sep 17 00:00:00 2001 From: William Casarin Date: Thu, 6 Apr 2023 12:07:01 -0700 Subject: [PATCH] Disable translations in DMs by default There is an option to enable it now. Changelog-Changed: Disable translations in DMs by default --- damus/Models/UserSettingsStore.swift | 7 +++++++ damus/Views/DMView.swift | 10 +++++++++- damus/Views/DirectMessagesView.swift | 10 +++++++++- damus/Views/EventView.swift | 18 ++---------------- damus/Views/Events/TextEvent.swift | 1 + damus/Views/NoteContentView.swift | 2 +- .../Settings/TranslationSettingsView.swift | 5 +++++ 7 files changed, 34 insertions(+), 19 deletions(-) diff --git a/damus/Models/UserSettingsStore.swift b/damus/Models/UserSettingsStore.swift index 8f0585a7..01d7bbed 100644 --- a/damus/Models/UserSettingsStore.swift +++ b/damus/Models/UserSettingsStore.swift @@ -163,6 +163,12 @@ class UserSettingsStore: ObservableObject { UserDefaults.standard.set(notification_only_from_following, forKey: "notification_only_from_following") } } + + @Published var translate_dms: Bool { + didSet { + UserDefaults.standard.set(translate_dms, forKey: "translate_dms") + } + } @Published var truncate_timeline_text: Bool { didSet { @@ -275,6 +281,7 @@ class UserSettingsStore: ObservableObject { like_notification = UserDefaults.standard.object(forKey: "like_notification") as? Bool ?? true dm_notification = UserDefaults.standard.object(forKey: "dm_notification") as? Bool ?? true notification_only_from_following = UserDefaults.standard.object(forKey: "notification_only_from_following") as? Bool ?? false + translate_dms = UserDefaults.standard.object(forKey: "translate_dms") as? Bool ?? false truncate_timeline_text = UserDefaults.standard.object(forKey: "truncate_timeline_text") as? Bool ?? false truncate_mention_text = UserDefaults.standard.object(forKey: "truncate_mention_text") as? Bool ?? false disable_animation = should_disable_image_animation() diff --git a/damus/Views/DMView.swift b/damus/Views/DMView.swift index c5546d13..4441245d 100644 --- a/damus/Views/DMView.swift +++ b/damus/Views/DMView.swift @@ -25,6 +25,14 @@ struct DMView: View { } } + var dm_options: EventViewOptions { + if self.damus_state.settings.translate_dms { + return [] + } + + return [.no_translate] + } + var DM: some View { HStack { if is_ours { @@ -33,7 +41,7 @@ struct DMView: View { let should_show_img = should_show_images(settings: damus_state.settings, contacts: damus_state.contacts, ev: event, our_pubkey: damus_state.pubkey) - NoteContentView(damus_state: damus_state, event: event, show_images: should_show_img, size: .normal, artifacts: .just_content(event.get_content(damus_state.keypair.privkey)), options: []) + NoteContentView(damus_state: damus_state, event: event, show_images: should_show_img, size: .normal, artifacts: .just_content(event.get_content(damus_state.keypair.privkey)), options: dm_options) .padding([.top, .leading, .trailing], 10) .padding([.bottom], 25) .background(VisualEffectView(effect: UIBlurEffect(style: .prominent)) diff --git a/damus/Views/DirectMessagesView.swift b/damus/Views/DirectMessagesView.swift index d12232d6..56f5c31e 100644 --- a/damus/Views/DirectMessagesView.swift +++ b/damus/Views/DirectMessagesView.swift @@ -51,10 +51,18 @@ struct DirectMessagesView: View { } } + var options: EventViewOptions { + if self.damus_state.settings.translate_dms { + return [.truncate_content] + } + + return [.truncate_content, .no_translate] + } + func MaybeEvent(_ tup: (String, DirectMessageModel)) -> some View { Group { if let ev = tup.1.events.last { - EventView(damus: damus_state, event: ev, pubkey: tup.0) + EventView(damus: damus_state, event: ev, pubkey: tup.0, options: options) .onTapGesture { pubkey = tup.0 active_model = tup.1 diff --git a/damus/Views/EventView.swift b/damus/Views/EventView.swift index c87182a3..45d5e6fc 100644 --- a/damus/Views/EventView.swift +++ b/damus/Views/EventView.swift @@ -22,25 +22,11 @@ struct EventView: View { @EnvironmentObject var action_bar: ActionBarModel - init(damus: DamusState, event: NostrEvent, options: EventViewOptions) { + init(damus: DamusState, event: NostrEvent, pubkey: String? = nil, options: EventViewOptions = []) { self.event = event self.options = options self.damus = damus - self.pubkey = event.pubkey - } - - init(damus: DamusState, event: NostrEvent) { - self.event = event - self.options = [] - self.damus = damus - self.pubkey = event.pubkey - } - - init(damus: DamusState, event: NostrEvent, pubkey: String) { - self.event = event - self.options = [.no_action_bar] - self.damus = damus - self.pubkey = pubkey + self.pubkey = pubkey ?? event.pubkey } var body: some View { diff --git a/damus/Views/Events/TextEvent.swift b/damus/Views/Events/TextEvent.swift index 36bf7102..26815e57 100644 --- a/damus/Views/Events/TextEvent.swift +++ b/damus/Views/Events/TextEvent.swift @@ -15,6 +15,7 @@ struct EventViewOptions: OptionSet { static let wide = EventViewOptions(rawValue: 1 << 3) static let truncate_content = EventViewOptions(rawValue: 1 << 4) static let pad_content = EventViewOptions(rawValue: 1 << 5) + static let no_translate = EventViewOptions(rawValue: 1 << 6) } struct TextEvent: View { diff --git a/damus/Views/NoteContentView.swift b/damus/Views/NoteContentView.swift index 4c753ca0..f6ef906a 100644 --- a/damus/Views/NoteContentView.swift +++ b/damus/Views/NoteContentView.swift @@ -106,7 +106,7 @@ struct NoteContentView: View { } } - if size == .selected || damus_state.settings.auto_translate { + if !options.contains(.no_translate) && (size == .selected || damus_state.settings.auto_translate) { if with_padding { translateView .padding(.horizontal) diff --git a/damus/Views/Settings/TranslationSettingsView.swift b/damus/Views/Settings/TranslationSettingsView.swift index 6ef0db45..3ecd0675 100644 --- a/damus/Views/Settings/TranslationSettingsView.swift +++ b/damus/Views/Settings/TranslationSettingsView.swift @@ -69,6 +69,11 @@ struct TranslationSettingsView: View { Toggle(NSLocalizedString("Automatically translate notes", comment: "Toggle to automatically translate notes."), isOn: $settings.auto_translate) .toggleStyle(.switch) } + + if settings.translation_service != .none { + Toggle(NSLocalizedString("Translate DMs", comment: "Toggle to translate direct messages."), isOn: $settings.translate_dms) + .toggleStyle(.switch) + } } } .navigationTitle("Translation")