Add Quick Connect input in settings
This commit is contained in:
parent
be66d1008e
commit
95aabd22d0
|
@ -8,9 +8,14 @@
|
|||
|
||||
import Defaults
|
||||
import Foundation
|
||||
import JellyfinAPI
|
||||
import Stinsen
|
||||
import SwiftUI
|
||||
|
||||
final class SettingsViewModel: ObservableObject {
|
||||
final class SettingsViewModel: ViewModel {
|
||||
|
||||
@RouterObject
|
||||
var router: SettingsCoordinator.Router?
|
||||
|
||||
var bitrates: [Bitrates] = []
|
||||
var langs: [TrackLanguage] = []
|
||||
|
@ -18,6 +23,12 @@ final class SettingsViewModel: ObservableObject {
|
|||
let server: SwiftfinStore.State.Server
|
||||
let user: SwiftfinStore.State.User
|
||||
|
||||
@Published
|
||||
var quickConnectCode = ""
|
||||
|
||||
@Published
|
||||
var validQuickConnect = true
|
||||
|
||||
init(server: SwiftfinStore.State.Server, user: SwiftfinStore.State.User) {
|
||||
|
||||
self.server = server
|
||||
|
@ -44,4 +55,26 @@ final class SettingsViewModel: ObservableObject {
|
|||
}.sorted(by: { $0.name < $1.name })
|
||||
self.langs.insert(.auto, at: 0)
|
||||
}
|
||||
|
||||
func sendQuickConnect() {
|
||||
QuickConnectAPI.authorize(code: self.quickConnectCode)
|
||||
.sink(receiveCompletion: { completion in
|
||||
switch completion {
|
||||
case .failure:
|
||||
LogManager.log.debug("Invalid Quick Connect code entered")
|
||||
self.validQuickConnect = false
|
||||
default:
|
||||
self.handleAPIRequestError(displayMessage: "Error", completion: completion)
|
||||
}
|
||||
}, receiveValue: { value in
|
||||
if !value {
|
||||
LogManager.log.debug("Invalid Quick Connect code entered")
|
||||
self.validQuickConnect = false
|
||||
} else {
|
||||
LogManager.log.debug("Valid Quick connect code entered")
|
||||
self.router?.dismissCoordinator()
|
||||
}
|
||||
})
|
||||
.store(in: &cancellables)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,6 +83,22 @@ struct SettingsView: View {
|
|||
}
|
||||
}
|
||||
|
||||
Section(header: Text("Quick Connect")) {
|
||||
TextField("Quick Connect code", text: $viewModel.quickConnectCode)
|
||||
.keyboardType(.numberPad)
|
||||
.onChange(of: viewModel.quickConnectCode, perform: { _ in
|
||||
viewModel.validQuickConnect = true
|
||||
})
|
||||
.foregroundColor(viewModel.validQuickConnect ? .none : Color.red)
|
||||
|
||||
Button {
|
||||
viewModel.sendQuickConnect()
|
||||
} label: {
|
||||
Text("Submit Quick Connect code")
|
||||
.font(.callout)
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Implement these for playback
|
||||
// Section(header: Text("Networking")) {
|
||||
// Picker("Default local quality", selection: $inNetworkStreamBitrate) {
|
||||
|
|
Loading…
Reference in New Issue