mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-08 22:33:26 +01:00
[Widgets]: Bug-Fix: always use widgetKind for requesting timeline reload request
This commit is contained in:
@@ -55,9 +55,9 @@ extension View
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
func pageUpButton(_ widgetID: Int?) -> some View {
|
||||
func pageUpButton(_ widgetID: Int?, _ widgetKind: String) -> some View {
|
||||
if #available(iOSApplicationExtension 17, *) {
|
||||
Button(intent: PaginationIntent(widgetID, .up)){
|
||||
Button(intent: PaginationIntent(widgetID, .up, widgetKind)){
|
||||
self
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
@@ -67,9 +67,9 @@ extension View
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
func pageDownButton(_ widgetID: Int?) -> some View {
|
||||
func pageDownButton(_ widgetID: Int?, _ widgetKind: String) -> some View {
|
||||
if #available(iOSApplicationExtension 17, *) {
|
||||
Button(intent: PaginationIntent(widgetID, .down)){
|
||||
Button(intent: PaginationIntent(widgetID, .down, widgetKind)){
|
||||
self
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
|
||||
@@ -34,22 +34,27 @@ class PaginationIntent: AppIntent, @unchecked Sendable {
|
||||
@Parameter(title: "Direction")
|
||||
var direction: String
|
||||
|
||||
@Parameter(title: "widgetKind")
|
||||
var widgetKind: String
|
||||
|
||||
required init(){}
|
||||
|
||||
init(_ widgetID: Int?, _ direction: Direction){
|
||||
// NOTE: widgetID here means the configurable value using edit widget button
|
||||
// but widgetKind is the kind set in when instantiating the widget configuration
|
||||
init(_ widgetID: Int?, _ direction: Direction, _ widgetKind: String){
|
||||
// if id was not passed in, then we assume the widget isn't customized yet
|
||||
// hence we use the common ID, if this is not present in registry of PageInfoManager
|
||||
// then it will return nil, triggering to show first page in the provider
|
||||
self.widgetID = widgetID ?? COMMON_WIDGET_ID
|
||||
self.direction = direction.rawValue
|
||||
self.widgetKind = widgetKind
|
||||
}
|
||||
|
||||
func perform() async throws -> some IntentResult {
|
||||
let widgetIdString = String(widgetID)
|
||||
DispatchQueue(label: widgetIdString).sync {
|
||||
DispatchQueue(label: String(widgetID)).sync {
|
||||
let navigationEvent = NavigationEvent(direction: Direction(rawValue: direction))
|
||||
PageInfoManager.shared.setPageInfo(for: widgetID, value: navigationEvent)
|
||||
WidgetCenter.shared.reloadTimelines(ofKind: widgetIdString)
|
||||
WidgetCenter.shared.reloadTimelines(ofKind: widgetKind)
|
||||
}
|
||||
return .result()
|
||||
}
|
||||
|
||||
@@ -18,15 +18,9 @@ class ActiveAppsTimelineProvider<T: WidgetInfo>: AppsTimelineProviderBase<Widge
|
||||
let ID: Int?
|
||||
}
|
||||
|
||||
private let dataHolder: PaginationDataHolder
|
||||
private let widgetID: String
|
||||
|
||||
init(kind: String){
|
||||
|
||||
let itemsPerPage = ActiveAppsWidget.Constants.MAX_ROWS_PER_PAGE
|
||||
self.dataHolder = PaginationDataHolder(itemsPerPage: itemsPerPage)
|
||||
self.widgetID = kind
|
||||
}
|
||||
private let dataHolder = PaginationDataHolder(
|
||||
itemsPerPage: ActiveAppsWidget.Constants.MAX_ROWS_PER_PAGE
|
||||
)
|
||||
|
||||
deinit{
|
||||
// if this provider goes out of scope, clear all entries
|
||||
|
||||
@@ -32,17 +32,18 @@ struct ActiveAppsWidget: Widget
|
||||
static let MAX_ROWS_PER_PAGE: UInt = 3
|
||||
}
|
||||
|
||||
let widgetKind = "ActiveApps - \(UUID().uuidString)"
|
||||
|
||||
public var body: some WidgetConfiguration {
|
||||
if #available(iOS 17, *)
|
||||
{
|
||||
let widgetID = "ActiveApps - \(UUID().uuidString)"
|
||||
|
||||
let widgetConfig = AppIntentConfiguration(
|
||||
kind: widgetID,
|
||||
kind: widgetKind,
|
||||
intent: WidgetUpdateIntent.self,
|
||||
provider: ActiveAppsTimelineProvider<WidgetTag>(kind: widgetID)
|
||||
provider: ActiveAppsTimelineProvider<WidgetTag>()
|
||||
) { entry in
|
||||
ActiveAppsWidgetView(entry: entry)
|
||||
ActiveAppsWidgetView(entry: entry, widgetKind: widgetKind)
|
||||
}
|
||||
.supportedFamilies([.systemMedium])
|
||||
.configurationDisplayName("Active Apps")
|
||||
@@ -63,6 +64,7 @@ struct ActiveAppsWidget: Widget
|
||||
private struct ActiveAppsWidgetView: View
|
||||
{
|
||||
var entry: AppsEntry<WidgetInfo>
|
||||
var widgetKind: String
|
||||
|
||||
@Environment(\.colorScheme)
|
||||
private var colorScheme
|
||||
@@ -204,7 +206,7 @@ private struct ActiveAppsWidgetView: View
|
||||
.frame(width: buttonWidth, height: buttonWidth)
|
||||
.opacity(0.3)
|
||||
// .mask(Capsule())
|
||||
.pageUpButton(widgetID)
|
||||
.pageUpButton(widgetID, widgetKind)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -213,7 +215,7 @@ private struct ActiveAppsWidgetView: View
|
||||
.frame(width: buttonWidth, height: buttonWidth)
|
||||
.opacity(0.3)
|
||||
// .mask(Capsule())
|
||||
.pageDownButton(widgetID)
|
||||
.pageDownButton(widgetID, widgetKind)
|
||||
}
|
||||
.padding(.vertical)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user