damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

commit c6e51931117326b039243dceea045bee640b81b8
parent 61ef709d91c162e4a63407b7ce31b6d562c6f14c
Author: William Casarin <jb55@jb55.com>
Date:   Mon,  3 Apr 2023 17:12:10 -0700

Don't show translation status

It's too poppy

Diffstat:
Mdamus/Components/TranslateView.swift | 15++-------------
Mdamus/Models/HomeModel.swift | 142++++++++++++++++++++++++++++++++++++++++----------------------------------------
2 files changed, 73 insertions(+), 84 deletions(-)

diff --git a/damus/Components/TranslateView.swift b/damus/Components/TranslateView.swift @@ -40,22 +40,11 @@ struct TranslateView: View { } } - func CheckingStatus(lang: String) -> some View { - return Button(String(format: NSLocalizedString("Translating from %@...", comment: "Button to indicate that the note is in the process of being translated from a different language."), lang)) { - show_translated_note = false - } - .translate_button_style() - } - func MainContent(note_lang: String) -> some View { return Group { let languageName = Locale.current.localizedString(forLanguageCode: note_lang) - if let lang = languageName, show_translated_note { - if checkingTranslationStatus { - CheckingStatus(lang: lang) - } else if let artifacts = translated_artifacts { - Translated(lang: lang, artifacts: artifacts) - } + if let languageName, let translated_artifacts, show_translated_note { + Translated(lang: languageName, artifacts: translated_artifacts) } else { TranslateButton } diff --git a/damus/Models/HomeModel.swift b/damus/Models/HomeModel.swift @@ -465,7 +465,7 @@ class HomeModel: ObservableObject { return m[kind] } - + func handle_notification(ev: NostrEvent) { // don't show notifications from ourselves guard ev.pubkey != damus_state.pubkey else { @@ -489,38 +489,8 @@ class HomeModel: ObservableObject { return } - if handle_last_event(ev: ev, timeline: .notifications), - damus_state.contacts.follow_state(ev.pubkey) == .follows, - let type = ev.known_kind { - - if type == .text, - damus_state.settings.mention_notification { - for block in ev.blocks(damus_state.keypair.privkey) { - if case .mention(let mention) = block, mention.ref.ref_id == damus_state.keypair.pubkey, - let displayName = damus_state.profiles.lookup(id: ev.pubkey)?.display_name { - let justContent = NSAttributedString(render_note_content(ev: ev, profiles: damus_state.profiles, privkey: damus_state.keypair.privkey).content).string - create_notification(displayName: displayName, conversation: justContent, type: type) - } - } - } else if type == .boost, - damus_state.settings.repost_notification, - let displayName = damus_state.profiles.lookup(id: ev.pubkey)?.display_name { - - let justContent = NSAttributedString(render_note_content(ev: ev, profiles: damus_state.profiles, privkey: damus_state.keypair.privkey).content).string - if let jsonData = justContent.data(using: .utf8), - let jsonDict = try? JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any], - let content = jsonDict["content"] as? String { - create_notification(displayName: displayName, conversation: content, type: type) - } - - } else if type == .like, - damus_state.settings.like_notification, - let displayName = damus_state.profiles.lookup(id: ev.pubkey)?.display_name, - let eRef = ev.referenced_ids.eRefs.first?.ref_id, - let content = damus_state.events.lookup(eRef)?.content { - - create_notification(displayName: displayName, conversation: content, type: type) - } + if handle_last_event(ev: ev, timeline: .notifications) { + process_local_notification(damus_state: damus_state, event: ev) } } @@ -541,43 +511,6 @@ class HomeModel: ObservableObject { } } - func create_notification(displayName: String, conversation: String, type: NostrKind) { - let content = UNMutableNotificationContent() - var title = "" - var identifier = "" - switch type { - case .text: - title = String(format: NSLocalizedString("Mentioned by %@", comment: "Mentioned by heading in local notification"), displayName) - identifier = "myMentionNotification" - case .boost: - title = String(format: NSLocalizedString("Reposted by %@", comment: "Reposted by heading in local notification"), displayName) - identifier = "myBoostNotification" - case .like: - title = String(format: NSLocalizedString("Liked by %@", comment: "Liked by heading in local notification"), displayName) - identifier = "myLikeNotification" - case .dm: - title = String(format: NSLocalizedString("DM by %@", comment: "DM by heading in local notification"), displayName) - identifier = "myDMNotification" - default: - break - } - content.title = title - content.body = conversation - content.sound = UNNotificationSound.default - - let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false) - - let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger) - - UNUserNotificationCenter.current().add(request) { error in - if let error = error { - print("Error: \(error)") - } else { - print("Local notification scheduled") - } - } - } - func handle_text_event(sub_id: String, _ ev: NostrEvent) { guard should_show_event(contacts: damus_state.contacts, ev: ev) else { @@ -614,7 +547,7 @@ class HomeModel: ObservableObject { self.new_events = notifs if damus_state.settings.dm_notification, let displayName = damus_state.profiles.lookup(id: self.incoming_dms.last!.pubkey)?.display_name { - create_notification(displayName: displayName, conversation: "You have received a direct message", type: .dm) + create_local_notification(displayName: displayName, conversation: "You have received a direct message", type: .dm) } } self.incoming_dms = [] @@ -1060,3 +993,70 @@ func create_in_app_zap_notification(profiles: Profiles, zap: Zap, locale: Locale } } + +func process_local_notification(damus_state: DamusState, event ev: NostrEvent) { + guard let type = ev.known_kind else { + return + } + + if type == .text && damus_state.settings.mention_notification { + for block in ev.blocks(damus_state.keypair.privkey) { + if case .mention(let mention) = block, mention.ref.ref_id == damus_state.keypair.pubkey, + let displayName = damus_state.profiles.lookup(id: ev.pubkey)?.display_name { + let justContent = NSAttributedString(render_note_content(ev: ev, profiles: damus_state.profiles, privkey: damus_state.keypair.privkey).content).string + create_local_notification(displayName: displayName, conversation: justContent, type: type) + } + } + } else if type == .boost && damus_state.settings.repost_notification, + let displayName = damus_state.profiles.lookup(id: ev.pubkey)?.display_name { + + if let inner_ev = ev.inner_event { + create_local_notification(displayName: displayName, conversation: inner_ev.content, type: type) + } + } else if type == .like && damus_state.settings.like_notification, + let displayName = damus_state.profiles.lookup(id: ev.pubkey)?.display_name, + let e_ref = ev.referenced_ids.first?.ref_id, + let content = damus_state.events.lookup(e_ref)?.content { + + create_local_notification(displayName: displayName, conversation: content, type: type) + } + +} + +func create_local_notification(displayName: String, conversation: String, type: NostrKind) { + let content = UNMutableNotificationContent() + var title = "" + var identifier = "" + switch type { + case .text: + title = String(format: NSLocalizedString("Mentioned by %@", comment: "Mentioned by heading in local notification"), displayName) + identifier = "myMentionNotification" + case .boost: + title = String(format: NSLocalizedString("Reposted by %@", comment: "Reposted by heading in local notification"), displayName) + identifier = "myBoostNotification" + case .like: + title = String(format: NSLocalizedString("Liked by %@", comment: "Liked by heading in local notification"), displayName) + identifier = "myLikeNotification" + case .dm: + title = String(format: NSLocalizedString("DM by %@", comment: "DM by heading in local notification"), displayName) + identifier = "myDMNotification" + default: + break + } + content.title = title + content.body = conversation + content.sound = UNNotificationSound.default + + let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false) + + let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger) + + UNUserNotificationCenter.current().add(request) { error in + if let error = error { + print("Error: \(error)") + } else { + print("Local notification scheduled") + } + } +} +