Commit a32a7dfc by Demid Merzlyakov

Notifications list is properly updated.

parent 3e506463
......@@ -478,11 +478,13 @@ extension LocationManager: DeviceLocationMonitorDelegate {
// MARK: - NWSAlertsManagerDelegate
extension LocationManager: NWSAlertsManagerDelegate {
public func alertsListDidChange(in alertsManager: NWSAlertsManager) {
// do nothing
}
public func extendedInfoAvailable(from alertsManager: NWSAlertsManager, for alert: NWSAlert) {
DispatchQueue.main.async {
if let alertIndex = self.selectedLocation?.notifications?.nwsAlerts.firstIndex(of: alert) {
self.selectedLocation?.notifications?.nwsAlerts[alertIndex] = alert
}
if let alertIndex = self.selectedLocation?.notifications?.nwsAlerts.firstIndex(of: alert) {
self.selectedLocation?.notifications?.nwsAlerts[alertIndex] = alert
}
}
}
......@@ -16,7 +16,8 @@ public enum NWSError: Error {
}
public protocol NWSAlertsManagerDelegate: class {
func extendedInfoAvailable(from alertsManager: NWSAlertsManager, for alert: NWSAlert)
func alertsListDidChange(in alertsManager: NWSAlertsManager)
func extendedInfoAvailable(from alertsManager: NWSAlertsManager, for alert: NWSAlert)
}
public class NWSAlertsManager {
......@@ -202,6 +203,7 @@ public class NWSAlertsManager {
// A deadlock shouldn't happen unless main thread waits on internalQueue, which it doesn't.
DispatchQueue.main.sync {
self.alerts = resultingAlerts
self.delegate?.alertsListDidChange(in: self)
}
fetchAllExtendedInfo(for: resultingAlerts)
}
......
......@@ -9,9 +9,25 @@ import Foundation
class NotificationsViewModel: ViewModelProtocol {
public weak var delegate:ViewModelDelegate?
private let alertsManager: NWSAlertsManager = LocationManager.shared.nwsAlertsManager
private let alertsManager: NWSAlertsManager
public init(alertsManager: NWSAlertsManager = LocationManager.shared.nwsAlertsManager) {
self.alertsManager = alertsManager
alertsManager.delegate = self
}
public var alerts: [NWSAlert] {
alertsManager.alerts
}
}
extension NotificationsViewModel: NWSAlertsManagerDelegate {
func extendedInfoAvailable(from alertsManager: NWSAlertsManager, for alert: NWSAlert) {
self.delegate?.viewModelDidChange(model: self)
}
func alertsListDidChange(in alertsManager: NWSAlertsManager) {
self.delegate?.viewModelDidChange(model: self)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment