Skip to content

Commit e0385da

Browse files
authored
Merge pull request #726 from woocommerce/issue/698-uihang-spinner
Switch Add button to a spinner in notes editor screen
2 parents dfcc552 + aa74811 commit e0385da

File tree

1 file changed

+60
-23
lines changed

1 file changed

+60
-23
lines changed

WooCommerce/Classes/ViewRelated/Orders/NewNoteViewController.swift

Lines changed: 60 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -45,33 +45,12 @@ class NewNoteViewController: UIViewController {
4545
view.endEditing(true)
4646
}
4747

48-
func configureNavigation() {
49-
title = NSLocalizedString("Order #\(viewModel.order.number)", comment: "Add a note screen - title. Example: Order #15")
50-
51-
let dismissButtonTitle = NSLocalizedString("Dismiss", comment: "Add a note screen - button title for closing the view")
52-
let leftBarButton = UIBarButtonItem(title: dismissButtonTitle,
53-
style: .plain,
54-
target: self,
55-
action: #selector(dismissButtonTapped))
56-
leftBarButton.tintColor = .white
57-
navigationItem.setLeftBarButton(leftBarButton, animated: false)
58-
59-
let addButtonTitle = NSLocalizedString("Add", comment: "Add a note screen - button title to send the note")
60-
let rightBarButton = UIBarButtonItem(title: addButtonTitle,
61-
style: .done,
62-
target: self,
63-
action: #selector(addButtonTapped))
64-
rightBarButton.tintColor = .white
65-
navigationItem.setRightBarButton(rightBarButton, animated: false)
66-
navigationItem.rightBarButtonItem?.isEnabled = false
67-
}
68-
6948
@objc func dismissButtonTapped() {
7049
dismiss(animated: true, completion: nil)
7150
}
7251

7352
@objc func addButtonTapped() {
74-
navigationItem.rightBarButtonItem?.isEnabled = false
53+
switchRightButtonToProgressIndicator()
7554

7655
WooAnalytics.shared.track(.orderNoteAddButtonTapped)
7756
WooAnalytics.shared.track(.orderNoteAdd, withProperties: ["parent_id": viewModel.order.orderID,
@@ -84,7 +63,7 @@ class NewNoteViewController: UIViewController {
8463
WooAnalytics.shared.track(.orderNoteAddFailed, withError: error)
8564

8665
self?.displayErrorNotice()
87-
self?.navigationItem.rightBarButtonItem?.isEnabled = true
66+
self?.switchRightButtonToAddButton()
8867
return
8968
}
9069
WooAnalytics.shared.track(.orderNoteAddSuccess)
@@ -241,6 +220,64 @@ private extension NewNoteViewController {
241220
}
242221
}
243222

223+
// MARK: - Navigation bar
224+
//
225+
private extension NewNoteViewController {
226+
func configureNavigation() {
227+
configureTitle()
228+
configureDismissButton()
229+
configureRightButtonItemAsAdd()
230+
}
231+
232+
func configureTitle() {
233+
title = NSLocalizedString("Order #\(viewModel.order.number)",
234+
comment: "Add a note screen - title. Example: Order #15")
235+
}
236+
237+
func configureDismissButton() {
238+
let dismissButtonTitle = NSLocalizedString("Dismiss",
239+
comment: "Add a note screen - button title for closing the view")
240+
let leftBarButton = UIBarButtonItem(title: dismissButtonTitle,
241+
style: .plain,
242+
target: self,
243+
action: #selector(dismissButtonTapped))
244+
leftBarButton.tintColor = .white
245+
navigationItem.setLeftBarButton(leftBarButton, animated: false)
246+
}
247+
248+
func configureRightButtonItemAsAdd() {
249+
let addButtonTitle = NSLocalizedString("Add",
250+
comment: "Add a note screen - button title to send the note")
251+
let rightBarButton = UIBarButtonItem(title: addButtonTitle,
252+
style: .done,
253+
target: self,
254+
action: #selector(addButtonTapped))
255+
rightBarButton.tintColor = .white
256+
navigationItem.setRightBarButton(rightBarButton, animated: false)
257+
navigationItem.rightBarButtonItem?.isEnabled = false
258+
}
259+
260+
func switchRightButtonToProgressIndicator() {
261+
configureRightButtonItemAsSpinner()
262+
navigationItem.rightBarButtonItem?.isEnabled = false
263+
}
264+
265+
func configureRightButtonItemAsSpinner() {
266+
let activityIndicator = UIActivityIndicatorView(style: .white)
267+
activityIndicator.hidesWhenStopped = true
268+
activityIndicator.startAnimating()
269+
270+
let rightBarButton = UIBarButtonItem(customView: activityIndicator)
271+
272+
navigationItem.setRightBarButton(rightBarButton, animated: true)
273+
}
274+
275+
func switchRightButtonToAddButton() {
276+
configureRightButtonItemAsAdd()
277+
navigationItem.rightBarButtonItem?.isEnabled = true
278+
}
279+
}
280+
244281
// MARK: - Constants
245282
//
246283
private extension NewNoteViewController {

0 commit comments

Comments
 (0)