- Migrate the empty view to a common view which vertically centers itself to the screen's bounds - Don't initialize underlying state variables in init as this is discouraged behavior. Instead, hook the source list editor to an ID that refreshes when an existing source list URL has been set Signed-off-by: kingbri <bdashore3@proton.me>
64 lines
2.2 KiB
Swift
64 lines
2.2 KiB
Swift
//
|
|
// BatchChoiceView.swift
|
|
// Ferrite
|
|
//
|
|
// Created by Brian Dashore on 7/24/22.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct BatchChoiceView: View {
|
|
@Environment(\.presentationMode) var presentationMode
|
|
|
|
@EnvironmentObject var debridManager: DebridManager
|
|
@EnvironmentObject var scrapingModel: ScrapingViewModel
|
|
@EnvironmentObject var navModel: NavigationViewModel
|
|
|
|
var body: some View {
|
|
NavView {
|
|
List {
|
|
ForEach(debridManager.selectedRealDebridItem?.files ?? [], id: \.self) { file in
|
|
Button(file.name) {
|
|
debridManager.selectedRealDebridFile = file
|
|
|
|
if let searchResult = scrapingModel.selectedSearchResult {
|
|
debridManager.currentDebridTask = Task {
|
|
await debridManager.fetchRdDownload(searchResult: searchResult, iaFile: file)
|
|
|
|
if !debridManager.realDebridDownloadUrl.isEmpty {
|
|
// The download may complete before this sheet dismisses
|
|
try? await Task.sleep(seconds: 1)
|
|
navModel.runDebridAction(action: nil, urlString: debridManager.realDebridDownloadUrl)
|
|
}
|
|
|
|
debridManager.selectedRealDebridFile = nil
|
|
debridManager.selectedRealDebridItem = nil
|
|
}
|
|
}
|
|
|
|
presentationMode.wrappedValue.dismiss()
|
|
}
|
|
.dynamicAccentColor(.primary)
|
|
}
|
|
}
|
|
.listStyle(.insetGrouped)
|
|
.navigationTitle("Select a file")
|
|
.navigationBarTitleDisplayMode(.inline)
|
|
.toolbar {
|
|
ToolbarItem(placement: .navigationBarTrailing) {
|
|
Button("Done") {
|
|
debridManager.selectedRealDebridItem = nil
|
|
|
|
presentationMode.wrappedValue.dismiss()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct BatchChoiceView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
BatchChoiceView()
|
|
}
|
|
}
|