diff --git a/CriticalMapsKit/Sources/AppFeature/AppFeature.swift b/CriticalMapsKit/Sources/AppFeature/AppFeature.swift index d3d0b508..33aa6804 100644 --- a/CriticalMapsKit/Sources/AppFeature/AppFeature.swift +++ b/CriticalMapsKit/Sources/AppFeature/AppFeature.swift @@ -67,12 +67,9 @@ public struct AppFeature { public var chatMessageBadgeCount: UInt = 0 - @Shared(.userSettings) - var userSettings = UserSettings() - @Shared(.rideEventSettings) - var rideEventSettings = RideEventSettings() - @Shared(.appearanceSettings) - var appearanceSettings = AppearanceSettings() + @Shared(.userSettings) var userSettings + @Shared(.rideEventSettings) var rideEventSettings + @Shared(.appearanceSettings) var appearanceSettings public init( locationsAndChatMessages: TaskResult<[Rider]>? = nil, diff --git a/CriticalMapsKit/Sources/AppFeature/AppView.swift b/CriticalMapsKit/Sources/AppFeature/AppView.swift index 1c0456b0..fd7f08ba 100644 --- a/CriticalMapsKit/Sources/AppFeature/AppView.swift +++ b/CriticalMapsKit/Sources/AppFeature/AppView.swift @@ -11,7 +11,6 @@ import SwiftUI public struct AppView: View { @State private var showsInfoExpanded = false @State private var store: StoreOf - @State private var showOfflineBanner = false @Environment(\.accessibilityReduceTransparency) private var reduceTransparency @Environment(\.horizontalSizeClass) private var horizontalSizeClass @@ -56,8 +55,8 @@ public struct AppView: View { if store.hasOfflineError { offlineBanner() .clipShape(Circle()) - .opacity(showOfflineBanner ? 1 : 0) - .accessibleAnimation(.easeInOut(duration: 0.2), value: showOfflineBanner) + .opacity(store.hasOfflineError ? 1 : 0) + .accessibleAnimation(.easeInOut(duration: 0.2), value: store.hasOfflineError) } } .padding(.top, .grid(1)) diff --git a/CriticalMapsKit/Sources/MapFeature/MapFeature.swift b/CriticalMapsKit/Sources/MapFeature/MapFeature.swift index 21323da8..1a73f406 100644 --- a/CriticalMapsKit/Sources/MapFeature/MapFeature.swift +++ b/CriticalMapsKit/Sources/MapFeature/MapFeature.swift @@ -35,8 +35,7 @@ public struct MapFeature { public var isNextRideBannerVisible = false public var isNextRideBannerExpanded = false - @Shared(.userSettings) - var userSettings = UserSettings() + @Shared(.userSettings) var userSettings public init( alert: AlertState? = nil, @@ -186,7 +185,7 @@ public struct MapFeature { await send(.setAlert(.goToSettingsAlert)) case .authorizedAlways, .authorizedWhenInUse: - @Shared(.userSettings) var userSettings = UserSettings() + @Shared(.userSettings) var userSettings guard !userSettings.isObservationModeEnabled else { return } diff --git a/CriticalMapsKit/Sources/NextRideFeature/NextRideFeature.swift b/CriticalMapsKit/Sources/NextRideFeature/NextRideFeature.swift index e9df21c8..86f73498 100644 --- a/CriticalMapsKit/Sources/NextRideFeature/NextRideFeature.swift +++ b/CriticalMapsKit/Sources/NextRideFeature/NextRideFeature.swift @@ -26,10 +26,8 @@ public struct NextRideFeature { public var nextRide: Ride? public var rideEvents: [Ride] = [] - @Shared(.userSettings) - public var userSettings = UserSettings() - @Shared(.rideEventSettings) - var rideEventSettings = RideEventSettings() + @Shared(.userSettings) var userSettings + @Shared(.rideEventSettings) var rideEventSettings public var userLocation: Coordinate? } diff --git a/CriticalMapsKit/Sources/SettingsFeature/AppearanceSettings/AppearanceSettingsFeature.swift b/CriticalMapsKit/Sources/SettingsFeature/AppearanceSettings/AppearanceSettingsFeature.swift index 3b277fa0..520e1e73 100644 --- a/CriticalMapsKit/Sources/SettingsFeature/AppearanceSettings/AppearanceSettingsFeature.swift +++ b/CriticalMapsKit/Sources/SettingsFeature/AppearanceSettings/AppearanceSettingsFeature.swift @@ -18,8 +18,7 @@ public struct AppearanceSettingsFeature { @ObservableState public struct State: Equatable { - @Shared(.appearanceSettings) - var settings = AppearanceSettings() + @Shared(.appearanceSettings) var settings public var appIcon: AppIcon public var colorScheme: AppearanceSettings.ColorScheme diff --git a/CriticalMapsKit/Sources/SettingsFeature/RideEventSettings/RideEventSettingsFeature.swift b/CriticalMapsKit/Sources/SettingsFeature/RideEventSettings/RideEventSettingsFeature.swift index 5a4c6920..d7edd439 100644 --- a/CriticalMapsKit/Sources/SettingsFeature/RideEventSettings/RideEventSettingsFeature.swift +++ b/CriticalMapsKit/Sources/SettingsFeature/RideEventSettings/RideEventSettingsFeature.swift @@ -12,8 +12,7 @@ public struct RideEventsSettingsFeature { @ObservableState public struct State: Equatable { - @Shared(.rideEventSettings) - var settings = RideEventSettings() + @Shared(.rideEventSettings) var settings public var isEnabled: Bool public var eventSearchRadius: EventDistance diff --git a/CriticalMapsKit/Sources/SettingsFeature/SettingsFeature.swift b/CriticalMapsKit/Sources/SettingsFeature/SettingsFeature.swift index 2d650c3f..dae569e5 100644 --- a/CriticalMapsKit/Sources/SettingsFeature/SettingsFeature.swift +++ b/CriticalMapsKit/Sources/SettingsFeature/SettingsFeature.swift @@ -29,12 +29,9 @@ public struct SettingsFeature { @ObservableState public struct State: Equatable { - @Shared(.userSettings) - public var userSettings = UserSettings() - @Shared(.rideEventSettings) - public var rideEventSettings = RideEventSettings() - @Shared(.appearanceSettings) - public var appearanceSettings = AppearanceSettings() + @Shared(.userSettings) public var userSettings + @Shared(.rideEventSettings) public var rideEventSettings + @Shared(.appearanceSettings) public var appearanceSettings @Presents var destination: Destination.State? diff --git a/CriticalMapsKit/Sources/SharedModels/AppearanceSettings.swift b/CriticalMapsKit/Sources/SharedModels/AppearanceSettings.swift index 2a899e3a..dfd1b09d 100644 --- a/CriticalMapsKit/Sources/SharedModels/AppearanceSettings.swift +++ b/CriticalMapsKit/Sources/SharedModels/AppearanceSettings.swift @@ -62,10 +62,8 @@ private extension URL { } } -public extension SharedKey - where Self == Sharing.FileStorageKey -{ +public extension SharedKey where Self == FileStorageKey.Default { static var appearanceSettings: Self { - fileStorage(.appearanceSettingsURL) + Self[.fileStorage(.appearanceSettingsURL), default: AppearanceSettings()] } } diff --git a/CriticalMapsKit/Sources/SharedModels/NextRideFeature/RideEventSettings.swift b/CriticalMapsKit/Sources/SharedModels/NextRideFeature/RideEventSettings.swift index b4f32409..6a84806f 100644 --- a/CriticalMapsKit/Sources/SharedModels/NextRideFeature/RideEventSettings.swift +++ b/CriticalMapsKit/Sources/SharedModels/NextRideFeature/RideEventSettings.swift @@ -34,8 +34,8 @@ private extension URL { } } -public extension SharedKey where Self == Sharing.FileStorageKey { +public extension SharedKey where Self == Sharing.FileStorageKey.Default { static var rideEventSettings: Self { - fileStorage(.rideEventSettingsURL) + Self[.fileStorage(.rideEventSettingsURL), default: RideEventSettings()] } } diff --git a/CriticalMapsKit/Sources/SharedModels/UserSettings.swift b/CriticalMapsKit/Sources/SharedModels/UserSettings.swift index 08a08128..eb6879ca 100644 --- a/CriticalMapsKit/Sources/SharedModels/UserSettings.swift +++ b/CriticalMapsKit/Sources/SharedModels/UserSettings.swift @@ -26,10 +26,8 @@ private extension URL { } } -public extension SharedKey - where Self == Sharing.FileStorageKey -{ +public extension SharedKey where Self == FileStorageKey.Default { static var userSettings: Self { - fileStorage(.userSettingsURL) + Self[.fileStorage(.userSettingsURL), default: UserSettings()] } }