diff --git a/PresentationLayer/UIComponents/Screens/RewardAnalyticsView.swift b/PresentationLayer/UIComponents/Screens/RewardAnalyticsView.swift index e4b944e5f..c99a83f7a 100644 --- a/PresentationLayer/UIComponents/Screens/RewardAnalyticsView.swift +++ b/PresentationLayer/UIComponents/Screens/RewardAnalyticsView.swift @@ -104,7 +104,7 @@ private struct ContentView: View { } .scrollIndicators(.hidden) .animation(.easeIn(duration: animationDuration), - value: viewModel.stationItems.values.reduce(into: 0) { $0 = $0 + ($1.isExpanded ? 1 : 0) }) + value: viewModel.stationItems.values.reduce(into: 0) { $0 += ($1.isExpanded ? 1 : 0) }) } } @@ -235,7 +235,7 @@ private struct ContentView: View { } if isExpanded, let stationItem { - expandedView(for: deviceId , stationItem: stationItem) + expandedView(for: deviceId, stationItem: stationItem) } } .WXMCardStyle() diff --git a/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/Overview/OverviewView.swift b/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/Overview/OverviewView.swift index 4c8ec0541..9dcac2313 100644 --- a/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/Overview/OverviewView.swift +++ b/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/Overview/OverviewView.swift @@ -147,6 +147,7 @@ private extension OverviewView { } .cornerRadius(CGFloat(.cardCornerRadius)) } + .wxmShadow() } } diff --git a/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/Overview/OverviewViewModel.swift b/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/Overview/OverviewViewModel.swift index f85ee0422..e4d29a956 100644 --- a/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/Overview/OverviewViewModel.swift +++ b/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/Overview/OverviewViewModel.swift @@ -16,6 +16,9 @@ class OverviewViewModel: ObservableObject { @Published private(set) var ctaObject: CTAContainerView.CTAObject? @Published private(set) var showNoDataInfo: Bool = false @Published var showStationHealthInfo: Bool = false + // Keep a ref on the created view model in order to keep it in memory as long as the screen is visible. + // We do this for caching purposes. + private var stationSupportViewModel: StationSupportViewModel? var weatherNoDataText: LocalizableString { followState.weatherNoDataText @@ -91,8 +94,9 @@ class OverviewViewModel: ObservableObject { guard let name = device?.name else { return } - let vm = ViewModelsFactory.getStationSupportViewModel(deviceName: name) + let vm = stationSupportViewModel ?? ViewModelsFactory.getStationSupportViewModel(deviceName: name) Router.shared.showBottomSheet(.stationSupport(vm), bgColor: .top) + stationSupportViewModel = vm } } diff --git a/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/StationDetailsContainerView.swift b/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/StationDetailsContainerView.swift index a19f8a46d..6c0454d2e 100644 --- a/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/StationDetailsContainerView.swift +++ b/PresentationLayer/UIComponents/Screens/WeatherStations/StationDetails/StationDetailsContainerView.swift @@ -41,7 +41,7 @@ struct StationDetailsContainerView: View { .frame(width: 30.0, height: 30.0) } .wxmPopOver(show: $showSettingsPopOver) { - VStack(alignment:.leading, spacing: CGFloat(.mediumSpacing)) { + VStack(alignment: .leading, spacing: CGFloat(.mediumSpacing)) { Button { [weak viewModel] in showSettingsPopOver = false viewModel?.handleShareButtonTap() diff --git a/PresentationLayer/UIComponents/Screens/WeatherStations/StationSupport/StationSupportView.swift b/PresentationLayer/UIComponents/Screens/WeatherStations/StationSupport/StationSupportView.swift index 78e4f0831..972a2a74b 100644 --- a/PresentationLayer/UIComponents/Screens/WeatherStations/StationSupport/StationSupportView.swift +++ b/PresentationLayer/UIComponents/Screens/WeatherStations/StationSupport/StationSupportView.swift @@ -32,9 +32,6 @@ struct StationSupportView: View { .padding() } } - .task { - viewModel.refresh() - } } } diff --git a/PresentationLayer/UIComponents/Screens/WeatherStations/StationSupport/StationSupportViewModel.swift b/PresentationLayer/UIComponents/Screens/WeatherStations/StationSupport/StationSupportViewModel.swift index d719e871e..29af1e99f 100644 --- a/PresentationLayer/UIComponents/Screens/WeatherStations/StationSupport/StationSupportViewModel.swift +++ b/PresentationLayer/UIComponents/Screens/WeatherStations/StationSupport/StationSupportViewModel.swift @@ -20,6 +20,8 @@ class StationSupportViewModel: ObservableObject { init(stationName: String, useCase: MeUseCaseApi) { self.stationName = stationName self.useCase = useCase + + refresh() } func refresh() { diff --git a/wxm-ios.xcodeproj/project.pbxproj b/wxm-ios.xcodeproj/project.pbxproj index 7a6357ce6..eee8a1fc4 100644 --- a/wxm-ios.xcodeproj/project.pbxproj +++ b/wxm-ios.xcodeproj/project.pbxproj @@ -4965,7 +4965,7 @@ ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "wxm-ios/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "WXM Dev"; + INFOPLIST_KEY_CFBundleDisplayName = "WXM Mock"; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_LSApplicationCategoryType = ""; INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = YES; @@ -5192,7 +5192,7 @@ ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "wxm-ios/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "WXM Dev"; + INFOPLIST_KEY_CFBundleDisplayName = WeatherXM; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_LSApplicationCategoryType = ""; INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = YES;