diff --git a/PayfritBeacon/App/AppState.swift b/PayfritBeacon/App/AppState.swift index 72db257..c88a246 100644 --- a/PayfritBeacon/App/AppState.swift +++ b/PayfritBeacon/App/AppState.swift @@ -14,6 +14,9 @@ final class AppState: ObservableObject { @Published var token: String? @Published var userId: String? + /// When true, skip auto-navigation in BusinessListView (user explicitly went back) + var skipAutoNav = false + init() { // Restore saved session if let saved = SecureStorage.loadSession() { @@ -36,6 +39,8 @@ final class AppState: ObservableObject { } func backToBusinessList() { + AppPrefs.lastBusinessId = nil + skipAutoNav = true currentScreen = .businessList } diff --git a/PayfritBeacon/Views/BusinessListView.swift b/PayfritBeacon/Views/BusinessListView.swift index 74efd03..21658c9 100644 --- a/PayfritBeacon/Views/BusinessListView.swift +++ b/PayfritBeacon/Views/BusinessListView.swift @@ -94,18 +94,22 @@ struct BusinessListView: View { let list = try await APIClient.shared.listBusinesses(token: token) businesses = list - // Auto-navigate if only one business (like Android) - if list.count == 1, let only = list.first { - appState.selectBusiness(only) - return - } + // Skip auto-navigation if user explicitly tapped Back + if !appState.skipAutoNav { + // Auto-navigate if only one business (like Android) + if list.count == 1, let only = list.first { + appState.selectBusiness(only) + return + } - // Auto-navigate to last used business - if let lastId = AppPrefs.lastBusinessId, - let last = list.first(where: { $0.id == lastId }) { - appState.selectBusiness(last) - return + // Auto-navigate to last used business + if let lastId = AppPrefs.lastBusinessId, + let last = list.first(where: { $0.id == lastId }) { + appState.selectBusiness(last) + return + } } + appState.skipAutoNav = false } catch let e as APIError where e.errorDescription == APIError.unauthorized.errorDescription { appState.logout() } catch {