AppState tab selection targets for all local notifications

This commit is contained in:
Ben Meadors 2023-08-22 12:00:03 -05:00
parent 4865b61fa6
commit 23c2df9d99
2 changed files with 17 additions and 13 deletions

View file

@ -686,6 +686,7 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage
let content = UNMutableNotificationContent()
content.title = "Critically Low Battery!"
content.body = "Time to charge your radio, there is \(telemetry.batteryLevel)% battery remaining."
content.userInfo["target"] = "node"
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
let uuidString = UUID().uuidString
let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger)
@ -777,7 +778,6 @@ func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, context: NSM
messageSaved = true
if messageSaved {
if newMessage.fromUser != nil && newMessage.toUser != nil && !(newMessage.fromUser?.mute ?? false) {
// Create an iOS Notification for the received DM message and schedule it immediately
let manager = LocalNotificationManager()
@ -786,7 +786,9 @@ func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, context: NSM
id: ("notification.id.\(newMessage.messageId)"),
title: "\(newMessage.fromUser?.longName ?? "unknown".localized)",
subtitle: "AKA \(newMessage.fromUser?.shortName ?? "???")",
content: messageText)
content: messageText,
target: "message"
)
]
manager.schedule()
print("💬 iOS Notification Scheduled for text message from \(newMessage.fromUser?.longName ?? "unknown".localized)")
@ -813,7 +815,8 @@ func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, context: NSM
id: ("notification.id.\(newMessage.messageId)"),
title: "\(newMessage.fromUser?.longName ?? "unknown".localized)",
subtitle: "AKA \(newMessage.fromUser?.shortName ?? "???")",
content: messageText)
content: messageText,
target: "message")
]
manager.schedule()
print("💬 iOS Notification Scheduled for text message from \(newMessage.fromUser?.longName ?? "unknown".localized)")
@ -879,7 +882,7 @@ func waypointPacket (packet: MeshPacket, context: NSManagedObjectContext) {
title: "New Waypoint Received",
subtitle: "\(icon) \(waypoint.name ?? "Dropped Pin")",
content: "\(waypoint.longDescription ?? "\(latitude), \(longitude)")",
target: "waypoint"
target: "map"
)
]
manager.schedule()

View file

@ -22,16 +22,17 @@ class MeshtasticAppDelegate: NSObject, UIApplicationDelegate, UNUserNotification
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void)
{
let userInfo = response.notification.request.content.userInfo
if let targetValue = userInfo["target"] as? String, targetValue == "waypoint"
{
openWaypoint()
let targetValue = userInfo["target"] as? String
if targetValue == "map" {
AppState.shared.tabSelection = Tab.map
}
else if targetValue == "message" {
AppState.shared.tabSelection = Tab.messages
}
else if targetValue == "node" {
AppState.shared.tabSelection = Tab.nodes
}
completionHandler()
}
private func openWaypoint()
{
AppState.shared.tabSelection = Tab.map
}
}