Merge pull request #728 from kiwix/714-dimiss-fixes-part2

714 dimiss fixes part2
This commit is contained in:
Kelson 2024-04-14 15:32:38 +02:00 committed by GitHub
commit f8a5a266d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 43 additions and 22 deletions

View File

@ -160,11 +160,11 @@ struct RootView: View {
case .opened:
ZimFilesOpened(dismiss: nil).modifier(LibraryZimFileDetailSidePanel())
case .categories:
ZimFilesCategories().modifier(LibraryZimFileDetailSidePanel())
ZimFilesCategories(dismiss: nil).modifier(LibraryZimFileDetailSidePanel())
case .downloads:
ZimFilesDownloads().modifier(LibraryZimFileDetailSidePanel())
ZimFilesDownloads(dismiss: nil).modifier(LibraryZimFileDetailSidePanel())
case .new:
ZimFilesNew().modifier(LibraryZimFileDetailSidePanel())
ZimFilesNew(dismiss: nil).modifier(LibraryZimFileDetailSidePanel())
default:
EmptyView()
}

View File

@ -123,13 +123,13 @@ final class SplitViewController: UISplitViewController {
let controller = UIHostingController(rootView: ZimFilesOpened(dismiss: nil))
setViewController(UINavigationController(rootViewController: controller), for: .secondary)
case .categories:
let controller = UIHostingController(rootView: ZimFilesCategories())
let controller = UIHostingController(rootView: ZimFilesCategories(dismiss: nil))
setViewController(UINavigationController(rootViewController: controller), for: .secondary)
case .downloads:
let controller = UIHostingController(rootView: ZimFilesDownloads())
let controller = UIHostingController(rootView: ZimFilesDownloads(dismiss: nil))
setViewController(UINavigationController(rootViewController: controller), for: .secondary)
case .new:
let controller = UIHostingController(rootView: ZimFilesNew())
let controller = UIHostingController(rootView: ZimFilesNew(dismiss: nil))
setViewController(UINavigationController(rootViewController: controller), for: .secondary)
case .settings:
let controller = UIHostingController(rootView: Settings())

View File

@ -43,7 +43,7 @@ struct Library: View {
case .categories:
List(categories) { category in
NavigationLink {
ZimFilesCategory(category: .constant(category))
ZimFilesCategory(category: .constant(category), dismiss: dismiss)
.navigationTitle(category.name)
.navigationBarTitleDisplayMode(.inline)
} label: {
@ -56,9 +56,9 @@ struct Library: View {
.listStyle(.plain)
.navigationTitle(NavigationItem.categories.name)
case .downloads:
ZimFilesDownloads()
ZimFilesDownloads(dismiss: dismiss)
case .new:
ZimFilesNew()
ZimFilesNew(dismiss: dismiss)
}
}
.tag(tabItem)
@ -117,7 +117,7 @@ struct LibraryZimFileContext: ViewModifier {
let zimFile: ZimFile
let dismiss: (() -> Void)? // iOS only
init(zimFile: ZimFile, dismiss: (() -> Void)? = nil) {
init(zimFile: ZimFile, dismiss: (() -> Void)?) {
self.zimFile = zimFile
self.dismiss = dismiss
}

View File

@ -30,6 +30,11 @@ struct ZimFileDetail: View {
@State private var isPresentingUnlinkAlert = false
let dismissParent: (() -> Void)? // iOS only
init(zimFile: ZimFile, dismissParent: (() -> Void)?) {
self.zimFile = zimFile
self.dismissParent = dismissParent
}
var body: some View {
#if os(macOS)
List {

View File

@ -21,14 +21,16 @@ import Defaults
struct ZimFilesCategories: View {
@State private var selected: Category
private var categories: [Category]
private let dismiss: (() -> Void)?
init() {
init(dismiss: (() -> Void)?) {
categories = CategoriesToLanguages.allCategories()
selected = categories.first ?? .wikipedia
self.dismiss = dismiss
}
var body: some View {
ZimFilesCategory(category: $selected)
ZimFilesCategory(category: $selected, dismiss: dismiss)
.modifier(ToolbarRoleBrowser())
.navigationTitle(NavigationItem.categories.name)
.toolbar {
@ -58,12 +60,13 @@ struct ZimFilesCategories: View {
struct ZimFilesCategory: View {
@Binding var category: Category
@State private var searchText = ""
let dismiss: (() -> Void)? // iOS only
var body: some View {
if category == .ted || category == .stackExchange || category == .other {
CategoryList(category: $category, searchText: $searchText)
CategoryList(category: $category, searchText: $searchText, dismiss: dismiss)
} else {
CategoryGrid(category: $category, searchText: $searchText)
CategoryGrid(category: $category, searchText: $searchText, dismiss: dismiss)
}
}
@ -87,10 +90,12 @@ private struct CategoryGrid: View {
@EnvironmentObject private var viewModel: LibraryViewModel
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
@SectionedFetchRequest private var sections: SectionedFetchResults<String, ZimFile>
private let dismiss: (() -> Void)? // iOS only
init(category: Binding<Category>, searchText: Binding<String>) {
init(category: Binding<Category>, searchText: Binding<String>, dismiss: (() -> Void)?) {
self._category = category
self._searchText = searchText
self.dismiss = dismiss
self._sections = SectionedFetchRequest<String, ZimFile>(
sectionIdentifier: \.name,
sortDescriptors: [SortDescriptor(\ZimFile.name), SortDescriptor(\.size, order: .reverse)],
@ -111,13 +116,13 @@ private struct CategoryGrid: View {
if sections.count <= 1 {
ForEach(section) { zimFile in
ZimFileCell(zimFile, prominent: .size)
.modifier(LibraryZimFileContext(zimFile: zimFile))
.modifier(LibraryZimFileContext(zimFile: zimFile, dismiss: dismiss))
}
} else {
Section {
ForEach(section) { zimFile in
ZimFileCell(zimFile, prominent: .size)
.modifier(LibraryZimFileContext(zimFile: zimFile))
.modifier(LibraryZimFileContext(zimFile: zimFile, dismiss: dismiss))
}
} header: {
SectionHeader(
@ -179,10 +184,15 @@ private struct CategoryList: View {
@Default(.libraryLanguageCodes) private var languageCodes
@EnvironmentObject private var viewModel: LibraryViewModel
@FetchRequest private var zimFiles: FetchedResults<ZimFile>
private let dismiss: (() -> Void)?
init(category: Binding<Category>, searchText: Binding<String>) {
init(category: Binding<Category>,
searchText: Binding<String>,
dismiss: (() -> Void)?
) {
self._category = category
self._searchText = searchText
self.dismiss = dismiss
self._zimFiles = FetchRequest<ZimFile>(
sortDescriptors: [
NSSortDescriptor(
@ -204,7 +214,7 @@ private struct CategoryList: View {
} else {
List(zimFiles, id: \.self, selection: $viewModel.selectedZimFile) { zimFile in
ZimFileRow(zimFile)
.modifier(LibraryZimFileContext(zimFile: zimFile))
.modifier(LibraryZimFileContext(zimFile: zimFile, dismiss: dismiss))
}
#if os(macOS)
.listStyle(.inset)

View File

@ -23,6 +23,11 @@ struct ZimFilesDownloads: View {
sortDescriptors: [NSSortDescriptor(keyPath: \DownloadTask.created, ascending: false)],
animation: .easeInOut
) private var downloadTasks: FetchedResults<DownloadTask>
private let dismiss: (() -> Void)?
init(dismiss: (() -> Void)?) {
self.dismiss = dismiss
}
var body: some View {
LazyVGrid(
@ -32,7 +37,7 @@ struct ZimFilesDownloads: View {
) {
ForEach(downloadTasks) { downloadTask in
if let zimFile = downloadTask.zimFile {
DownloadTaskCell(downloadTask).modifier(LibraryZimFileContext(zimFile: zimFile))
DownloadTaskCell(downloadTask).modifier(LibraryZimFileContext(zimFile: zimFile, dismiss: dismiss))
}
}
}

View File

@ -32,6 +32,7 @@ struct ZimFilesNew: View {
animation: .easeInOut
) private var zimFiles: FetchedResults<ZimFile>
@State private var searchText = ""
let dismiss: (() -> Void)? // iOS only
var body: some View {
LazyVGrid(
@ -41,7 +42,7 @@ struct ZimFilesNew: View {
) {
ForEach(zimFiles) { zimFile in
ZimFileCell(zimFile, prominent: .name)
.modifier(LibraryZimFileContext(zimFile: zimFile))
.modifier(LibraryZimFileContext(zimFile: zimFile, dismiss: dismiss))
}
}
.modifier(GridCommon())
@ -112,7 +113,7 @@ struct ZimFilesNew: View {
struct ZimFilesNew_Previews: PreviewProvider {
static var previews: some View {
NavigationStack {
ZimFilesNew()
ZimFilesNew(dismiss: nil)
.environmentObject(LibraryViewModel())
.environment(\.managedObjectContext, Database.viewContext)
}