diff --git a/AltWidget/Extensions/View+AltWidget.swift b/AltWidget/Extensions/View+AltWidget.swift index 9a7f7974..ce04c510 100644 --- a/AltWidget/Extensions/View+AltWidget.swift +++ b/AltWidget/Extensions/View+AltWidget.swift @@ -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) diff --git a/AltWidget/Intents/PaginationIntent.swift b/AltWidget/Intents/PaginationIntent.swift index 7161636a..220981e4 100644 --- a/AltWidget/Intents/PaginationIntent.swift +++ b/AltWidget/Intents/PaginationIntent.swift @@ -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() } diff --git a/AltWidget/Providers/ActiveAppsTimelineProvider.swift b/AltWidget/Providers/ActiveAppsTimelineProvider.swift index 615f85d9..148fecdd 100644 --- a/AltWidget/Providers/ActiveAppsTimelineProvider.swift +++ b/AltWidget/Providers/ActiveAppsTimelineProvider.swift @@ -18,15 +18,9 @@ class ActiveAppsTimelineProvider: AppsTimelineProviderBase(kind: widgetID) + provider: ActiveAppsTimelineProvider() ) { 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 + 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) }