























@@ -65,7 +65,7 @@ extension SettingsProTab {
6565 title: "Notifications",
6666 detail: "Approval and event alert channel",
6767 value: self.notificationStatusText,
68- color: self.notificationStatusText == "Allowed" ? OpenClawBrand.ok : .secondary)
68+ color: self.notificationStatus.color)
6969Divider().padding(.leading, 60)
7070self.diagnosticCheckRow(
7171 icon: "rectangle.on.rectangle",
@@ -157,7 +157,7 @@ extension SettingsProTab {
157157 gatewayConnected: self.gatewayDiagnosticConnected,
158158 discoveredGatewayCount: self.gatewayController.gateways.count,
159159 talkConfigLoaded: self.gatewayDiagnosticTalkConfigLoaded,
160-notificationStatusText: self.notificationStatusText)
160+notificationsAllowed: self.notificationStatus == .allowed)
161161self.diagnosticsIssueCount = issueCount
162162self.diagnosticsLastRunText = SettingsDiagnostics.timestamp(Date())
163163}
@@ -422,8 +422,8 @@ extension SettingsProTab {
422422}
423423424424func handleNotificationAction() {
425-if self.notificationStatusText == "Allowed" || self.notificationStatusText == "Not Allowed" {
426-self.openSystemSettings()
425+if self.notificationStatus.shouldOpenNotificationSettings {
426+self.openNotificationSettings()
427427return
428428}
429429@@ -434,28 +434,14 @@ extension SettingsProTab {
434434.sound,
435435])) ?? false
436436await MainActor.run {
437-self.notificationStatusText = granted ? "Allowed" : "Not Allowed"
438-self.notificationActionText = granted ? "Open System Settings" : "Open System Settings"
437+self.notificationStatus = granted ? .allowed : .notAllowed
439438}
440439}
441440}
442441443442@MainActor
444443func applyNotificationStatus(_ status: UNAuthorizationStatus) {
445-switch status {
446-case .authorized, .provisional, .ephemeral:
447-self.notificationStatusText = "Allowed"
448-self.notificationActionText = "Open System Settings"
449-case .denied:
450-self.notificationStatusText = "Not Allowed"
451-self.notificationActionText = "Open System Settings"
452-case .notDetermined:
453-self.notificationStatusText = "Not Set"
454-self.notificationActionText = "Request Access"
455-@unknown default:
456-self.notificationStatusText = "Unknown"
457-self.notificationActionText = "Open System Settings"
458-}
444+self.notificationStatus = SettingsNotificationStatus(status)
459445}
460446461447func persistGatewayToken(_ value: String) {
@@ -476,8 +462,8 @@ extension SettingsProTab {
476462 instanceId: instanceId)
477463}
478464479-func openSystemSettings() {
480-guard let url = URL(string: UIApplication.openSettingsURLString) else { return }
465+func openNotificationSettings() {
466+guard let url = URL(string: UIApplication.openNotificationSettingsURLString) else { return }
481467UIApplication.shared.open(url)
482468}
483469@@ -777,4 +763,12 @@ extension SettingsProTab {
777763case .always: "Always"
778764}
779765}
766+767+var notificationStatusText: String {
768+self.notificationStatus.text
769+}
770+771+var notificationActionText: String {
772+self.notificationStatus.actionTitle
773+}
780774}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。