From 03aa70e9895440c17b46374ebdb2b689e4725856 Mon Sep 17 00:00:00 2001 From: Raz Date: Sun, 5 May 2024 12:13:04 +0200 Subject: [PATCH 1/2] fix search view model --- .../GroupStageTeamReplacementView.swift | 29 +++++++++--- .../Views/Navigation/Umpire/UmpireView.swift | 44 +++++++++++-------- .../Shared/SelectablePlayerListView.swift | 3 +- 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/PadelClub/Views/GroupStage/Shared/GroupStageTeamReplacementView.swift b/PadelClub/Views/GroupStage/Shared/GroupStageTeamReplacementView.swift index e37e36b..c4510ea 100644 --- a/PadelClub/Views/GroupStage/Shared/GroupStageTeamReplacementView.swift +++ b/PadelClub/Views/GroupStage/Shared/GroupStageTeamReplacementView.swift @@ -12,7 +12,19 @@ struct GroupStageTeamReplacementView: View { let teamRange: TeamRegistration.TeamRange? let teamRangeExtended: TeamRegistration.TeamRange? @State private var selectedPlayer: PlayerRegistration? + @State private var selectedRange: TeamRegistration.TeamRange? + var presentSearchView: Binding { + Binding { + selectedRange != nil + } set: { newValue in + if newValue == false { + selectedRange = nil + } + } + } + + init(team: TeamRegistration) { self.team = team self.teamRange = team.replacementRange() @@ -68,7 +80,9 @@ struct GroupStageTeamReplacementView: View { Section { TeamRangeView(teamRange: teamRange, playerWeight: _getWeight()) if selectedPlayer != nil { - _searchLinkView(teamRange) + RowButtonView("Chercher dans vos clubs favoris") { + selectedRange = teamRange + } } } header: { Text("Même position en poule") @@ -80,7 +94,9 @@ struct GroupStageTeamReplacementView: View { Section { TeamRangeView(teamRange: teamRangeExtended, playerWeight: _getWeight()) if selectedPlayer != nil { - _searchLinkView(teamRangeExtended) + RowButtonView("Chercher dans vos clubs favoris") { + selectedRange = teamRangeExtended + } } } header: { Text("Même ligne en poule") @@ -93,14 +109,17 @@ struct GroupStageTeamReplacementView: View { .navigationTitle("Remplacement") .navigationBarTitleDisplayMode(.inline) .toolbarBackground(.visible, for: .navigationBar) + .sheet(isPresented: presentSearchView) { + if let selectedRange { + _searchLinkView(selectedRange) + } + } } private func _searchLinkView(_ teamRange: TeamRegistration.TeamRange) -> some View { - NavigationLink { + NavigationStack { let tournament = team.tournamentObject() SelectablePlayerListView(searchField: _searchableRange(teamRange), dataSet: .favoriteClubs, filterOption: tournament?.tournamentCategory.playerFilterOption ?? .all, sortOption: .rank, showFemaleInMaleAssimilation: true, tokens: [_searchToken(teamRange)], hidePlayers: tournament?.selectedPlayers().compactMap { $0.licenceId }) - } label: { - Text("Chercher dans vos clubs favoris") } } diff --git a/PadelClub/Views/Navigation/Umpire/UmpireView.swift b/PadelClub/Views/Navigation/Umpire/UmpireView.swift index 67952e7..c68d959 100644 --- a/PadelClub/Views/Navigation/Umpire/UmpireView.swift +++ b/PadelClub/Views/Navigation/Umpire/UmpireView.swift @@ -12,6 +12,8 @@ import LeStorage struct UmpireView: View { @Environment(NavigationViewModel.self) private var navigation: NavigationViewModel @EnvironmentObject var dataStore: DataStore + @State private var presentSearchView: Bool = false + var lastDataSource: String? { dataStore.appSettings.lastDataSource } @@ -56,25 +58,8 @@ struct UmpireView: View { ImportedPlayerView(player: currentPlayerData) } } else { - NavigationLink { - SelectablePlayerListView(allowSelection: 1, searchField: user.firstName + " " + user.lastName, playerSelectionAction: { players in - if let player = players.first { - user.licenceId = player.license - if user.clubsObjects().contains(where: { $0.code == player.clubCode }) == false { - let userClub = Club.findOrCreate(name: player.clubName!, code: player.clubCode) - do { - try dataStore.clubs.addOrUpdate(instance: userClub) - user.setUserClub(userClub) - try dataStore.userStorage.update() - } catch { - Logger.error(error) - } - } - } - }) - .id(UUID()) - } label: { - Label("Ma fiche joueur", systemImage: "person.bust.circle.fill") + RowButtonView("Ma fiche joueur", systemImage: "person.bust.circle.fill") { + presentSearchView = true } } } header: { @@ -161,6 +146,27 @@ struct UmpireView: View { // } } .navigationTitle("Juge-Arbitre") + .sheet(isPresented: $presentSearchView) { + if let user = dataStore.user { + NavigationStack { + SelectablePlayerListView(allowSelection: 1, searchField: user.firstName + " " + user.lastName, playerSelectionAction: { players in + if let player = players.first { + user.licenceId = player.license + if user.clubsObjects().contains(where: { $0.code == player.clubCode }) == false { + let userClub = Club.findOrCreate(name: player.clubName!, code: player.clubCode) + do { + try dataStore.clubs.addOrUpdate(instance: userClub) + user.setUserClub(userClub) + try dataStore.userStorage.update() + } catch { + Logger.error(error) + } + } + } + }) + } + } + } } } } diff --git a/PadelClub/Views/Shared/SelectablePlayerListView.swift b/PadelClub/Views/Shared/SelectablePlayerListView.swift index 149057b..402cadf 100644 --- a/PadelClub/Views/Shared/SelectablePlayerListView.swift +++ b/PadelClub/Views/Shared/SelectablePlayerListView.swift @@ -38,6 +38,7 @@ struct SelectablePlayerListView: View { self.allowSelection = allowSelection self.playerSelectionAction = playerSelectionAction self.contentUnavailableAction = contentUnavailableAction + self.searchText = searchField ?? "" let searchViewModel = SearchViewModel() searchViewModel.tokens = tokens searchViewModel.searchText = searchField ?? "" @@ -127,7 +128,7 @@ struct SelectablePlayerListView: View { } .onAppear { searchViewModel.mostRecentDate = mostRecentDate - if searchViewModel.tokens.isEmpty { + if searchViewModel.tokens.isEmpty && searchText.isEmpty { searchViewModel.debouncableText.removeAll() searchViewModel.searchText.removeAll() } From c9eafe345fc9f888281e2bf650289e06c9a4f37a Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Sun, 5 May 2024 13:17:00 +0200 Subject: [PATCH 2/2] fix refresh stuff --- .../Views/Navigation/Agenda/ActivityView.swift | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/PadelClub/Views/Navigation/Agenda/ActivityView.swift b/PadelClub/Views/Navigation/Agenda/ActivityView.swift index b4fe287..cc9a418 100644 --- a/PadelClub/Views/Navigation/Agenda/ActivityView.swift +++ b/PadelClub/Views/Navigation/Agenda/ActivityView.swift @@ -113,13 +113,13 @@ struct ActivityView: View { .environment(navigation) .tint(.master) } -// .refreshable { -// if navigation.agendaDestination == .tenup { -// federalDataViewModel.federalTournaments.removeAll() -// NetworkFederalService.shared.formId = "" -// _gatherFederalTournaments() -// } -// } + .refreshable { + if navigation.agendaDestination == .tenup { + federalDataViewModel.federalTournaments.removeAll() + NetworkFederalService.shared.formId = "" + _gatherFederalTournaments() + } + } .task { if navigation.agendaDestination == .tenup && dataStore.user?.hasClubs() == true @@ -204,6 +204,7 @@ struct ActivityView: View { } .sheet(isPresented: $presentClubSearchView, onDismiss: { if dataStore.user?.hasClubs() == true { + federalDataViewModel.federalTournaments.removeAll() navigation.agendaDestination = .tenup } }) {