session-ios/Session/Utilities/BackgroundPoller.swift

29 lines
1.1 KiB
Swift
Raw Normal View History

2020-09-15 03:30:45 +02:00
import PromiseKit
@objc(LKBackgroundPoller)
public final class BackgroundPoller : NSObject {
2020-09-18 08:12:19 +02:00
private static var closedGroupPoller: ClosedGroupPoller!
2020-09-15 03:30:45 +02:00
private override init() { }
@objc(pollWithCompletionHandler:)
public static func poll(completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
var promises: [Promise<Void>] = []
2020-11-16 00:34:47 +01:00
// TODO TODO TODO
// promises.append(AppEnvironment.shared.messageFetcherJob.run()) // FIXME: It'd be nicer to just use Poller directly
2020-09-18 08:12:19 +02:00
closedGroupPoller = ClosedGroupPoller()
promises.append(contentsOf: closedGroupPoller.pollOnce())
2020-11-19 05:24:09 +01:00
let openGroups: [String:OpenGroup] = Storage.shared.getAllUserOpenGroups()
2020-09-15 03:30:45 +02:00
openGroups.values.forEach { openGroup in
2020-11-19 05:24:09 +01:00
let poller = OpenGroupPoller(for: openGroup)
2020-09-15 03:30:45 +02:00
poller.stop()
promises.append(poller.pollForNewMessages())
}
when(resolved: promises).done { _ in
completionHandler(.newData)
}.catch { _ in
completionHandler(.failed)
}
}
}