summaryrefslogtreecommitdiff
path: root/Jel/Views
diff options
context:
space:
mode:
Diffstat (limited to 'Jel/Views')
-rw-r--r--Jel/Views/Dashboard/DashboardLibraryView.swift1
-rw-r--r--Jel/Views/Library/Item/ItemMovieView.swift2
-rw-r--r--Jel/Views/Library/LibraryDetailView.swift53
3 files changed, 48 insertions, 8 deletions
diff --git a/Jel/Views/Dashboard/DashboardLibraryView.swift b/Jel/Views/Dashboard/DashboardLibraryView.swift
index 2e0cd0e..57ffa50 100644
--- a/Jel/Views/Dashboard/DashboardLibraryView.swift
+++ b/Jel/Views/Dashboard/DashboardLibraryView.swift
@@ -15,6 +15,7 @@ struct DashboardLibraryView: View {
@State var libraries: [BaseItemDto] = []
@State var loading: Bool = true
+
var body: some View {
if loading {
ProgressView()
diff --git a/Jel/Views/Library/Item/ItemMovieView.swift b/Jel/Views/Library/Item/ItemMovieView.swift
index be12696..055a158 100644
--- a/Jel/Views/Library/Item/ItemMovieView.swift
+++ b/Jel/Views/Library/Item/ItemMovieView.swift
@@ -54,7 +54,7 @@ struct ItemMovieView: View {
.toolbarRole(.editor)
.navigationBarTitleDisplayMode(.inline)
.navigationTitle(navigationTitle)
- .ignoresSafeArea(edges: .bottom)
+ .ignoresSafeArea()
.scrollIndicators(.hidden)
.onAppear {
Task {
diff --git a/Jel/Views/Library/LibraryDetailView.swift b/Jel/Views/Library/LibraryDetailView.swift
index f4ff93c..9d4e46d 100644
--- a/Jel/Views/Library/LibraryDetailView.swift
+++ b/Jel/Views/Library/LibraryDetailView.swift
@@ -13,10 +13,15 @@ struct LibraryDetailView: View {
@StateObject var authState: AuthStateController = AuthStateController.shared
@State var library: BaseItemDto
+
@State var items: [BaseItemDto]? = []
@State var loading: Bool = true
+
+ @State var searchText: String = ""
+ @State var searchResultHints: SearchHintResult?
+ @State var searchResultItems: [BaseItemDto]?
let columns = [
GridItem(.adaptive(minimum: 150))
]
@@ -24,17 +29,51 @@ struct LibraryDetailView: View {
if loading {
ProgressView()
.progressViewStyle(.circular)
+ } else {
+ EmptyView()
}
ScrollView {
LazyVGrid(columns: columns) {
- ForEach(items ?? []) {item in
- NavigationLink {
- ItemView(item: item)
- } label: {
- LibraryIconView(library: item, imageType: "Primary", width: 170)
- .padding()
+ if !searchText.isEmpty {
+ ForEach(searchResultItems ?? []) {item in
+ NavigationLink {
+ ItemView(item: item)
+ } label: {
+ LibraryIconView(library: item, imageType: "Primary", width: 170)
+ .padding()
+ }
+ .buttonStyle(PlainButtonStyle())
+ }
+ } else {
+ ForEach(items ?? []) {item in
+ NavigationLink {
+ ItemView(item: item)
+ } label: {
+ LibraryIconView(library: item, imageType: "Primary", width: 170)
+ .padding()
+ }
+ .buttonStyle(PlainButtonStyle())
+ }
+ }
+ }
+ }
+ .searchable(text: $searchText)
+ .onChange(of: searchText) {
+ Task {
+ let parameters = Paths.GetParameters(
+ userID: AuthStateController.shared.userId,
+ searchTerm: searchText.lowercased(),
+ parentID: library.id
+ )
+ searchResultHints = await jellyfinClient.search(parameters: parameters)
+
+ searchResultItems = items?.filter { item in
+ for hint in searchResultHints?.searchHints ?? [] {
+ if hint.name == item.name {
+ return true
+ }
}
- .buttonStyle(PlainButtonStyle())
+ return false
}
}
}