Files
comaps/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift
Konstantin Pastbin e3e4a1985a Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
2025-05-08 21:10:51 +07:00

56 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:
// TODO: Implement PlacePageTrackRecordingLayout
fatalError("PlacePageTrackRecordingLayout is not implemented")
@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
switch data.objectType {
case .POI, .bookmark:
layout = PlacePageCommonLayout(interactor: interactor, storyboard: viewController.storyboard!, data: data)
case .track:
layout = PlacePageTrackLayout(interactor: interactor, storyboard: viewController.storyboard!, data: data)
case .trackRecording:
// TODO: Implement PlacePageTrackRecordingLayout
fatalError("PlacePageTrackRecordingLayout is not implemented")
@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()
}
}