diff --git a/MacTorn/MacTorn/MacTornApp.swift b/MacTorn/MacTorn/MacTornApp.swift index cb49af5..4f9a4cd 100644 --- a/MacTorn/MacTorn/MacTornApp.swift +++ b/MacTorn/MacTorn/MacTornApp.swift @@ -14,7 +14,7 @@ struct MacTornApp: App { .onAppear { updateAppearance() } - .onChange(of: appearanceModeRaw) { _ in + .onChange(of: appearanceModeRaw) { updateAppearance() } } label: { diff --git a/MacTorn/MacTorn/Models/TornModels.swift b/MacTorn/MacTorn/Models/TornModels.swift index 42204d2..13e2b3c 100644 --- a/MacTorn/MacTorn/Models/TornModels.swift +++ b/MacTorn/MacTorn/Models/TornModels.swift @@ -1,6 +1,11 @@ import Foundation import SwiftUI +// MARK: - Constants +enum TornConstants { + static let developerID = 2362436 +} + // MARK: - Root Response struct TornResponse: Codable { let name: String? diff --git a/MacTorn/MacTorn/Utilities/NotificationManager.swift b/MacTorn/MacTorn/Utilities/NotificationManager.swift index 7ce7cbf..fb65d68 100644 --- a/MacTorn/MacTorn/Utilities/NotificationManager.swift +++ b/MacTorn/MacTorn/Utilities/NotificationManager.swift @@ -103,14 +103,8 @@ class NotificationManager: NSObject, UNUserNotificationCenterDelegate { /// Cancel all travel-related notifications func cancelTravelNotifications() { - let identifiers = [ - "travel_2min_alert", - "travel_1min_alert", - "travel_30sec_alert", - "travel_10sec_alert" - ] + let identifiers = TravelNotificationSetting.defaults.map { "\($0.id)_alert" } UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: identifiers) - print("Cancelled travel notifications") } /// Cancel a specific notification by identifier diff --git a/MacTorn/MacTorn/ViewModels/AppState.swift b/MacTorn/MacTorn/ViewModels/AppState.swift index e9782b5..0c0bb81 100644 --- a/MacTorn/MacTorn/ViewModels/AppState.swift +++ b/MacTorn/MacTorn/ViewModels/AppState.swift @@ -584,9 +584,7 @@ class AppState: ObservableObject { // Check if feedback prompt should be shown self.checkFeedbackPrompt() - // Force UI update by triggering objectWillChange - self.objectWillChange.send() - logger.info("UI update triggered, lastUpdated: \(self.lastUpdated?.description ?? "nil")") + logger.info("Data updated, lastUpdated: \(self.lastUpdated?.description ?? "nil")") } } diff --git a/MacTorn/MacTorn/Views/ContentView.swift b/MacTorn/MacTorn/Views/ContentView.swift index 50e0e61..221dd94 100644 --- a/MacTorn/MacTorn/Views/ContentView.swift +++ b/MacTorn/MacTorn/Views/ContentView.swift @@ -91,7 +91,7 @@ struct ContentView: View { private var headerView: some View { HStack { if let lastUpdated = appState.lastUpdated { - Text("Updated: \(lastUpdated, formatter: timeFormatter)") + Text("Updated: \(lastUpdated, formatter: Self.timeFormatter)") .font(.caption2) .foregroundColor(.secondary) } @@ -177,9 +177,9 @@ struct ContentView: View { .padding(.bottom, 8) } - private var timeFormatter: DateFormatter { + private static let timeFormatter: DateFormatter = { let formatter = DateFormatter() formatter.timeStyle = .short return formatter - } + }() } diff --git a/MacTorn/MacTorn/Views/CreditsView.swift b/MacTorn/MacTorn/Views/CreditsView.swift index e7365b2..82e25b7 100644 --- a/MacTorn/MacTorn/Views/CreditsView.swift +++ b/MacTorn/MacTorn/Views/CreditsView.swift @@ -5,7 +5,7 @@ struct CreditsView: View { @Binding var showCredits: Bool // MARK: - Developer - private let developer = TornContributor(name: "bombel", tornID: 2362436) + private let developer = TornContributor(name: "bombel", tornID: TornConstants.developerID) // MARK: - Special Thanks private let specialThanks: [TornContributor] = [ @@ -92,7 +92,9 @@ struct CreditsView: View { } Button { - openTornProfile(developer.tornID!) + if let tornID = developer.tornID { + openTornProfile(tornID) + } } label: { HStack { Text(developer.name) diff --git a/MacTorn/MacTorn/Views/SettingsView.swift b/MacTorn/MacTorn/Views/SettingsView.swift index 055d3d7..af1042e 100644 --- a/MacTorn/MacTorn/Views/SettingsView.swift +++ b/MacTorn/MacTorn/Views/SettingsView.swift @@ -9,8 +9,7 @@ struct SettingsView: View { @State private var showCredits: Bool = false @State private var availableBrowsers: [PreferredBrowser] = PreferredBrowser.availableBrowsers() - // Developer ID for tip feature (bombel) - private let developerID = 2362436 + private let developerID = TornConstants.developerID var body: some View { if showCredits { @@ -74,7 +73,7 @@ struct SettingsView: View { Text("2m").tag(120) } .pickerStyle(.segmented) - .onChange(of: appState.refreshInterval) { _ in + .onChange(of: appState.refreshInterval) { Task { @MainActor in appState.startPolling() }