aboutsummaryrefslogtreecommitdiff
path: root/foray
diff options
context:
space:
mode:
Diffstat (limited to 'foray')
-rw-r--r--foray/ForayCoordinator.swift10
-rw-r--r--foray/ForayLoadingOverlay.swift37
-rw-r--r--foray/ForayTableViewController.swift12
3 files changed, 49 insertions, 10 deletions
diff --git a/foray/ForayCoordinator.swift b/foray/ForayCoordinator.swift
index 8fe6656..6497ec0 100644
--- a/foray/ForayCoordinator.swift
+++ b/foray/ForayCoordinator.swift
@@ -15,9 +15,11 @@ protocol ForayCoordinated: UIViewController {
class ForayCoordinator: Coordinator {
var childCoordinators = [Coordinator]()
var navigationController: UINavigationController
+ var loadingOverlay: ForayLoadingOverlay
init(navigationController: UINavigationController) {
self.navigationController = navigationController
+ self.loadingOverlay = ForayLoadingOverlay(viewController: navigationController)
}
private func push(vc: ForayCoordinated, animated: Bool = true) {
@@ -50,4 +52,12 @@ class ForayCoordinator: Coordinator {
detailViewController.setDetails(name: item.name, description: description, image: image)
push(vc: detailViewController)
}
+
+ func showLoading() {
+ loadingOverlay.show()
+ }
+
+ func hideLoading() {
+ loadingOverlay.hide()
+ }
}
diff --git a/foray/ForayLoadingOverlay.swift b/foray/ForayLoadingOverlay.swift
new file mode 100644
index 0000000..1aa6260
--- /dev/null
+++ b/foray/ForayLoadingOverlay.swift
@@ -0,0 +1,37 @@
+//
+// ForayLoadingOverlay.swift
+// foray
+//
+// Created by Nicholas Tay on 21/3/2022.
+//
+
+import UIKit
+
+class ForayLoadingOverlay {
+
+ var viewController: UIViewController
+
+ let loadingIndicator: UIActivityIndicatorView = {
+ let aiv = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50))
+ aiv.hidesWhenStopped = true
+ aiv.style = UIActivityIndicatorView.Style.medium
+ aiv.startAnimating()
+ return aiv
+ }()
+
+ let alert: UIAlertController = UIAlertController(title: nil, message: "Grabbing data...", preferredStyle: .alert)
+
+ init(viewController: UIViewController) {
+ self.viewController = viewController
+ alert.view.addSubview(self.loadingIndicator)
+ }
+
+ func show() {
+ viewController.present(alert, animated: true)
+ }
+
+ func hide() {
+ viewController.dismiss(animated: false)
+ }
+
+}
diff --git a/foray/ForayTableViewController.swift b/foray/ForayTableViewController.swift
index 827d4ea..2b7ba65 100644
--- a/foray/ForayTableViewController.swift
+++ b/foray/ForayTableViewController.swift
@@ -33,18 +33,9 @@ class ForayTableViewController: UITableViewController, ForayCoordinated {
tableView.register(ForayNewTableViewCell.self, forCellReuseIdentifier: "ForayNewTableViewCell")
// Not sure if this is the right way to go about this...
- let alert = UIAlertController(title: nil, message: "Grabbing data...", preferredStyle: .alert)
- let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50))
- loadingIndicator.hidesWhenStopped = true
- loadingIndicator.style = UIActivityIndicatorView.Style.medium
- loadingIndicator.startAnimating();
- alert.view.addSubview(loadingIndicator)
- present(alert, animated: true, completion: nil)
-
+ coordinator?.showLoading()
reloadApiData()
- dismiss(animated: false, completion: nil)
-
self.refreshControl = UIRefreshControl()
self.refreshControl?.addTarget(self, action: #selector(doRefresh), for: UIControl.Event.valueChanged)
}
@@ -71,6 +62,7 @@ class ForayTableViewController: UITableViewController, ForayCoordinated {
self.tableView.reloadData()
self.refreshControl?.endRefreshing()
+ self.coordinator?.hideLoading()
})
}