|
|
|
|
@ -24,23 +24,19 @@ struct SelectablePlayerListView: View { |
|
|
|
|
@StateObject private var searchViewModel: SearchViewModel |
|
|
|
|
@Environment(\.dismiss) var dismiss |
|
|
|
|
|
|
|
|
|
var lastDataSource: String? { |
|
|
|
|
dataStore.appSettings.lastDataSource |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@State private var searchText: String = "" |
|
|
|
|
var mostRecentDate: Date? { |
|
|
|
|
guard let lastDataSource else { return nil } |
|
|
|
|
return URL.importDateFormatter.date(from: lastDataSource) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
init(allowSelection: Int = 0, isPresented: Bool = true, searchField: String? = nil, dataSet: DataSet = .national, filterOption: PlayerFilterOption = .all, hideAssimilation: Bool = false, ascending: Bool = true, sortOption: SortOption = .rank, fromPlayer: FederalPlayer? = nil, codeClub: String? = nil, ligue: String? = nil, showFemaleInMaleAssimilation: Bool = false, tokens: [SearchToken] = [], hidePlayers: [String]? = nil, playerSelectionAction: PlayerSelectionAction? = nil, contentUnavailableAction: ContentUnavailableAction? = nil) { |
|
|
|
|
|
|
|
|
|
init(allowSelection: Int = 0, isPresented: Bool = true, searchField: String? = nil, dataSet: DataSet = .national, filterOption: PlayerFilterOption = .all, hideAssimilation: Bool = false, ascending: Bool = true, sortOption: SortOption = .rank, fromPlayer: FederalPlayer? = nil, codeClub: String? = nil, ligue: String? = nil, showFemaleInMaleAssimilation: Bool = false, tokens: [SearchToken] = [], hidePlayers: [String]? = nil, lastDataSource: Bool = false, playerSelectionAction: PlayerSelectionAction? = nil, contentUnavailableAction: ContentUnavailableAction? = nil) { |
|
|
|
|
self.allowSelection = allowSelection |
|
|
|
|
self.playerSelectionAction = playerSelectionAction |
|
|
|
|
self.contentUnavailableAction = contentUnavailableAction |
|
|
|
|
self.searchText = searchField ?? "" |
|
|
|
|
let searchViewModel = SearchViewModel() |
|
|
|
|
searchViewModel.tokens = tokens |
|
|
|
|
if lastDataSource { |
|
|
|
|
searchViewModel.mostRecentDate = DataStore.shared.appSettings.lastDataSourceDate() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
searchViewModel.searchText = searchField ?? "" |
|
|
|
|
searchViewModel.debouncableText = searchField ?? "" |
|
|
|
|
searchViewModel.showFemaleInMaleAssimilation = showFemaleInMaleAssimilation |
|
|
|
|
@ -59,6 +55,18 @@ struct SelectablePlayerListView: View { |
|
|
|
|
_searchViewModel = StateObject(wrappedValue: searchViewModel) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var enableSourceCheck: Binding<Bool> { |
|
|
|
|
Binding { |
|
|
|
|
searchViewModel.mostRecentDate != nil |
|
|
|
|
} set: { value in |
|
|
|
|
if value == false { |
|
|
|
|
searchViewModel.mostRecentDate = nil |
|
|
|
|
} else { |
|
|
|
|
searchViewModel.mostRecentDate = dataStore.appSettings.lastDataSourceDate() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var body: some View { |
|
|
|
|
VStack(spacing: 0) { |
|
|
|
|
if importObserver.isImportingFile() == false { |
|
|
|
|
@ -73,6 +81,13 @@ struct SelectablePlayerListView: View { |
|
|
|
|
} |
|
|
|
|
.pickerStyle(.segmented) |
|
|
|
|
Menu { |
|
|
|
|
if let lastDataSource = dataStore.appSettings.localizedLastDataSource() { |
|
|
|
|
Section { |
|
|
|
|
Toggle(isOn: enableSourceCheck) { |
|
|
|
|
Text("Limité à \(lastDataSource)") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
Section { |
|
|
|
|
ForEach(SourceFileManager.getSortOption()) { option in |
|
|
|
|
Toggle(isOn: .init(get: { |
|
|
|
|
@ -191,7 +206,6 @@ struct SelectablePlayerListView: View { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.onAppear { |
|
|
|
|
searchViewModel.mostRecentDate = mostRecentDate |
|
|
|
|
if searchViewModel.tokens.isEmpty && searchText.isEmpty { |
|
|
|
|
searchViewModel.debouncableText.removeAll() |
|
|
|
|
searchViewModel.searchText.removeAll() |
|
|
|
|
|