jellyflood/Shared/ViewModels/FilterViewModel.swift

48 lines
1.2 KiB
Swift

//
// Swiftfin is subject to the terms of the Mozilla Public
// License, v2.0. If a copy of the MPL was not distributed with this
// file, you can obtain one at https://mozilla.org/MPL/2.0/.
//
// Copyright (c) 2024 Jellyfin & Jellyfin Contributors
//
import Foundation
import JellyfinAPI
import SwiftUI
final class FilterViewModel: ViewModel {
@Published
var allFilters: ItemFilters = .all
@Published
var currentFilters: ItemFilters
let parent: LibraryParent?
init(
parent: LibraryParent?,
currentFilters: ItemFilters
) {
self.parent = parent
self.currentFilters = currentFilters
super.init()
getQueryFilters()
}
private func getQueryFilters() {
Task {
let parameters = Paths.GetQueryFiltersParameters(
userID: userSession.user.id,
parentID: parent?.id
)
let request = Paths.getQueryFilters(parameters: parameters)
let response = try await userSession.client.send(request)
await MainActor.run {
allFilters.genres = response.value.genres?.map(\.filter) ?? []
}
}
}
}