Skip to content

Commit

Permalink
Run the setup call frequently without checking configured status first
Browse files Browse the repository at this point in the history
  • Loading branch information
robbiet480 committed Apr 24, 2017
1 parent c64345a commit c467e3b
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 58 deletions.
65 changes: 17 additions & 48 deletions HomeAssistant/AppDelegate.swift
Expand Up @@ -36,12 +36,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
print("Realm file path", Realm.Configuration.defaultConfiguration.fileURL!.path)
Fabric.with([Crashlytics.self])

if HomeAssistantAPI.sharedInstance.Configured == false {
if let baseURL = keychain["baseURL"], let apiPass = keychain["apiPassword"] {
HomeAssistantAPI.sharedInstance.Setup(baseURLString: baseURL, password: apiPass,
deviceID: keychain["deviceID"])
}
}
HomeAssistantAPI.sharedInstance.Setup(baseURLString: keychain["baseURL"], password: keychain["apiPassword"],
deviceID: keychain["deviceID"])

if launchOptions?[UIApplicationLaunchOptionsKey.location] != nil {
resumeRegionMonitoring()
Expand Down Expand Up @@ -129,12 +125,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("Received remote notification in completion handler!")

if HomeAssistantAPI.sharedInstance.Configured == false {
if let baseURL = keychain["baseURL"], let apiPass = keychain["apiPassword"] {
HomeAssistantAPI.sharedInstance.Setup(baseURLString: baseURL, password: apiPass,
deviceID: keychain["deviceID"])
}
}
HomeAssistantAPI.sharedInstance.Setup(baseURLString: keychain["baseURL"], password: keychain["apiPassword"],
deviceID: keychain["deviceID"])

if let userInfoDict = userInfo as? [String:Any] {
if let hadict = userInfoDict["homeassistant"] as? [String:String] {
Expand Down Expand Up @@ -173,12 +165,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
let timestamp = DateFormatter.localizedString(from: Date(), dateStyle: .medium, timeStyle: .short)
print("Background fetch activated at \(timestamp)!")
if HomeAssistantAPI.sharedInstance.Configured == false {
if let baseURL = keychain["baseURL"], let apiPass = keychain["apiPassword"] {
HomeAssistantAPI.sharedInstance.Setup(baseURLString: baseURL, password: apiPass,
deviceID: keychain["deviceID"])
}
}
HomeAssistantAPI.sharedInstance.Setup(baseURLString: keychain["baseURL"], password: keychain["apiPassword"],
deviceID: keychain["deviceID"])
if HomeAssistantAPI.sharedInstance.locationEnabled {
HomeAssistantAPI.sharedInstance.getAndSendLocation(trigger: .BackgroundFetch).then { success -> Void in
if success == true {
Expand Down Expand Up @@ -206,12 +194,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
forRemoteNotification userInfo: [AnyHashable : Any],
withResponseInfo responseInfo: [AnyHashable : Any],
completionHandler: @escaping () -> Void) {
if HomeAssistantAPI.sharedInstance.Configured == false {
if let baseURL = keychain["baseURL"], let apiPass = keychain["apiPassword"] {
HomeAssistantAPI.sharedInstance.Setup(baseURLString: baseURL, password: apiPass,
deviceID: keychain["deviceID"])
}
}
HomeAssistantAPI.sharedInstance.Setup(baseURLString: keychain["baseURL"], password: keychain["apiPassword"],
deviceID: keychain["deviceID"])
var userInput: String?
if let userText = responseInfo[UIUserNotificationActionResponseTypedTextKey] as? String {
userInput = userText
Expand All @@ -224,12 +208,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ app: UIApplication,
open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
if HomeAssistantAPI.sharedInstance.Configured == false {
if let baseURL = keychain["baseURL"], let apiPass = keychain["apiPassword"] {
HomeAssistantAPI.sharedInstance.Setup(baseURLString: baseURL, password: apiPass,
deviceID: keychain["deviceID"])
}
}
HomeAssistantAPI.sharedInstance.Setup(baseURLString: keychain["baseURL"], password: keychain["apiPassword"],
deviceID: keychain["deviceID"])
var serviceData: [String:String] = url.queryItems!
serviceData["sourceApplication"] = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String
switch url.host! {
Expand Down Expand Up @@ -258,12 +238,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
Location.getLocation(accuracy: .neighborhood, frequency: .significant, timeout: nil,
success: { (_, location) -> (Void) in

if HomeAssistantAPI.sharedInstance.Configured == false {
if let baseURL = keychain["baseURL"], let apiPass = keychain["apiPassword"] {
HomeAssistantAPI.sharedInstance.Setup(baseURLString: baseURL, password: apiPass,
deviceID: keychain["deviceID"])
}
}
HomeAssistantAPI.sharedInstance.Setup(baseURLString: keychain["baseURL"],
password: keychain["apiPassword"],
deviceID: keychain["deviceID"])

HomeAssistantAPI.sharedInstance.submitLocation(updateType: .SignificantLocationUpdate,
coordinates: location.coordinate,
Expand All @@ -280,12 +257,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {

func resumeRegionMonitoring() {
if HomeAssistantAPI.sharedInstance.locationEnabled {
if HomeAssistantAPI.sharedInstance.Configured == false {
if let baseURL = keychain["baseURL"], let apiPass = keychain["apiPassword"] {
HomeAssistantAPI.sharedInstance.Setup(baseURLString: baseURL, password: apiPass,
deviceID: keychain["deviceID"])
}
}
HomeAssistantAPI.sharedInstance.Setup(baseURLString: keychain["baseURL"], password: keychain["apiPassword"],
deviceID: keychain["deviceID"])

HomeAssistantAPI.sharedInstance.beaconManager.resumeScanning()
}
Expand All @@ -298,12 +271,8 @@ extension AppDelegate: UNUserNotificationCenterDelegate {
public func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
if HomeAssistantAPI.sharedInstance.Configured == false {
if let baseURL = keychain["baseURL"], let apiPass = keychain["apiPassword"] {
HomeAssistantAPI.sharedInstance.Setup(baseURLString: baseURL, password: apiPass,
deviceID: keychain["deviceID"])
}
}
HomeAssistantAPI.sharedInstance.Setup(baseURLString: keychain["baseURL"], password: keychain["apiPassword"],
deviceID: keychain["deviceID"])
var userText: String?
if let textInput = response as? UNTextInputNotificationResponse {
userText = textInput.userText
Expand Down
4 changes: 4 additions & 0 deletions HomeAssistant/HAAPI.swift
Expand Up @@ -89,6 +89,10 @@ public class HomeAssistantAPI {
}

func Setup(baseURLString: String?, password: String?, deviceID: String?) {
if self.Configured == true {
print("HAAPI already configured, returning from Setup")
return
}
if let baseURLString = baseURLString {
if let baseURL = URL(string: baseURLString) {
self.baseURL = baseURL
Expand Down
20 changes: 10 additions & 10 deletions HomeAssistant/Views/RootTabBarViewController.swift
Expand Up @@ -25,9 +25,16 @@ class RootTabBarViewController: UITabBarController, UITabBarControllerDelegate {

override func viewDidAppear(_ animated: Bool) {
let hud = MBProgressHUD.showAdded(to: self.view, animated: true)
if let baseURL = keychain["baseURL"], let apiPass = keychain["apiPassword"] {
HomeAssistantAPI.sharedInstance.Setup(baseURLString: baseURL, password: apiPass,
deviceID: keychain["deviceID"])
HomeAssistantAPI.sharedInstance.Setup(baseURLString: keychain["baseURL"], password: keychain["apiPassword"],
deviceID: keychain["deviceID"])
if HomeAssistantAPI.sharedInstance.Configured == false {
let settingsView = SettingsViewController()
settingsView.doneButton = true
let navController = UINavigationController(rootViewController: settingsView)
self.present(navController, animated: true, completion: {
hud.hide(animated: true)
})
} else {
HomeAssistantAPI.sharedInstance.Connect().then { _ -> Void in
if HomeAssistantAPI.sharedInstance.notificationsEnabled {
UIApplication.shared.registerForRemoteNotifications()
Expand All @@ -46,13 +53,6 @@ class RootTabBarViewController: UITabBarController, UITabBarControllerDelegate {
let navController = UINavigationController(rootViewController: settingsView)
self.present(navController, animated: true, completion: nil)
}
} else {
let settingsView = SettingsViewController()
settingsView.doneButton = true
let navController = UINavigationController(rootViewController: settingsView)
self.present(navController, animated: true, completion: {
hud.hide(animated: true)
})
}
}

Expand Down

0 comments on commit c467e3b

Please sign in to comment.