// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import Foundation
import WidgetKit
/// Helper class to update timelines for WidgetKit widgets.
public final class WidgetTimelinesUpdater: NSObject {
/// The queue onto which time-consuming work is dispatched.
private static let queue = DispatchQueue(label: "com.google.chrome.ios.WidgetTimelinesUpdater")
/// Updates timelines for all shared widgets.
///
/// Whether or not widgets are actually updated depends on many factors
/// governed by an OS level budgeting system. Widgets are guaranteed
/// to be updated if the main app is in the foreground.
///
/// This method is safe to call from any thread.
@objc(reloadAllTimelines)
public static func reloadAllTimelines() {
queue.async {
WidgetCenter.shared.reloadAllTimelines()
}
}
/// Updates timelines of a widget kind.
@objc(reloadTimelinesOfKind:)
public static func reloadTimelines(ofKind kind: String) {
queue.async {
WidgetCenter.shared.reloadTimelines(ofKind: kind)
}
}
}