summaryrefslogtreecommitdiff
path: root/Jel
diff options
context:
space:
mode:
Diffstat (limited to 'Jel')
-rw-r--r--Jel/Models/ViewConditionalMethod.swift23
-rw-r--r--Jel/Views/Library/Item/ItemMovieView.swift1
-rw-r--r--Jel/Views/Library/LibraryDetailView.swift32
3 files changed, 41 insertions, 15 deletions
diff --git a/Jel/Models/ViewConditionalMethod.swift b/Jel/Models/ViewConditionalMethod.swift
new file mode 100644
index 0000000..195a8dc
--- /dev/null
+++ b/Jel/Models/ViewConditionalMethod.swift
@@ -0,0 +1,23 @@
+//
+// ViewConditionalMethod.swift
+// Jel
+//
+// Created by zerocool on 12/25/23.
+//
+
+import SwiftUI
+
+extension View {
+ /// Applies the given transform if the given condition evaluates to `true`.
+ /// - Parameters:
+ /// - condition: The condition to evaluate.
+ /// - transform: The transform to apply to the source `View`.
+ /// - Returns: Either the original `View` or the modified `View` if the condition is `true`.
+ @ViewBuilder func `if`<Content: View>(_ condition: @autoclosure () -> Bool, transform: (Self) -> Content) -> some View {
+ if condition() {
+ transform(self)
+ } else {
+ self
+ }
+ }
+}
diff --git a/Jel/Views/Library/Item/ItemMovieView.swift b/Jel/Views/Library/Item/ItemMovieView.swift
index 055a158..eed083e 100644
--- a/Jel/Views/Library/Item/ItemMovieView.swift
+++ b/Jel/Views/Library/Item/ItemMovieView.swift
@@ -44,6 +44,7 @@ struct ItemMovieView: View {
Text(item.taglines?.count ?? 0 > 0 ? item.taglines?[0] ?? "" : "")
.font(.headline)
.frame(maxWidth: .infinity, alignment: .leading)
+ .padding(.bottom)
Text(item.overview ?? "---")
}
diff --git a/Jel/Views/Library/LibraryDetailView.swift b/Jel/Views/Library/LibraryDetailView.swift
index 9d4e46d..5d0e695 100644
--- a/Jel/Views/Library/LibraryDetailView.swift
+++ b/Jel/Views/Library/LibraryDetailView.swift
@@ -57,23 +57,25 @@ struct LibraryDetailView: View {
}
}
}
- .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
+ .if(!loading) {view in
+ view.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
+ }
}
+ return false
}
- return false
}
}
}