Commit 564a6669 by Demid Merzlyakov

Filter alerts before fetching extended info.

parent 7ff43c41
...@@ -157,26 +157,25 @@ public class NWSAlertsManager { ...@@ -157,26 +157,25 @@ public class NWSAlertsManager {
private func fetchAllExtendedInfo(for alerts: [NWSAlert]) { private func fetchAllExtendedInfo(for alerts: [NWSAlert]) {
internalQueue.addOperation { [weak self] in internalQueue.addOperation { [weak self] in
guard let self = self else { return } guard let self = self else { return }
let localExtendedInfoBeingFetched = self.extendedInfoBeingFetched
var newAlertsToFetch = [NWSAlert]() let alertsToFetch = alerts.filter { (alert: NWSAlert) -> Bool in
alert.extendedInfo == nil && !localExtendedInfoBeingFetched.contains(alert)
}
let parser = NWSAlertInfoParser() let parser = NWSAlertInfoParser()
for alert in alerts.filter({ $0.extendedInfo == nil }) { for alert in alertsToFetch {
if !self.extendedInfoBeingFetched.contains(alert) { self.extendedInfoBeingFetched.insert(alert)
self.extendedInfoBeingFetched.insert(alert) parser.fetchExtendedInfo(for: alert) { [weak self] (weatherMessage, extendedInfo) in
parser.fetchExtendedInfo(for: alert) { [weak self] (weatherMessage, extendedInfo) in DispatchQueue.main.async { [weak self] in
DispatchQueue.main.async { [weak self] in guard let self = self else { return }
guard let self = self else { return } guard let alertIndex = self.alerts.firstIndex(where: { $0 == alert }) else {
guard let alertIndex = self.alerts.firstIndex(where: { $0 == alert }) else { return
return }
} self.alerts[alertIndex].weatherMessage = weatherMessage
self.alerts[alertIndex].weatherMessage = weatherMessage self.alerts[alertIndex].extendedInfo = extendedInfo
self.alerts[alertIndex].extendedInfo = extendedInfo self.internalQueue.addOperation {
self.internalQueue.addOperation { self.extendedInfoBeingFetched.remove(alert)
self.extendedInfoBeingFetched.remove(alert)
}
self.delegate?.extendedInfoAvailable(from: self, for: self.alerts[alertIndex])
} }
self.delegate?.extendedInfoAvailable(from: self, for: self.alerts[alertIndex])
} }
} }
} }
......
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