From 9f7933e38c45a4cefac1796174f489effc2943ed Mon Sep 17 00:00:00 2001 From: Aleksey Belousov Date: Tue, 13 Oct 2020 14:42:12 +0300 Subject: [PATCH] [iOS] move interfaces to separate file, minor fixes --- .../BookmarksListInfoViewController.swift | 30 ++--- .../BookmarksListInteractor.swift | 28 ---- .../BookmarksListInterfaces.swift | 121 ++++++++++++++++++ .../BookmarksListPresenter.swift | 36 +++--- .../BookmarksList/BookmarksListRouter.swift | 8 -- .../BookmarksListViewController.swift | 96 +------------- .../BookmarksList/Cells/BookmarkCell.swift | 6 +- .../Cells/BookmarksListSectionHeader.swift | 6 +- .../BookmarksList/Cells/SubgroupCell.swift | 8 +- .../BookmarksList/Cells/TrackCell.swift | 6 +- iphone/Maps/Maps.xcodeproj/project.pbxproj | 4 + 11 files changed, 176 insertions(+), 173 deletions(-) create mode 100644 iphone/Maps/Bookmarks/BookmarksList/BookmarksListInterfaces.swift diff --git a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInfoViewController.swift b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInfoViewController.swift index de6519bd1f..4a399ecac0 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInfoViewController.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInfoViewController.swift @@ -1,19 +1,9 @@ -import UIKit - -protocol IBookmakrsListInfoViewModel { - var title: String { get } - var author: String { get } - var hasDescription: Bool { get } - var imageUrl: URL? { get } - var hasLogo: Bool { get } //TODO: maybe replace with logo url or similar -} - protocol BookmarksListInfoViewControllerDelegate: AnyObject { func didPressDescription() func didUpdateContent() } -class BookmarksListInfoViewController: UIViewController { +final class BookmarksListInfoViewController: UIViewController { var info: IBookmakrsListInfoViewModel? { didSet { guard isViewLoaded, let info = info else { return } @@ -23,16 +13,16 @@ class BookmarksListInfoViewController: UIViewController { weak var delegate: BookmarksListInfoViewControllerDelegate? - @IBOutlet var titleImageView: UIImageView! - @IBOutlet var titleLabel: UILabel! - @IBOutlet var descriptionButton: UIButton! - @IBOutlet var authorContainerView: UIView! - @IBOutlet var authorImageView: UIImageView! - @IBOutlet var authorLabel: UILabel! - @IBOutlet var infoStack: UIStackView! - @IBOutlet var separatorsConstraints: [NSLayoutConstraint]! + @IBOutlet private var titleImageView: UIImageView! + @IBOutlet private var titleLabel: UILabel! + @IBOutlet private var descriptionButton: UIButton! + @IBOutlet private var authorContainerView: UIView! + @IBOutlet private var authorImageView: UIImageView! + @IBOutlet private var authorLabel: UILabel! + @IBOutlet private var infoStack: UIStackView! + @IBOutlet private var separatorsConstraints: [NSLayoutConstraint]! - @IBAction func onDescription(_ sender: UIButton) { + @IBAction private func onDescription(_ sender: UIButton) { delegate?.didPressDescription() } diff --git a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInteractor.swift b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInteractor.swift index 72d0c20408..99620da747 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInteractor.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInteractor.swift @@ -1,31 +1,3 @@ -protocol IBookmarksListInteractor { - func getBookmarkGroup() -> BookmarkGroup - func hasDescription() -> Bool - func prepareForSearch() - func search(_ text: String, completion: @escaping ([Bookmark]) -> Void) - func availableSortingTypes(hasMyPosition: Bool) -> [BookmarksListSortingType] - func viewOnMap() - func viewBookmarkOnMap(_ bookmarkId: MWMMarkID) - func viewTrackOnMap(_ trackId: MWMTrackID) - func setGroup(_ groupId: MWMMarkGroupID, visible: Bool) - func sort(_ sortingType: BookmarksListSortingType, - location: CLLocation?, - completion: @escaping ([BookmarksSection]) -> Void) - func resetSort() - func lastSortingType() -> BookmarksListSortingType? - func deleteBookmark(_ bookmarkId: MWMMarkID) - func deleteBookmarksGroup() - func canDeleteGroup() -> Bool - func exportFile(_ completion: @escaping (URL?, ExportFileStatus) -> Void) - func finishExportFile() -} - -enum BookmarksListSortingType { - case distance - case date - case type -} - extension BookmarksListSortingType { init(_ sortingType: BookmarksSortingType) { switch sortingType { diff --git a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInterfaces.swift b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInterfaces.swift new file mode 100644 index 0000000000..aecb489fa1 --- /dev/null +++ b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListInterfaces.swift @@ -0,0 +1,121 @@ +import Foundation + +enum BookmarksListVisibilityButtonState { + case hidden + case hideAll + case showAll +} + +protocol IBookmarksListSectionViewModel { + var numberOfItems: Int { get } + var sectionTitle: String { get } + var visibilityButtonState: BookmarksListVisibilityButtonState { get } + var canEdit: Bool { get } +} + +protocol IBookmarksSectionViewModel: IBookmarksListSectionViewModel { + var bookmarks: [IBookmarkViewModel] { get } +} + +protocol ITracksSectionViewModel: IBookmarksListSectionViewModel { + var tracks: [ITrackViewModel] { get } +} + +protocol ISubgroupsSectionViewModel: IBookmarksListSectionViewModel { + var subgroups: [ISubgroupViewModel] { get } +} + +protocol IBookmarkViewModel { + var bookmarkName: String { get } + var subtitle: String { get } + var image: UIImage { get } +} + +protocol ITrackViewModel { + var trackName: String { get } + var subtitle: String { get } + var image: UIImage { get } +} + +protocol ISubgroupViewModel { + var subgroupName: String { get } + var subtitle: String { get } + var isVisible: Bool { get } +} + +protocol IBookmarksListMenuItem { + var title: String { get } + var destructive: Bool { get } + var enabled: Bool { get } + var action: () -> Void { get } +} + +protocol IBookmarksListView: AnyObject { + func setTitle(_ title: String) + func setInfo(_ info: IBookmakrsListInfoViewModel) + func setSections(_ sections: [IBookmarksListSectionViewModel]) + func setMoreItemTitle(_ itemTitle: String) + func showMenu(_ items: [IBookmarksListMenuItem]) + func enableEditing(_ enable: Bool) + func share(_ url: URL, completion: @escaping () -> Void) + func showError(title: String, message: String) +} + +protocol IBookmarksListPresenter { + func viewDidLoad() + func activateSearch() + func deactivateSearch() + func cancelSearch() + func search(_ text: String) + func sort() + func more() + func deleteBookmark(in section: IBookmarksListSectionViewModel, at index: Int) + func selectItem(in section: IBookmarksListSectionViewModel, at index: Int) + func checkItem(in section: IBookmarksListSectionViewModel, at index: Int, checked: Bool) + func toggleVisibility(in section: IBookmarksListSectionViewModel) + func showDescription() +} + +enum BookmarksListSortingType { + case distance + case date + case type +} + +protocol IBookmarksListInteractor { + func getBookmarkGroup() -> BookmarkGroup + func hasDescription() -> Bool + func prepareForSearch() + func search(_ text: String, completion: @escaping ([Bookmark]) -> Void) + func availableSortingTypes(hasMyPosition: Bool) -> [BookmarksListSortingType] + func viewOnMap() + func viewBookmarkOnMap(_ bookmarkId: MWMMarkID) + func viewTrackOnMap(_ trackId: MWMTrackID) + func setGroup(_ groupId: MWMMarkGroupID, visible: Bool) + func sort(_ sortingType: BookmarksListSortingType, + location: CLLocation?, + completion: @escaping ([BookmarksSection]) -> Void) + func resetSort() + func lastSortingType() -> BookmarksListSortingType? + func deleteBookmark(_ bookmarkId: MWMMarkID) + func deleteBookmarksGroup() + func canDeleteGroup() -> Bool + func exportFile(_ completion: @escaping (URL?, ExportFileStatus) -> Void) + func finishExportFile() +} + +protocol IBookmarksListRouter { + func listSettings(_ bookmarkGroup: BookmarkGroup, delegate: CategorySettingsViewControllerDelegate?) + func sharingOptions(_ bookmarkGroup: BookmarkGroup) + func viewOnMap(_ bookmarkGroup: BookmarkGroup) + func showDescription(_ bookmarkGroup: BookmarkGroup) + func showSubgroup(_ subgroupId: MWMMarkGroupID) +} + +protocol IBookmakrsListInfoViewModel { + var title: String { get } + var author: String { get } + var hasDescription: Bool { get } + var imageUrl: URL? { get } + var hasLogo: Bool { get } //TODO: maybe replace with logo url or similar +} diff --git a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListPresenter.swift b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListPresenter.swift index 50ba582a07..aaa09a2504 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListPresenter.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListPresenter.swift @@ -1,18 +1,3 @@ -protocol IBookmarksListPresenter { - func viewDidLoad() - func activateSearch() - func deactivateSearch() - func cancelSearch() - func search(_ text: String) - func sort() - func more() - func deleteBookmark(in section: IBookmarksListSectionViewModel, at index: Int) - func selectItem(in section: IBookmarksListSectionViewModel, at index: Int) - func checkItem(in section: IBookmarksListSectionViewModel, at index: Int, checked: Bool) - func toggleVisibility(in section: IBookmarksListSectionViewModel) - func showDescription() -} - protocol BookmarksListDelegate: AnyObject { func bookmarksListDidDeleteGroup() } @@ -349,6 +334,27 @@ extension BookmarksListPresenter: CategorySettingsViewControllerDelegate { } } +extension IBookmarksSectionViewModel { + var numberOfItems: Int { bookmarks.count } + var visibilityButtonState: BookmarksListVisibilityButtonState { .hidden } + var canEdit: Bool { true } +} + +extension ITracksSectionViewModel { + var numberOfItems: Int { tracks.count } + var sectionTitle: String { L("tracks_title") } + var visibilityButtonState: BookmarksListVisibilityButtonState { .hidden } + var canEdit: Bool { true } +} + +extension ISubgroupsSectionViewModel { + var numberOfItems: Int { subgroups.count } + var visibilityButtonState: BookmarksListVisibilityButtonState { + subgroups.reduce(false) { $0 ? $0 : $1.isVisible } ? .hideAll : .showAll + } + var canEdit: Bool { false } +} + fileprivate struct BookmarkViewModel: IBookmarkViewModel { let bookmarkId: MWMMarkID let bookmarkName: String diff --git a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListRouter.swift b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListRouter.swift index 7818451708..49383176ce 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListRouter.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListRouter.swift @@ -1,11 +1,3 @@ -protocol IBookmarksListRouter { - func listSettings(_ bookmarkGroup: BookmarkGroup, delegate: CategorySettingsViewControllerDelegate?) - func sharingOptions(_ bookmarkGroup: BookmarkGroup) - func viewOnMap(_ bookmarkGroup: BookmarkGroup) - func showDescription(_ bookmarkGroup: BookmarkGroup) - func showSubgroup(_ subgroupId: MWMMarkGroupID) -} - final class BookmarksListRouter { private let mapViewController: MapViewController private weak var coordinator: BookmarksCoordinator? diff --git a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListViewController.swift b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListViewController.swift index de7f0011e4..bd9ce72058 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/BookmarksListViewController.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/BookmarksListViewController.swift @@ -1,85 +1,3 @@ -enum BookmarksListVisibilityButtonState { - case hidden - case hideAll - case showAll -} - -protocol IBookmarksListSectionViewModel { - var numberOfItems: Int { get } - var sectionTitle: String { get } - var visibilityButtonState: BookmarksListVisibilityButtonState { get } - var canEdit: Bool { get } -} - -protocol IBookmarksSectionViewModel: IBookmarksListSectionViewModel { - var bookmarks: [IBookmarkViewModel] { get } -} - -extension IBookmarksSectionViewModel { - var numberOfItems: Int { bookmarks.count } - var visibilityButtonState: BookmarksListVisibilityButtonState { .hidden } - var canEdit: Bool { true } -} - -protocol ITracksSectionViewModel: IBookmarksListSectionViewModel { - var tracks: [ITrackViewModel] { get } -} - -extension ITracksSectionViewModel { - var numberOfItems: Int { tracks.count } - var sectionTitle: String { L("tracks_title") } - var visibilityButtonState: BookmarksListVisibilityButtonState { .hidden } - var canEdit: Bool { true } -} - -protocol ISubgroupsSectionViewModel: IBookmarksListSectionViewModel { - var subgroups: [ISubgroupViewModel] { get } -} - -extension ISubgroupsSectionViewModel { - var numberOfItems: Int { subgroups.count } - var visibilityButtonState: BookmarksListVisibilityButtonState { - subgroups.reduce(false) { $0 ? $0 : $1.isVisible } ? .hideAll : .showAll - } - var canEdit: Bool { false } -} - -protocol IBookmarkViewModel { - var bookmarkName: String { get } - var subtitle: String { get } - var image: UIImage { get } -} - -protocol ITrackViewModel { - var trackName: String { get } - var subtitle: String { get } - var image: UIImage { get } -} - -protocol ISubgroupViewModel { - var subgroupName: String { get } - var subtitle: String { get } - var isVisible: Bool { get } -} - -protocol IBookmarksListMenuItem { - var title: String { get } - var destructive: Bool { get } - var enabled: Bool { get } - var action: () -> Void { get } -} - -protocol IBookmarksListView: AnyObject { - func setTitle(_ title: String) - func setInfo(_ info: IBookmakrsListInfoViewModel) - func setSections(_ sections: [IBookmarksListSectionViewModel]) - func setMoreItemTitle(_ itemTitle: String) - func showMenu(_ items: [IBookmarksListMenuItem]) - func enableEditing(_ enable: Bool) - func share(_ url: URL, completion: @escaping () -> Void) - func showError(title: String, message: String) -} - final class BookmarksListViewController: MWMViewController { var presenter: IBookmarksListPresenter! @@ -88,11 +6,11 @@ final class BookmarksListViewController: MWMViewController { private var canEdit = false - @IBOutlet var tableView: UITableView! - @IBOutlet var searchBar: UISearchBar! - @IBOutlet var toolBar: UIToolbar! - @IBOutlet var sortToolbarItem: UIBarButtonItem! - @IBOutlet var moreToolbarItem: UIBarButtonItem! + @IBOutlet private var tableView: UITableView! + @IBOutlet private var searchBar: UISearchBar! + @IBOutlet private var toolBar: UIToolbar! + @IBOutlet private var sortToolbarItem: UIBarButtonItem! + @IBOutlet private var moreToolbarItem: UIBarButtonItem! private lazy var infoViewController: BookmarksListInfoViewController = { let infoViewController = BookmarksListInfoViewController() @@ -137,11 +55,11 @@ final class BookmarksListViewController: MWMViewController { tableView.tableHeaderView = infoView } - @IBAction func onSortItem(_ sender: UIBarButtonItem) { + @IBAction private func onSortItem(_ sender: UIBarButtonItem) { presenter.sort() } - @IBAction func onMoreItem(_ sender: UIBarButtonItem) { + @IBAction private func onMoreItem(_ sender: UIBarButtonItem) { presenter.more() } diff --git a/iphone/Maps/Bookmarks/BookmarksList/Cells/BookmarkCell.swift b/iphone/Maps/Bookmarks/BookmarksList/Cells/BookmarkCell.swift index a321f5339a..d8e3663c22 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/Cells/BookmarkCell.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/Cells/BookmarkCell.swift @@ -1,7 +1,7 @@ final class BookmarkCell: UITableViewCell { - @IBOutlet var bookmarkImageView: UIImageView! - @IBOutlet var bookmarkTitleLabel: UILabel! - @IBOutlet var bookmarkSubtitleLabel: UILabel! + @IBOutlet private var bookmarkImageView: UIImageView! + @IBOutlet private var bookmarkTitleLabel: UILabel! + @IBOutlet private var bookmarkSubtitleLabel: UILabel! func config(_ bookmark: IBookmarkViewModel) { bookmarkImageView.image = bookmark.image diff --git a/iphone/Maps/Bookmarks/BookmarksList/Cells/BookmarksListSectionHeader.swift b/iphone/Maps/Bookmarks/BookmarksList/Cells/BookmarksListSectionHeader.swift index 95334ddaf1..6b4c791dfc 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/Cells/BookmarksListSectionHeader.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/Cells/BookmarksListSectionHeader.swift @@ -1,11 +1,11 @@ final class BookmarksListSectionHeader: UITableViewHeaderFooterView { - @IBOutlet var titleLabel: UILabel! - @IBOutlet var visibilityButton: UIButton! + @IBOutlet private var titleLabel: UILabel! + @IBOutlet private var visibilityButton: UIButton! typealias VisibilityHandlerClosure = () -> Void var visibilityHandler: VisibilityHandlerClosure? - @IBAction func onVisibilityButton(_ sender: UIButton) { + @IBAction private func onVisibilityButton(_ sender: UIButton) { visibilityHandler?() } diff --git a/iphone/Maps/Bookmarks/BookmarksList/Cells/SubgroupCell.swift b/iphone/Maps/Bookmarks/BookmarksList/Cells/SubgroupCell.swift index e245d54c42..3cc500290d 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/Cells/SubgroupCell.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/Cells/SubgroupCell.swift @@ -1,7 +1,7 @@ final class SubgroupCell: UITableViewCell { - @IBOutlet var subgroupTitleLabel: UILabel! - @IBOutlet var subgroupSubtitleLabel: UILabel! - @IBOutlet var subgroupVisibleMark: Checkmark! + @IBOutlet private var subgroupTitleLabel: UILabel! + @IBOutlet private var subgroupSubtitleLabel: UILabel! + @IBOutlet private var subgroupVisibleMark: Checkmark! typealias CheckHandlerClosure = (Bool) -> Void var checkHandler: CheckHandlerClosure? @@ -12,7 +12,7 @@ final class SubgroupCell: UITableViewCell { subgroupVisibleMark.isChecked = subgroup.isVisible } - @IBAction func onCheck(_ sender: Checkmark) { + @IBAction private func onCheck(_ sender: Checkmark) { checkHandler?(sender.isChecked) } } diff --git a/iphone/Maps/Bookmarks/BookmarksList/Cells/TrackCell.swift b/iphone/Maps/Bookmarks/BookmarksList/Cells/TrackCell.swift index 26cd7cc49e..cd77c09d81 100644 --- a/iphone/Maps/Bookmarks/BookmarksList/Cells/TrackCell.swift +++ b/iphone/Maps/Bookmarks/BookmarksList/Cells/TrackCell.swift @@ -1,7 +1,7 @@ final class TrackCell: UITableViewCell { - @IBOutlet var trackImageView: UIImageView! - @IBOutlet var trackTitleLabel: UILabel! - @IBOutlet var trackSubtitleLabel: UILabel! + @IBOutlet private var trackImageView: UIImageView! + @IBOutlet private var trackTitleLabel: UILabel! + @IBOutlet private var trackSubtitleLabel: UILabel! func config(_ track: ITrackViewModel) { trackImageView.image = track.image diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 0dd9a0f7ae..425d376d14 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -354,6 +354,7 @@ 474AC76C2139E4F2002F9BF9 /* RemoveAdsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474AC76A2139E4F2002F9BF9 /* RemoveAdsViewController.swift */; }; 474AC76D2139E4F2002F9BF9 /* RemoveAdsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 474AC76B2139E4F2002F9BF9 /* RemoveAdsViewController.xib */; }; 474C9F5A213FF75800369009 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 474C9F59213FF75800369009 /* StoreKit.framework */; }; + 4757D6212535BB6E0062364F /* BookmarksListInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4757D6202535BB6E0062364F /* BookmarksListInterfaces.swift */; }; 475EC36D244EDE66003BC295 /* GuidesGalleryPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 475EC36C244EDE66003BC295 /* GuidesGalleryPresenter.swift */; }; 475EC36F244EF7A9003BC295 /* GuidesGalleryBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 475EC36E244EF7A9003BC295 /* GuidesGalleryBuilder.swift */; }; 475EC373244F0992003BC295 /* PlacePageGalleryLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 475EC372244F0992003BC295 /* PlacePageGalleryLayout.swift */; }; @@ -1507,6 +1508,7 @@ 474AC76A2139E4F2002F9BF9 /* RemoveAdsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoveAdsViewController.swift; sourceTree = ""; }; 474AC76B2139E4F2002F9BF9 /* RemoveAdsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RemoveAdsViewController.xib; sourceTree = ""; }; 474C9F59213FF75800369009 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; + 4757D6202535BB6E0062364F /* BookmarksListInterfaces.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksListInterfaces.swift; sourceTree = ""; }; 475EC36C244EDE66003BC295 /* GuidesGalleryPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuidesGalleryPresenter.swift; sourceTree = ""; }; 475EC36E244EF7A9003BC295 /* GuidesGalleryBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuidesGalleryBuilder.swift; sourceTree = ""; }; 475EC372244F0992003BC295 /* PlacePageGalleryLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlacePageGalleryLayout.swift; sourceTree = ""; }; @@ -3615,6 +3617,7 @@ 47CA68D92500469400671019 /* BookmarksListBuilder.swift */, 470E1672252AD7F2002D201A /* BookmarksListInfoViewController.swift */, 470E1673252AD7F2002D201A /* BookmarksListInfoViewController.xib */, + 4757D6202535BB6E0062364F /* BookmarksListInterfaces.swift */, ); path = BookmarksList; sourceTree = ""; @@ -5559,6 +5562,7 @@ 472E3F4C2147D5700020E412 /* Subscription.swift in Sources */, 340B33C61F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm in Sources */, F6E2FE191E097BA00083EBEC /* MWMOpeningHoursTimeSpanTableViewCell.mm in Sources */, + 4757D6212535BB6E0062364F /* BookmarksListInterfaces.swift in Sources */, F6E407D01FC45EF5001F7821 /* MWMDiscoveryController.mm in Sources */, F6E2FDEC1E097BA00083EBEC /* MWMOpeningHoursAddClosedTableViewCell.mm in Sources */, 34BBD64C1F826DB10070CA50 /* AuthorizationViewController.swift in Sources */,