From 235c6ae66e72a12a00c7af62449b770ee6994702 Mon Sep 17 00:00:00 2001 From: Ingerid Fosli Date: Mon, 20 Nov 2023 14:35:41 -0700 Subject: [PATCH] Reset comments on block (#1886) --- .../CommentRepliesViewController.swift | 24 ++++++++++++++++--- .../Controllers/CommentsViewController.swift | 21 ++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/Kickstarter-iOS/Features/Comments/Controllers/CommentRepliesViewController.swift b/Kickstarter-iOS/Features/Comments/Controllers/CommentRepliesViewController.swift index 11a6cca582..fd7f122ea5 100644 --- a/Kickstarter-iOS/Features/Comments/Controllers/CommentRepliesViewController.swift +++ b/Kickstarter-iOS/Features/Comments/Controllers/CommentRepliesViewController.swift @@ -10,6 +10,10 @@ private enum Layout { } } +protocol CommentRepliesViewControllerDelegate: AnyObject { + func commentRepliesViewControllerDidBlockUser(_: CommentRepliesViewController) +} + final class CommentRepliesViewController: UITableViewController, MessageBannerViewControllerPresenting { // MARK: Properties @@ -17,6 +21,7 @@ final class CommentRepliesViewController: UITableViewController, MessageBannerVi internal let viewModel: CommentRepliesViewModelType = CommentRepliesViewModel() public var messageBannerViewController: MessageBannerViewController? + weak var delegate: CommentRepliesViewControllerDelegate? private lazy var commentComposer: CommentComposerView = { let frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: Layout.Composer.originalHeight) @@ -75,6 +80,7 @@ final class CommentRepliesViewController: UITableViewController, MessageBannerVi self.navigationItem.title = Strings.Replies() self.messageBannerViewController = self.configureMessageBannerViewController(on: self) + self.messageBannerViewController?.delegate = self self.tableView.dataSource = self.dataSource self.tableView.delegate = self self.tableView.registerCellClass(CommentCell.self) @@ -166,14 +172,16 @@ final class CommentRepliesViewController: UITableViewController, MessageBannerVi self.viewModel.outputs.userBlocked .observeForUI() .observeValues { [weak self] success in - self?.commentComposer.isHidden = true + guard let self else { return } + self.commentComposer.isHidden = true // Scott TODO: Use localized strings once translations can be done [mbl-1037](https://kickstarter.atlassian.net/browse/MBL-1037) if success { - self?.messageBannerViewController? + self.messageBannerViewController? .showBanner(with: .success, message: "This user has been successfully blocked") + self.delegate?.commentRepliesViewControllerDidBlockUser(self) } else { - self?.messageBannerViewController? + self.messageBannerViewController? .showBanner(with: .error, message: "Your request did not go through. Try again.") } } @@ -252,6 +260,16 @@ extension CommentRepliesViewController: RootCommentCellDelegate { } } +// MARK: - MessageBannerViewControllerDelegate + +extension CommentRepliesViewController: MessageBannerViewControllerDelegate { + func messageBannerViewDidHide(type: MessageBannerType) { + if type == .success { + self.navigationController?.popViewController(animated: true) + } + } +} + // MARK: - Styles private let tableViewStyle: TableViewStyle = { tableView in diff --git a/Kickstarter-iOS/Features/Comments/Controllers/CommentsViewController.swift b/Kickstarter-iOS/Features/Comments/Controllers/CommentsViewController.swift index 87830d4b9c..263c30d362 100644 --- a/Kickstarter-iOS/Features/Comments/Controllers/CommentsViewController.swift +++ b/Kickstarter-iOS/Features/Comments/Controllers/CommentsViewController.swift @@ -65,6 +65,7 @@ internal final class CommentsViewController: UITableViewController, MessageBanne self.commentComposer.delegate = self self.messageBannerViewController = self.configureMessageBannerViewController(on: self) + self.messageBannerViewController?.delegate = self self.tableView.registerCellClass(CommentCell.self) self.tableView.registerCellClass(CommentPostFailedCell.self) self.tableView.registerCellClass(CommentRemovedCell.self) @@ -147,6 +148,7 @@ internal final class CommentsViewController: UITableViewController, MessageBanne inputAreaBecomeFirstResponder: becomeFirstResponder, replyId: nil ) + vc.delegate = self self?.navigationController?.pushViewController(vc, animated: true) } @@ -284,6 +286,14 @@ extension CommentsViewController: CommentCellDelegate { } } +// MARK: - CommentRepliesViewControllerDelegate + +extension CommentsViewController: CommentRepliesViewControllerDelegate { + func commentRepliesViewControllerDidBlockUser(_: CommentRepliesViewController) { + self.tableView.scrollToTop() + self.viewModel.inputs.refresh() } +} + // MARK: - CommentRemovedCellDelegate extension CommentsViewController: CommentRemovedCellDelegate { @@ -292,6 +302,17 @@ extension CommentsViewController: CommentRemovedCellDelegate { } } +// MARK: - MessageBannerViewControllerDelegate + +extension CommentsViewController: MessageBannerViewControllerDelegate { + func messageBannerViewDidHide(type: MessageBannerType) { + if type == .success { + self.tableView.scrollToTop() + self.viewModel.inputs.refresh() + } + } +} + // MARK: - Styles private let tableViewStyle: TableViewStyle = { tableView in