Local Zap Notifications

Changelog-Added: Local zap notifications
This commit is contained in:
Swift
2023-03-24 18:45:35 -04:00
committed by William Casarin
parent c7a34379dd
commit b773df1204
3 changed files with 42 additions and 4 deletions

View File

@@ -776,7 +776,6 @@ func setup_notifications() {
} }
} }
func find_event(state: DamusState, evid: String, search_type: SearchType, find_from: [String]?, callback: @escaping (NostrEvent?) -> ()) { func find_event(state: DamusState, evid: String, search_type: SearchType, find_from: [String]?, callback: @escaping (NostrEvent?) -> ()) {
if let ev = state.events.lookup(evid) { if let ev = state.events.lookup(evid) {
callback(ev) callback(ev)

View File

@@ -145,9 +145,13 @@ class HomeModel: ObservableObject {
return return
} }
if handle_last_event(ev: ev, timeline: .notifications) && damus_state.settings.zap_vibration { if handle_last_event(ev: ev, timeline: .notifications) {
// Generate zap vibration if damus_state.settings.zap_vibration {
zap_vibrate(zap_amount: zap.invoice.amount) // Generate zap vibration
zap_vibrate(zap_amount: zap.invoice.amount)
}
// Create in-app local notification for zap received.
create_in_app_zap_notification(zap_amount: zap.invoice.amount)
} }
return return
@@ -928,3 +932,24 @@ func zap_vibrate(zap_amount: Int64) {
vibration_generator.impactOccurred() vibration_generator.impactOccurred()
} }
func create_in_app_zap_notification(zap_amount: Int64) {
let sats = zap_amount / 1000
let content = UNMutableNotificationContent()
content.title = "Zap"
let satString = sats == 1 ? "sat" : "sats"
content.body = "You have just received \(sats) \(satString)"
content.sound = UNNotificationSound.default
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
let request = UNNotificationRequest(identifier: "myZapNotification", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { error in
if let error = error {
print("Error: \(error)")
} else {
print("Local notification scheduled")
}
}
}

View File

@@ -9,6 +9,7 @@ import SwiftUI
@main @main
struct damusApp: App { struct damusApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene { var body: some Scene {
WindowGroup { WindowGroup {
MainView() MainView()
@@ -43,6 +44,19 @@ struct MainView: View {
} }
} }
class AppDelegate: NSObject, UIApplicationDelegate, UNUserNotificationCenterDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
UNUserNotificationCenter.current().delegate = self
return true
}
// Handle the notification in the foreground state
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// Display the notification in the foreground
completionHandler([.alert, .sound, .badge])
}
}
func needs_setup() -> Keypair? { func needs_setup() -> Keypair? {
return get_saved_keypair() return get_saved_keypair()
} }