Skip to content

Commit 9811d06

Browse files
committed
Swap the Add button with an spinner when tapping Add in the new note editor
1 parent bff635c commit 9811d06

File tree

1 file changed

+58
-33
lines changed

1 file changed

+58
-33
lines changed

WooCommerce/Classes/ViewRelated/Orders/NewNoteViewController.swift

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

48-
func configureNavigation() {
49-
configureTitle()
50-
configureDismissButton()
51-
configureAddButton()
52-
}
53-
54-
private func configureTitle() {
55-
title = NSLocalizedString("Order #\(viewModel.order.number)", comment: "Add a note screen - title. Example: Order #15")
56-
}
57-
58-
private func configureDismissButton() {
59-
let dismissButtonTitle = NSLocalizedString("Dismiss", comment: "Add a note screen - button title for closing the view")
60-
let leftBarButton = UIBarButtonItem(title: dismissButtonTitle,
61-
style: .plain,
62-
target: self,
63-
action: #selector(dismissButtonTapped))
64-
leftBarButton.tintColor = .white
65-
navigationItem.setLeftBarButton(leftBarButton, animated: false)
66-
}
67-
68-
private func configureAddButton() {
69-
let addButtonTitle = NSLocalizedString("Add", comment: "Add a note screen - button title to send the note")
70-
let rightBarButton = UIBarButtonItem(title: addButtonTitle,
71-
style: .done,
72-
target: self,
73-
action: #selector(addButtonTapped))
74-
rightBarButton.tintColor = .white
75-
navigationItem.setRightBarButton(rightBarButton, animated: false)
76-
navigationItem.rightBarButtonItem?.isEnabled = false
77-
}
78-
7948
@objc func dismissButtonTapped() {
8049
dismiss(animated: true, completion: nil)
8150
}
8251

8352
@objc func addButtonTapped() {
84-
navigationItem.rightBarButtonItem?.isEnabled = false
53+
switchRightButtonToProgressIndicator()
8554

8655
WooAnalytics.shared.track(.orderNoteAddButtonTapped)
8756
WooAnalytics.shared.track(.orderNoteAdd, withProperties: ["parent_id": viewModel.order.orderID,
@@ -94,7 +63,7 @@ class NewNoteViewController: UIViewController {
9463
WooAnalytics.shared.track(.orderNoteAddFailed, withError: error)
9564

9665
self?.displayErrorNotice()
97-
self?.navigationItem.rightBarButtonItem?.isEnabled = true
66+
self?.switchRightButtonToAddButton()
9867
return
9968
}
10069
WooAnalytics.shared.track(.orderNoteAddSuccess)
@@ -251,6 +220,62 @@ private extension NewNoteViewController {
251220
}
252221
}
253222

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

0 commit comments

Comments
 (0)