mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-05 20:23:48 +00:00
1. add an new screen (layout) 2. add TR icon for the bottom tabbar 3. share current location from the TR PP 4. refactor TR manager to properly handle state updates and pass them to the LiveActivityManager and PlacePage 5. add init/update with TrackInfo/EleInfo methods to the PlacePageData and PlacePagePreviewData to update the PP state Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
55 lines
2.5 KiB
Swift
55 lines
2.5 KiB
Swift
@objc class PlacePageBuilder: NSObject {
|
|
@objc static func build(for data: PlacePageData) -> PlacePageViewController {
|
|
let storyboard = UIStoryboard.instance(.placePage)
|
|
guard let viewController = storyboard.instantiateInitialViewController() as? PlacePageViewController else {
|
|
fatalError()
|
|
}
|
|
viewController.isPreviewPlus = data.isPreviewPlus
|
|
let interactor = PlacePageInteractor(viewController: viewController,
|
|
data: data,
|
|
mapViewController: MapViewController.shared()!)
|
|
let layout: IPlacePageLayout
|
|
switch data.objectType {
|
|
case .POI, .bookmark:
|
|
layout = PlacePageCommonLayout(interactor: interactor, storyboard: storyboard, data: data)
|
|
case .track:
|
|
layout = PlacePageTrackLayout(interactor: interactor, storyboard: storyboard, data: data)
|
|
case .trackRecording:
|
|
layout = PlacePageTrackRecordingLayout(interactor: interactor, storyboard: storyboard, data: data)
|
|
@unknown default:
|
|
fatalError()
|
|
}
|
|
let presenter = PlacePagePresenter(view: viewController, headerView: layout.headerViewController)
|
|
viewController.setLayout(layout)
|
|
viewController.interactor = interactor
|
|
interactor.presenter = presenter
|
|
layout.presenter = presenter
|
|
return viewController
|
|
}
|
|
|
|
@objc static func update(_ viewController: PlacePageViewController, with data: PlacePageData) {
|
|
viewController.isPreviewPlus = data.isPreviewPlus
|
|
let interactor = PlacePageInteractor(viewController: viewController,
|
|
data: data,
|
|
mapViewController: MapViewController.shared()!)
|
|
let layout: IPlacePageLayout
|
|
let storyboard = viewController.storyboard!
|
|
switch data.objectType {
|
|
case .POI, .bookmark:
|
|
layout = PlacePageCommonLayout(interactor: interactor, storyboard: storyboard, data: data)
|
|
case .track:
|
|
layout = PlacePageTrackLayout(interactor: interactor, storyboard: storyboard, data: data)
|
|
case .trackRecording:
|
|
layout = PlacePageTrackRecordingLayout(interactor: interactor, storyboard: storyboard, data: data)
|
|
@unknown default:
|
|
fatalError()
|
|
}
|
|
let presenter = PlacePagePresenter(view: viewController, headerView: layout.headerViewController)
|
|
viewController.interactor = interactor
|
|
interactor.presenter = presenter
|
|
layout.presenter = presenter
|
|
viewController.updateWithLayout(layout)
|
|
viewController.updatePreviewOffset()
|
|
}
|
|
}
|