Make searchbars adhere to autocorrect and fix the random search prompts not applying by moving functionality to a ViewModel. Also add a searchbar in the batch choice sheet. Signed-off-by: kingbri <bdashore3@proton.me>
65 lines
2 KiB
Swift
65 lines
2 KiB
Swift
//
|
|
// ContentView.swift
|
|
// Ferrite
|
|
//
|
|
// Created by Brian Dashore on 7/1/22.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct ContentView: View {
|
|
@EnvironmentObject var scrapingModel: ScrapingViewModel
|
|
@EnvironmentObject var debridManager: DebridManager
|
|
@EnvironmentObject var navModel: NavigationViewModel
|
|
@EnvironmentObject var pluginManager: PluginManager
|
|
@EnvironmentObject var logManager: LoggingManager
|
|
|
|
@AppStorage("Behavior.AutocorrectSearch") var autocorrectSearch: Bool = false
|
|
|
|
var body: some View {
|
|
NavView {
|
|
List {
|
|
SearchResultsView()
|
|
}
|
|
.listStyle(.insetGrouped)
|
|
.inlinedList(inset: 20)
|
|
.navigationTitle("Search")
|
|
.searchable(
|
|
text: $scrapingModel.searchText,
|
|
placement: .navigationBarDrawer(displayMode: .always),
|
|
prompt: Text(navModel.searchPrompt)
|
|
)
|
|
.autocorrectionDisabled(!autocorrectSearch)
|
|
.textInputAutocapitalization(autocorrectSearch ? .sentences : .never)
|
|
.onSubmit(of: .search) {
|
|
if let runningSearchTask = scrapingModel.runningSearchTask, runningSearchTask.isCancelled {
|
|
scrapingModel.runningSearchTask = nil
|
|
return
|
|
}
|
|
|
|
scrapingModel.runningSearchTask = Task {
|
|
let sources = pluginManager.fetchInstalledSources()
|
|
await scrapingModel.scanSources(
|
|
sources: sources,
|
|
debridManager: debridManager
|
|
)
|
|
|
|
logManager.hideIndeterminateToast()
|
|
scrapingModel.runningSearchTask = nil
|
|
}
|
|
}
|
|
.customScopeBar {
|
|
SearchFilterHeaderView()
|
|
}
|
|
.onAppear {
|
|
navModel.getSearchPrompt()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct ContentView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
ContentView()
|
|
}
|
|
}
|