diff --git a/Lendair/Views/ChallengesView.swift b/Lendair/Views/ChallengesView.swift index cdda4b12f..991883747 100644 --- a/Lendair/Views/ChallengesView.swift +++ b/Lendair/Views/ChallengesView.swift @@ -4,7 +4,7 @@ struct ChallengesView: View { @StateObject private var viewModel = ChallengeViewModel() @State private var showingCreateSheet = false @State private var selectedTab: ChallengeTab = .active - @State private var lastError: ChallengeError? + @State private var alertIsPresented = false enum ChallengeTab: String, CaseIterable { case active, upcoming, completed @@ -35,11 +35,19 @@ struct ChallengesView: View { .sheet(isPresented: $showingCreateSheet) { CreateChallengeSheet(viewModel: viewModel) } - .alert("Error", isPresented: .init(get: { viewModel.error != nil }, set: { if !$0 { lastError = viewModel.error } })) { - Button("OK") { lastError = viewModel.error } + .alert("Error", isPresented: $alertIsPresented) { + Button("OK") { + viewModel.error = nil + alertIsPresented = false + } } message: { Text(viewModel.error?.errorDescription ?? "") } + .onChange(of: viewModel.error) { _ in + if viewModel.error != nil { + alertIsPresented = true + } + } } .onAppear { Task { diff --git a/Lendair/Views/ClubsView.swift b/Lendair/Views/ClubsView.swift index 5d05b3286..3bb278ece 100644 --- a/Lendair/Views/ClubsView.swift +++ b/Lendair/Views/ClubsView.swift @@ -4,7 +4,7 @@ struct ClubsView: View { @StateObject private var viewModel = ClubViewModel() @State private var showingCreateSheet = false @State private var selectedTab: ClubTab = .discover - @State private var lastError: ClubError? + @State private var alertIsPresented = false enum ClubTab: String, CaseIterable { case discover, myClubs @@ -35,11 +35,19 @@ struct ClubsView: View { .sheet(isPresented: $showingCreateSheet) { CreateClubSheet(viewModel: viewModel) } - .alert("Error", isPresented: .init(get: { viewModel.error != nil }, set: { if !$0 { lastError = nil } })) { - Button("OK") { lastError = viewModel.error } + .alert("Error", isPresented: $alertIsPresented) { + Button("OK") { + viewModel.error = nil + alertIsPresented = false + } } message: { Text(viewModel.error?.errorDescription ?? "") } + .onChange(of: viewModel.error) { _ in + if viewModel.error != nil { + alertIsPresented = true + } + } } .onAppear { Task {