Skip to content

Commit

Permalink
Merge pull request #139 from blackgold9/sv/memory
Browse files Browse the repository at this point in the history
Fixed memory leak in HassAPI
  • Loading branch information
robbiet480 committed Sep 5, 2018
2 parents 6949f05 + feb4557 commit c17440f
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 12 deletions.
22 changes: 12 additions & 10 deletions HomeAssistant/Location/RegionManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ class RegionManager: NSObject {
locationManager.allowsBackgroundLocationUpdates = true
locationManager.delegate = self
locationManager.distanceFilter = kCLLocationAccuracyHundredMeters
startMonitoring()
syncMonitoredRegions()
self.startMonitoring()
self.syncMonitoredRegions()
}

private func startMonitoring() {
Expand Down Expand Up @@ -113,22 +113,22 @@ class RegionManager: NSObject {
locationManager.startMonitoring(for: region)
}

activityManager.startActivityUpdates(to: coreMotionQueue) { activity in
self.lastActivity = activity
activityManager.startActivityUpdates(to: coreMotionQueue) { [weak self] activity in
self?.lastActivity = activity
}
}

@objc func syncMonitoredRegions() {
// stop monitoring for all regions
locationManager.monitoredRegions.forEach { region in
// stop monitoring for all regions
locationManager.monitoredRegions.forEach { [weak self] region in
print("Stopping monitoring of region \(region.identifier)")
locationManager.stopMonitoring(for: region)
self?.locationManager.stopMonitoring(for: region)
}

// start monitoring for all existing regions
zones.forEach { zone in
zones.forEach { [weak self] zone in
print("Starting monitoring of zone \(zone)")
startMonitoring(zone: zone)
self?.startMonitoring(zone: zone)
}
}

Expand All @@ -146,7 +146,8 @@ class RegionManager: NSObject {
// MARK: CLLocationManagerDelegate

extension RegionManager: CLLocationManagerDelegate {
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
func locationManager(_ manager: CLLocationManager,
didChangeAuthorization status: CLAuthorizationStatus) {
if status == .authorizedAlways {
prefs.setValue(true, forKey: "locationEnabled")
prefs.synchronize()
Expand Down Expand Up @@ -205,6 +206,7 @@ extension RegionManager: CLLocationManagerDelegate {
let locErr = LocationError(err: clErr)
realm.add(locErr)
}

print("Received CLError:", clErr.debugDescription)
if clErr.code == CLError.locationUnknown {
// locationUnknown just means that GPS may be taking an extra moment, so don't throw an error.
Expand Down
7 changes: 5 additions & 2 deletions Shared/API/HAAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,11 @@ public class HomeAssistantAPI {
self.manager = self.configureSessionManager(withPassword: apiPassword)
case .modern(let tokenInfo):
self.tokenManager = TokenManager(connectionInfo: connectionInfo, tokenInfo: tokenInfo)
tokenManager?.authenticationRequiredCallback = {
return self.authenticationController.authenticateWithBrowser(at: connectionInfo.baseURL)
tokenManager?.authenticationRequiredCallback = { [weak self] in
guard let authenticationController = self?.authenticationController else {
return Promise(error: HomeAssistantAPIError.unknown)
}
return authenticationController.authenticateWithBrowser(at: connectionInfo.baseURL)
}
let manager = self.configureSessionManager()
manager.retrier = self.tokenManager
Expand Down

0 comments on commit c17440f

Please sign in to comment.