Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion iosApp/iosApp.xctestplan
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,21 @@
"HomeMapViewTests\/testFollowsPuckWhenUserLocationIsKnown()",
"NearbyTransitViewTests\/testDisplaysWheelchairNotAccessibile()",
"OnboardingPageTests\/testFlow()",
"StopDetailsPageTests\/testUpdatesRouteCardDataOnPredictionsChange()",
"StopDetailsPageTests\/testUpdatesRouteCardDataWhenParamsChange()",
"StopDetailsViewModelTests",
"StopDetailsViewModelTests\/testGetRouteCardData()",
"StopDetailsViewModelTests\/testHandleStopChange()",
"StopDetailsViewModelTests\/testLoadGlobalData()",
"StopDetailsViewModelTests\/testLoadPredictions()",
"StopDetailsViewModelTests\/testLoadTripData()",
"StopDetailsViewModelTests\/testSkipLoadingRedundantVehicle()"
"StopDetailsViewModelTests\/testNilTripFilter()",
"StopDetailsViewModelTests\/testSkipLoadingRedundantTrip()",
"StopDetailsViewModelTests\/testSkipLoadingRedundantVehicle()",
"StopDetailsViewModelTests\/testSkipLoadingTripData()",
"TripDetailsViewTests\/testDisplaysScheduleCard()",
"TripDetailsViewTests\/testDisplaysStopList()",
"TripDetailsViewTests\/testDisplaysVehicleCard()"
],
"target" : {
"containerPath" : "container:iosApp.xcodeproj",
Expand Down
1 change: 0 additions & 1 deletion iosApp/iosApp/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ struct ContentView: View {
case nil: nil
}
}

