diff --git a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift index a685ff2d91..28a1ebb2a1 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift @@ -24,14 +24,29 @@ class PlacePageInteractor: NSObject { } private func updatePlacePageIfNeeded() { - let isBookmark = placePageData.bookmarkData != nil && bookmarksManager.hasBookmark(placePageData.bookmarkData!.bookmarkId) - let isTrack = placePageData.trackData != nil/* && bookmarksManager.hasTrack(placePageData.trackData!.trackId)*/ - guard isBookmark || isTrack else { - presenter?.closeAnimated() - return + func updatePlacePage() { + FrameworkHelper.updatePlacePageData() + placePageData.updateBookmarkStatus() + } + + switch placePageData.objectType { + case .POI, .trackRecording: + break + case .bookmark: + guard bookmarksManager.hasBookmark(placePageData.bookmarkData!.bookmarkId) else { + presenter?.closeAnimated() + return + } + updatePlacePage() + case .track: + guard bookmarksManager.hasTrack(placePageData.trackData!.trackId) else { + presenter?.closeAnimated() + return + } + updatePlacePage() + @unknown default: + fatalError("Unknown object type") } - FrameworkHelper.updatePlacePageData() - placePageData.updateBookmarkStatus() } private func addToBookmarksManagerObserverList() { @@ -311,6 +326,10 @@ extension PlacePageInteractor: PlacePageHeaderViewControllerDelegate { shareViewController.present(inParentViewController: mapViewController, anchorView: sourceView) case .track: presenter?.showShareTrackMenu() + case .trackRecording: + let currentLocation = LocationManager.lastLocation()?.coordinate ?? placePageData.locationCoordinate + let shareMyPositionViewController = ActivityViewController.share(forMyPosition: currentLocation) + shareMyPositionViewController.present(inParentViewController: mapViewController, anchorView: sourceView) default: fatalError() }