From 7d41c7fc57021e9cba21019be8ca4dd1392e0055 Mon Sep 17 00:00:00 2001 From: Huong Do Date: Tue, 23 May 2023 10:29:30 +0700 Subject: [PATCH] Show share sheet from the bar button item --- .../ProductFormViewController.swift | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Products/Edit Product/ProductFormViewController.swift b/WooCommerce/Classes/ViewRelated/Products/Edit Product/ProductFormViewController.swift index 45077398198..f6b9737f546 100644 --- a/WooCommerce/Classes/ViewRelated/Products/Edit Product/ProductFormViewController.swift +++ b/WooCommerce/Classes/ViewRelated/Products/Edit Product/ProductFormViewController.swift @@ -53,6 +53,10 @@ final class ProductFormViewController: presentationStyle.createExitForm(viewController: self) }() + private lazy var shareBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, + target: self, + action: #selector(shareProduct)) + private let presentationStyle: ProductFormPresentationStyle private let navigationRightBarButtonItemsSubject = PassthroughSubject<[UIBarButtonItem], Never>() private var navigationRightBarButtonItems: AnyPublisher<[UIBarButtonItem], Never> { @@ -281,7 +285,7 @@ final class ProductFormViewController: if viewModel.canShareProduct() { actionSheet.addDefaultActionWithTitle(ActionSheetStrings.share) { [weak self] _ in - self?.displayShareProduct(source: .moreMenu) + self?.displayShareProduct(from: sender, analyticSource: .moreMenu) } } @@ -470,7 +474,7 @@ final class ProductFormViewController: } @objc private func shareProduct() { - displayShareProduct(source: .productForm) + displayShareProduct(from: shareBarButtonItem, analyticSource: .productForm) } func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { @@ -861,14 +865,14 @@ private extension ProductFormViewController { WebviewHelper.launch(url, with: self) } - func displayShareProduct(source: WooAnalyticsEvent.ProductForm.ShareProductSource) { - ServiceLocator.analytics.track(event: .ProductForm.productDetailShareButtonTapped(source: source)) + func displayShareProduct(from sourceView: UIBarButtonItem, analyticSource: WooAnalyticsEvent.ProductForm.ShareProductSource) { + ServiceLocator.analytics.track(event: .ProductForm.productDetailShareButtonTapped(source: analyticSource)) guard let url = URL(string: product.permalink) else { return } - SharingHelper.shareURL(url: url, title: product.name, from: view, in: self) + SharingHelper.shareURL(url: url, title: product.name, from: sourceView, in: self) } func duplicateProduct() { @@ -1009,7 +1013,7 @@ private extension ProductFormViewController { case .more: return createMoreOptionsBarButtonItem() case .share: - return createShareBarButtonItem() + return shareBarButtonItem } } @@ -1055,12 +1059,6 @@ private extension ProductFormViewController { moreButton.accessibilityIdentifier = "edit-product-more-options-button" return moreButton } - - func createShareBarButtonItem() -> UIBarButtonItem { - UIBarButtonItem(barButtonSystemItem: .action, - target: self, - action: #selector(shareProduct)) - } } // MARK: - Keyboard management