diff options
author | Aleksey Belousov <aleksey@maps.me> | 2020-04-09 02:17:35 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <bykoianko@gmail.com> | 2020-04-14 16:19:24 +0300 |
commit | a8b87e8497b4f8ad1d7034d75b73cb473ab0ada3 (patch) | |
tree | c1202cfcaf2e476a306eaeaf07480d1f54a99ba9 /iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC | |
parent | 1671c95bfb35cc36e2fbe494668ca8e2df982e95 (diff) |
[iOS] Refresh reviews section in PP after adding review
https://jira.mail.ru/browse/MAPSME-13637
Diffstat (limited to 'iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC')
3 files changed, 29 insertions, 37 deletions
diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCAddReview/UGCAddReviewController.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCAddReview/UGCAddReviewController.swift index b4a55d34a7..bf8d6967e6 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCAddReview/UGCAddReviewController.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCAddReview/UGCAddReviewController.swift @@ -1,43 +1,45 @@ @objc(MWMGCReviewSaver) protocol UGCReviewSaver { typealias onSaveHandler = (Bool) -> Void - func saveUgc(model: UGCAddReviewController.Model, language: String, resultHandler: @escaping onSaveHandler) + func saveUgc(placePageData: PlacePageData, model: UGCReviewModel, language: String, resultHandler: @escaping onSaveHandler) } @objc(MWMUGCAddReviewController) final class UGCAddReviewController: MWMTableViewController { - typealias Model = UGCReviewModel + private weak var textCell: UGCAddReviewTextCell? + private var reviewPosted = false - weak var textCell: UGCAddReviewTextCell? - var reviewPosted = false - - enum Sections { + private enum Sections { case ratings case text } - @objc static func instance(model: Model, saver: UGCReviewSaver) -> UGCAddReviewController { - let vc = UGCAddReviewController(nibName: toString(self), bundle: nil) - vc.model = model - vc.saver = saver - return vc - } + private let placePageData: PlacePageData + private let model: UGCReviewModel + private let saver: UGCReviewSaver + private var sections: [Sections] = [] - private var model: Model! { - didSet { - sections = [] - assert(!model.ratings.isEmpty) - sections.append(.ratings) - sections.append(.text) + @objc init(placePageData: PlacePageData, rating: UgcSummaryRatingType, saver: UGCReviewSaver) { + self.placePageData = placePageData + self.saver = saver + let ratings = placePageData.ratingCategories.map { + UGCRatingStars(title: $0, value: CGFloat(rating.rawValue)) } + model = UGCReviewModel(ratings: ratings, text: "") + super.init(nibName: toString(UGCAddReviewController.self), bundle: nil) + title = placePageData.previewData.title } - private var sections: [Sections] = [] - private var saver: UGCReviewSaver! + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } override func viewDidLoad() { super.viewDidLoad() - configNavBar() + sections.append(.ratings) + sections.append(.text) + + navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(onDone)) configTableView() } @@ -48,11 +50,6 @@ final class UGCAddReviewController: MWMTableViewController { } } - private func configNavBar() { - title = model.title - navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(onDone)) - } - private func configTableView() { tableView.registerNib(cellClass: UGCAddReviewRatingCell.self) tableView.registerNib(cellClass: UGCAddReviewTextCell.self) @@ -70,7 +67,10 @@ final class UGCAddReviewController: MWMTableViewController { reviewPosted = true model.text = text - saver.saveUgc(model: model, language: textCell?.reviewLanguage ?? "en", resultHandler: { (saveResult) in + saver.saveUgc(placePageData: placePageData, + model: model, + language: textCell?.reviewLanguage ?? "en", + resultHandler: { (saveResult) in guard let nc = self.navigationController else { return } if !saveResult { diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCAddReview/UGCReviewModel.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCAddReview/UGCReviewModel.swift index 42abfde712..f1b0d6e51c 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCAddReview/UGCReviewModel.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCAddReview/UGCReviewModel.swift @@ -1,16 +1,10 @@ @objc(MWMUGCReviewModel) final class UGCReviewModel: NSObject { - let reviewValue: UgcSummaryRatingType - @objc let ratings: [UGCRatingStars] @objc var text: String - let title: String - - @objc init(reviewValue: UgcSummaryRatingType, ratings: [UGCRatingStars], title: String, text: String) { - self.reviewValue = reviewValue + init(ratings: [UGCRatingStars], text: String) { self.ratings = ratings - self.title = title self.text = text } } diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCRating.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCRating.swift index b468368f86..57f2768e94 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCRating.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/UGC/UGCRating.swift @@ -2,11 +2,9 @@ final class UGCRatingStars: NSObject { @objc let title: String @objc var value: CGFloat - let maxValue: CGFloat - @objc init(title: String, value: CGFloat, maxValue: CGFloat) { + init(title: String, value: CGFloat) { self.title = title self.value = value - self.maxValue = maxValue } } |