.onChange(of: selectedTab) { nextTab in
if let nextTab {
nearbyVM.pushNavEntry(nextTab.associatedSheetNavEntry)
Expand Down
7 changes: 3 additions & 4 deletions iosApp/iosApp/Pages/AlertDetails/AlertDetails.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import Shared
import SwiftUI

// swiftlint:disable:next type_body_length
struct AlertDetails: View {
var analytics: Analytics = AnalyticsProvider.shared
var alert: Shared.Alert
Expand Down Expand Up @@ -290,9 +289,9 @@ struct AlertDetails: View {
let stop = objects.stop { $0.name = "Park Street" }
let alert = objects.alert { alert in
alert.effect = .elevatorClosure
alert
.header =
"Elevator 804 (Government Center & North lobby to Tremont Street, Winter Street) unavailable on Thu Feb 6 due to maintenance"
alert.header =
"Elevator 804 (Government Center & North lobby to Tremont Street, Winter Street)"
+ "unavailable on Thu Feb 6 due to maintenance"
alert.cause = .maintenance
alert.activePeriod(
start: now.minus(hours: 3 * 24),
Expand Down
25 changes: 1 addition & 24 deletions iosApp/iosApp/Pages/AlertDetails/AlertDetailsPage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ struct AlertDetailsPage: View {
var routes: [Route]?
var stop: Stop?
var nearbyVM: NearbyViewModel
var globalRepository: IGlobalRepository = RepositoryDI().global

@State private var alert: Shared.Alert?
@State var globalResponse: GlobalResponse?
Expand Down Expand Up @@ -94,35 +93,13 @@ struct AlertDetailsPage: View {
}
}
.background(Color.fill2)
.task {
loadGlobal()
}
.global($globalResponse, errorKey: "AlertDetailsPage")
.onAppear { updateAlert() }
.onChange(of: nearbyVM.alerts) { _ in updateAlert() }
.onReceive(timer) { input in now = input }
.onReceive(inspection.notice) { inspection.visit(self, $0) }
}

@MainActor
func activateGlobalListener() async {
for await globalData in globalRepository.state {
globalResponse = globalData
}
}

private func loadGlobal() {
Task(priority: .high) {
await activateGlobalListener()
}
Task {
await fetchApi(
errorKey: "AlertDetailsPage.loadGlobal",
getData: { try await globalRepository.getGlobalData() },
onRefreshAfterError: loadGlobal
)
}
}

private func updateAlert() {
guard let alerts = nearbyVM.alerts else { return }
let nextAlert = alerts.getAlert(alertId: alertId)
Expand Down
22 changes: 1 addition & 21 deletions iosApp/iosApp/Pages/Favorites/EditFavoritesPage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,12 @@ struct EditFavoritesPage: View {
}
.onAppear {
viewModel.setContext(context: FavoritesViewModel.ContextEdit())
loadGlobal()
}
.onDisappear {
toastVM.hideToast()
}
.onReceive(inspection.notice) { inspection.visit(self, $0) }
.global($globalResponse, errorKey: "AlertDetailsPage")
.task {
for await model in viewModel.models {
favoritesVMState = model
Expand All @@ -103,26 +103,6 @@ struct EditFavoritesPage: View {
}
}
}

@MainActor
func activateGlobalListener() async {
for await globalData in globalRepository.state {
globalResponse = globalData
}
}

private func loadGlobal() {
Task(priority: .high) {
await activateGlobalListener()
}
Task {
await fetchApi(
errorKey: "EditDetailsPage.loadGlobal",
getData: { try await globalRepository.getGlobalData() },
onRefreshAfterError: loadGlobal
)
}
}
}

struct EditFavoritesList: View {
Expand Down
26 changes: 1 addition & 25 deletions iosApp/iosApp/Pages/Favorites/FavoritesView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,14 @@ struct FavoritesView: View {
showStopHeader: true
)
}
.global($globalData, errorKey: "FavoritesView")
.onAppear {
favoritesVM.setActive(active: true, wasSentToBackground: false)
favoritesVM.setAlerts(alerts: nearbyVM.alerts)
favoritesVM.setContext(context: FavoritesViewModel.ContextFavorites())
favoritesVM.setLocation(location: location?.positionKt)
favoritesVM.setNow(now: now.toEasternInstant())
favoritesVM.reloadFavorites()
loadEverything()
}
.onReceive(inspection.notice) { inspection.visit(self, $0) }
.task {
Expand Down Expand Up @@ -114,17 +114,6 @@ struct FavoritesView: View {
)
}

private func loadEverything() {
getGlobal()
}

@MainActor
func activateGlobalListener() async {
for await globalData in globalRepository.state {
self.globalData = globalData
}
}

func showFirstTimeToast() {
toastVM.showToast(toast:
.init(message:
Expand All @@ -138,19 +127,6 @@ struct FavoritesView: View {
})))
}

func getGlobal() {
Task(priority: .high) {
await activateGlobalListener()
}
Task {
await fetchApi(
errorKey: "FavoritesView.getGlobal",
getData: { try await globalRepository.getGlobalData() },
onRefreshAfterError: loadEverything
)
}
}

private func onAddStops() {
favoritesVM.setIsFirstExposureToNewFavorites(isFirst: false)
toastVM.hideToast()
Expand Down
6 changes: 1 addition & 5 deletions iosApp/iosApp/Pages/Map/HomeMapView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ struct HomeMapView: View {

var errorBannerRepository: IErrorBannerStateRepository

var globalRepository: IGlobalRepository

var railRouteShapeRepository: IRailRouteShapeRepository
@State var railRouteShapes: MapFriendlyRouteResponse?

Expand Down Expand Up @@ -52,7 +50,6 @@ struct HomeMapView: View {
}

init(
globalRepository: IGlobalRepository = RepositoryDI().global,
contentVM: ContentViewModel,
mapVM: iosApp.MapViewModel,
nearbyVM: NearbyViewModel,
Expand All @@ -66,7 +63,6 @@ struct HomeMapView: View {
sheetHeight: Binding<CGFloat>,
globalMapData: GlobalMapData? = nil
) {
self.globalRepository = globalRepository
self.contentVM = contentVM
self.mapVM = mapVM
self.nearbyVM = nearbyVM
Expand All @@ -88,7 +84,7 @@ struct HomeMapView: View {
crosshairs
}
}
.task { loadGlobalData() }
.global($mapVM.globalData, errorKey: "HomeMapView")
.task { loadRouteShapes() }
.onChange(of: lastNavEntry) { [oldNavEntry = lastNavEntry] nextNavEntry in
handleLastNavChange(oldNavEntry: oldNavEntry, nextNavEntry: nextNavEntry)
Expand Down
24 changes: 0 additions & 24 deletions iosApp/iosApp/Pages/Map/HomeMapViewHandlerExtension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -68,30 +68,6 @@ extension HomeMapView {
}
}

@MainActor
func activateGlobalListener() async {
for await globalData in globalRepository.state {
mapVM.globalData = globalData
}
}

func fetchGlobalData() {
Task {
await fetchApi(
errorKey: "HomeMapView.loadGlobalData",
getData: { try await globalRepository.getGlobalData() },
onRefreshAfterError: fetchGlobalData
)
}
}

func loadGlobalData() {
Task(priority: .high) {
await activateGlobalListener()
}
fetchGlobalData()
}

@MainActor
func activateRouteShapeListener() async {
for await railRouteShapes in railRouteShapeRepository.state {
Expand Down
28 changes: 1 addition & 27 deletions iosApp/iosApp/Pages/NearbyTransit/NearbyTransitView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,12 @@ import os
import Shared
import SwiftUI

// swiftlint:disable:next type_body_length
struct NearbyTransitView: View {
var analytics: Analytics = AnalyticsProvider.shared
@State var predictionsRepository = RepositoryDI().predictions
var schedulesRepository = RepositoryDI().schedules
@Binding var location: CLLocationCoordinate2D?
let setIsReturningFromBackground: (Bool) -> Void
var globalRepository = RepositoryDI().global
@State var globalData: GlobalResponse?
@ObservedObject var nearbyVM: NearbyViewModel
@State var scheduleResponse: ScheduleResponse?
Expand Down Expand Up @@ -51,6 +49,7 @@ struct NearbyTransitView: View {
loadingBody()
}
}
.global($globalData, errorKey: "NearbyTransitView")
.onAppear {
loadEverything()
didAppear?(self)
Expand Down Expand Up @@ -176,36 +175,11 @@ struct NearbyTransitView: View {
var didLoadData: ((Self) -> Void)?

private func loadEverything() {
getGlobal()
getNearby(location: location, globalData: globalData)
joinPredictions(nearbyVM.nearbyState.stopIds)
getSchedule()
}

@MainActor
func activateGlobalListener() async {
for await globalData in globalRepository.state {
self.globalData = globalData
Task {
// this should be handled by the onChange but in tests it just isn't
getNearby(location: location, globalData: globalData)
}
}
}

func getGlobal() {
Task(priority: .high) {
await activateGlobalListener()
}
Task {
await fetchApi(
errorKey: "NearbyTransitView.getGlobal",
getData: { try await globalRepository.getGlobalData() },
onRefreshAfterError: { @MainActor in loadEverything() }
)
}
}

func getNearby(location: CLLocationCoordinate2D?, globalData: GlobalResponse?) {
self.location = location
self.globalData = globalData
Expand Down
25 changes: 1 addition & 24 deletions iosApp/iosApp/Pages/RouteDetails/RouteDetailsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ struct RouteDetailsView: View {

@State var globalData: GlobalResponse?
@State private var lineOrRoute: RouteCardData.LineOrRoute?
let globalRepository: IGlobalRepository = RepositoryDI().global

var body: some View {
ScrollView([]) {
Expand All @@ -44,34 +43,12 @@ struct RouteDetailsView: View {
loadingBody()
}
}
.onAppear {
getGlobal()
}
.global($globalData, errorKey: "RouteDetailsView")
.onChange(of: globalData) { globalData in
lineOrRoute = globalData?.getLineOrRoute(lineOrRouteId: selectionId)
}
}

@MainActor
func activateGlobalListener() async {
for await globalData in globalRepository.state {
self.globalData = globalData
}
}

func getGlobal() {
Task(priority: .high) {
await activateGlobalListener()
}
Task {
await fetchApi(
errorKey: "NearbyTransitView.getGlobal",
getData: { try await globalRepository.getGlobalData() },
onRefreshAfterError: { @MainActor in getGlobal() }
)
}
}

@ViewBuilder private func loadingBody() -> some View {
let objects = ObjectCollectionBuilder()
let mockRoute = RouteCardData.LineOrRouteRoute(route: objects.route { _ in })
Expand Down
Loading
Loading