[+] Encapsulate http requests inside view controllers
This commit is contained in:
@@ -140,6 +140,24 @@ extension UIViewController
|
|||||||
|
|
||||||
/// More convenient dismiss function
|
/// More convenient dismiss function
|
||||||
func dismiss(_ completion: (() -> Void)? = nil) { ui { self.dismiss(animated: false, completion: completion) } }
|
func dismiss(_ completion: (() -> Void)? = nil) { ui { self.dismiss(animated: false, completion: completion) } }
|
||||||
|
|
||||||
|
/**
|
||||||
|
Send a http request even more conveniently
|
||||||
|
*/
|
||||||
|
func sendReq<T: Decodable>(_ api: API<T>, 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) }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user