[create-pull-request] automated change
This commit is contained in:
parent
11671d9c42
commit
de4be5ddcf
|
@ -11,9 +11,9 @@ import SwiftUI
|
||||||
|
|
||||||
struct SearchBar: View {
|
struct SearchBar: View {
|
||||||
@Binding var text: String
|
@Binding var text: String
|
||||||
|
|
||||||
@State private var isEditing = false
|
@State private var isEditing = false
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
HStack(spacing: 8) {
|
HStack(spacing: 8) {
|
||||||
TextField("Search...", text: $text)
|
TextField("Search...", text: $text)
|
||||||
|
|
|
@ -13,36 +13,36 @@ import Foundation
|
||||||
import JellyfinAPI
|
import JellyfinAPI
|
||||||
|
|
||||||
final class LibrarySearchViewModel: ViewModel {
|
final class LibrarySearchViewModel: ViewModel {
|
||||||
|
|
||||||
@Published var supportedItemTypeList = [ItemType]()
|
@Published var supportedItemTypeList = [ItemType]()
|
||||||
|
|
||||||
@Published var selectedItemType: ItemType = .movie
|
@Published var selectedItemType: ItemType = .movie
|
||||||
|
|
||||||
@Published var movieItems = [BaseItemDto]()
|
@Published var movieItems = [BaseItemDto]()
|
||||||
@Published var showItems = [BaseItemDto]()
|
@Published var showItems = [BaseItemDto]()
|
||||||
@Published var episodeItems = [BaseItemDto]()
|
@Published var episodeItems = [BaseItemDto]()
|
||||||
|
|
||||||
@Published var suggestions = [BaseItemDto]()
|
@Published var suggestions = [BaseItemDto]()
|
||||||
|
|
||||||
var searchQuerySubject = CurrentValueSubject<String, Never>("")
|
var searchQuerySubject = CurrentValueSubject<String, Never>("")
|
||||||
var parentID: String?
|
var parentID: String?
|
||||||
|
|
||||||
init(parentID: String?) {
|
init(parentID: String?) {
|
||||||
self.parentID = parentID
|
self.parentID = parentID
|
||||||
super.init()
|
super.init()
|
||||||
|
|
||||||
searchQuerySubject
|
searchQuerySubject
|
||||||
.filter { !$0.isEmpty }
|
.filter { !$0.isEmpty }
|
||||||
.debounce(for: 0.25, scheduler: DispatchQueue.main)
|
.debounce(for: 0.25, scheduler: DispatchQueue.main)
|
||||||
.sink(receiveValue: search)
|
.sink(receiveValue: search)
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
setupPublishersForSupportedItemType()
|
setupPublishersForSupportedItemType()
|
||||||
|
|
||||||
requestSuggestions()
|
requestSuggestions()
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupPublishersForSupportedItemType() {
|
func setupPublishersForSupportedItemType() {
|
||||||
|
|
||||||
let supportedItemTypeListPublishers = Publishers.CombineLatest3($movieItems, $showItems, $episodeItems)
|
let supportedItemTypeListPublishers = Publishers.CombineLatest3($movieItems, $showItems, $episodeItems)
|
||||||
.debounce(for: 0.25, scheduler: DispatchQueue.main)
|
.debounce(for: 0.25, scheduler: DispatchQueue.main)
|
||||||
.map { arg -> [ItemType] in
|
.map { arg -> [ItemType] in
|
||||||
|
@ -58,11 +58,11 @@ final class LibrarySearchViewModel: ViewModel {
|
||||||
}
|
}
|
||||||
return typeList
|
return typeList
|
||||||
}
|
}
|
||||||
|
|
||||||
supportedItemTypeListPublishers
|
supportedItemTypeListPublishers
|
||||||
.assign(to: \.supportedItemTypeList, on: self)
|
.assign(to: \.supportedItemTypeList, on: self)
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
|
|
||||||
supportedItemTypeListPublishers
|
supportedItemTypeListPublishers
|
||||||
.withLatestFrom(supportedItemTypeListPublishers, $selectedItemType)
|
.withLatestFrom(supportedItemTypeListPublishers, $selectedItemType)
|
||||||
.compactMap { typeList, selectedItemType in
|
.compactMap { typeList, selectedItemType in
|
||||||
|
@ -75,7 +75,7 @@ final class LibrarySearchViewModel: ViewModel {
|
||||||
.assign(to: \.selectedItemType, on: self)
|
.assign(to: \.selectedItemType, on: self)
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
}
|
}
|
||||||
|
|
||||||
func requestSuggestions() {
|
func requestSuggestions() {
|
||||||
ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!,
|
ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!,
|
||||||
limit: 20,
|
limit: 20,
|
||||||
|
@ -92,7 +92,7 @@ final class LibrarySearchViewModel: ViewModel {
|
||||||
}
|
}
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
}
|
}
|
||||||
|
|
||||||
func search(with query: String) {
|
func search(with query: String) {
|
||||||
ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, limit: 50, recursive: true, searchTerm: query,
|
ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, limit: 50, recursive: true, searchTerm: query,
|
||||||
sortOrder: [.ascending], parentId: parentID,
|
sortOrder: [.ascending], parentId: parentID,
|
||||||
|
|
Loading…
Reference in New Issue