From 2a3fc8d5d798091690e49047616b3c8592d4af8d Mon Sep 17 00:00:00 2001 From: treyt Date: Fri, 20 Feb 2026 21:38:13 -0600 Subject: [PATCH 1/3] fix: resolve issue #1 - Follow teams Automated fix by Tony CI. Closes #1 Co-Authored-By: Claude --- .../Trip/Views/Wizard/Steps/TeamPickerStep.swift | 9 +++++---- .../Features/Trip/Views/Wizard/TeamFirstWizardStep.swift | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/SportsTime/Features/Trip/Views/Wizard/Steps/TeamPickerStep.swift b/SportsTime/Features/Trip/Views/Wizard/Steps/TeamPickerStep.swift index 9bc11d5..d0796bd 100644 --- a/SportsTime/Features/Trip/Views/Wizard/Steps/TeamPickerStep.swift +++ b/SportsTime/Features/Trip/Views/Wizard/Steps/TeamPickerStep.swift @@ -116,7 +116,8 @@ struct TeamPickerStep: View { .sheet(isPresented: $showTeamPicker) { TeamPickerSheet( selectedSport: $selectedSport, - selectedTeamId: $selectedTeamId + selectedTeamId: $selectedTeamId, + isPresented: $showTeamPicker ) } } @@ -125,11 +126,11 @@ struct TeamPickerStep: View { // MARK: - Team Picker Sheet private struct TeamPickerSheet: View { - @Environment(\.dismiss) private var dismiss @Environment(\.colorScheme) private var colorScheme @Binding var selectedSport: Sport? @Binding var selectedTeamId: String? + @Binding var isPresented: Bool var body: some View { NavigationStack { @@ -142,7 +143,7 @@ private struct TeamPickerSheet: View { onSelect: { teamId in selectedSport = sport selectedTeamId = teamId - dismiss() + isPresented = false } ) } label: { @@ -171,7 +172,7 @@ private struct TeamPickerSheet: View { .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .cancellationAction) { - Button("Cancel") { dismiss() } + Button("Cancel") { isPresented = false } } } } diff --git a/SportsTime/Features/Trip/Views/Wizard/TeamFirstWizardStep.swift b/SportsTime/Features/Trip/Views/Wizard/TeamFirstWizardStep.swift index 954c8a5..461435f 100644 --- a/SportsTime/Features/Trip/Views/Wizard/TeamFirstWizardStep.swift +++ b/SportsTime/Features/Trip/Views/Wizard/TeamFirstWizardStep.swift @@ -115,7 +115,8 @@ struct TeamFirstWizardStep: View { .sheet(isPresented: $showTeamPicker) { TeamFirstPickerSheet( selectedSport: $selectedSport, - selectedTeamIds: $selectedTeamIds + selectedTeamIds: $selectedTeamIds, + isPresented: $showTeamPicker ) } } @@ -184,11 +185,11 @@ struct TeamFirstWizardStep: View { // MARK: - Team First Picker Sheet private struct TeamFirstPickerSheet: View { - @Environment(\.dismiss) private var dismiss @Environment(\.colorScheme) private var colorScheme @Binding var selectedSport: Sport? @Binding var selectedTeamIds: Set + @Binding var isPresented: Bool var body: some View { NavigationStack { @@ -200,7 +201,7 @@ private struct TeamFirstPickerSheet: View { selectedTeamIds: $selectedTeamIds, onDone: { selectedSport = sport - dismiss() + isPresented = false } ) } label: { @@ -229,7 +230,7 @@ private struct TeamFirstPickerSheet: View { .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .cancellationAction) { - Button("Cancel") { dismiss() } + Button("Cancel") { isPresented = false } } } } From ad3febf69bfd516d5369362608a725a5702a5861 Mon Sep 17 00:00:00 2001 From: treyt Date: Sat, 21 Feb 2026 01:41:17 -0600 Subject: [PATCH 2/3] fix: resolve issue #2 - By router planning Automated fix by Tony CI. Closes #2 Co-Authored-By: Claude --- SportsTime/Planning/Engine/ScenarioCPlanner.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/SportsTime/Planning/Engine/ScenarioCPlanner.swift b/SportsTime/Planning/Engine/ScenarioCPlanner.swift index 6188f9b..93509d7 100644 --- a/SportsTime/Planning/Engine/ScenarioCPlanner.swift +++ b/SportsTime/Planning/Engine/ScenarioCPlanner.swift @@ -215,6 +215,7 @@ final class ScenarioCPlanner: ScenarioPlanner { from: gamesInRange, stadiums: request.stadiums, anchorGameIds: [], // No anchors in Scenario C + allowRepeatCities: request.preferences.allowRepeatCities, stopBuilder: buildStops ) From d98acd6a9ac7bf81e00e920a967a8190ec0c33e4 Mon Sep 17 00:00:00 2001 From: treyt Date: Sat, 21 Feb 2026 18:03:09 -0600 Subject: [PATCH 3/3] fix: resolve issue #3 - Iap coupon Automated fix by Tony CI v3. Closes #3 Co-Authored-By: Claude --- SportsTime/Features/Paywall/Views/PaywallView.swift | 1 + SportsTime/Features/Settings/Views/SettingsView.swift | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/SportsTime/Features/Paywall/Views/PaywallView.swift b/SportsTime/Features/Paywall/Views/PaywallView.swift index 6e6da67..69e0724 100644 --- a/SportsTime/Features/Paywall/Views/PaywallView.swift +++ b/SportsTime/Features/Paywall/Views/PaywallView.swift @@ -74,6 +74,7 @@ struct PaywallView: View { } } .storeButton(.visible, for: .restorePurchases) + .storeButton(.visible, for: .redeemCode) .subscriptionStoreControlStyle(.prominentPicker) .subscriptionStoreButtonLabel(.displayName.multiline) .onInAppPurchaseStart { product in diff --git a/SportsTime/Features/Settings/Views/SettingsView.swift b/SportsTime/Features/Settings/Views/SettingsView.swift index af18bbe..95eba1f 100644 --- a/SportsTime/Features/Settings/Views/SettingsView.swift +++ b/SportsTime/Features/Settings/Views/SettingsView.swift @@ -3,6 +3,7 @@ // SportsTime // +import StoreKit import SwiftUI struct SettingsView: View { @@ -11,6 +12,7 @@ struct SettingsView: View { @State private var viewModel = SettingsViewModel() @State private var showResetConfirmation = false @State private var showPaywall = false + @State private var showRedeemCode = false @State private var showOnboardingPaywall = false @State private var showSyncLogs = false @State private var isSyncActionInProgress = false @@ -79,6 +81,7 @@ struct SettingsView: View { .sheet(isPresented: $showPaywall) { PaywallView(source: "settings") } + .offerCodeRedemption(isPresented: $showRedeemCode) .sheet(isPresented: $showOnboardingPaywall) { OnboardingPaywallView(isPresented: $showOnboardingPaywall) } @@ -812,6 +815,13 @@ struct SettingsView: View { Label("Restore Purchases", systemImage: "arrow.clockwise") } .accessibilityIdentifier("settings.restorePurchasesButton") + + Button { + showRedeemCode = true + } label: { + Label("Redeem Code", systemImage: "giftcard") + } + .accessibilityIdentifier("settings.redeemCodeButton") } } header: { Text("Subscription")