From 39dd83f2872ec3dcec91d2d09ca06121ea2600c9 Mon Sep 17 00:00:00 2001 From: Hykilpikonna Date: Fri, 22 Jan 2021 18:09:42 -0500 Subject: [PATCH] [+] Encapsulate http requests inside view controllers --- ProjectClock/Utils.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ProjectClock/Utils.swift b/ProjectClock/Utils.swift index 90ad1c6..5edb7d6 100644 --- a/ProjectClock/Utils.swift +++ b/ProjectClock/Utils.swift @@ -140,6 +140,24 @@ extension UIViewController /// More convenient dismiss function func dismiss(_ completion: (() -> Void)? = nil) { ui { self.dismiss(animated: false, completion: completion) } } + + /** + Send a http request even more conveniently + */ + func sendReq(_ api: API, title: String, errors: [String: String] = [:], params: [String: String]? = [:], _ success: @escaping (T) -> Void, err: @escaping (String) -> Void = {it in}) + { + // Send request + let a = alert(title, "Please Wait") + send(api, params) { it in a.dismiss { success(it) } } + err: + { + // Display error message + print("===== Error: \($0) =====") + let message = errors[$0.trimmingCharacters(in: .whitespaces)] + ?? "Maybe the server is on fire, just wait a few hours." + a.dismiss { self.msg("An error occurred", message) } + } + } }