Commit 564a6669 by Demid Merzlyakov

Filter alerts before fetching extended info.

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