Add Quick Connect input in settings
This commit is contained in:
parent
be66d1008e
commit
95aabd22d0
|
@ -8,9 +8,14 @@
|
||||||
|
|
||||||
import Defaults
|
import Defaults
|
||||||
import Foundation
|
import Foundation
|
||||||
|
import JellyfinAPI
|
||||||
|
import Stinsen
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
final class SettingsViewModel: ObservableObject {
|
final class SettingsViewModel: ViewModel {
|
||||||
|
|
||||||
|
@RouterObject
|
||||||
|
var router: SettingsCoordinator.Router?
|
||||||
|
|
||||||
var bitrates: [Bitrates] = []
|
var bitrates: [Bitrates] = []
|
||||||
var langs: [TrackLanguage] = []
|
var langs: [TrackLanguage] = []
|
||||||
|
@ -18,6 +23,12 @@ final class SettingsViewModel: ObservableObject {
|
||||||
let server: SwiftfinStore.State.Server
|
let server: SwiftfinStore.State.Server
|
||||||
let user: SwiftfinStore.State.User
|
let user: SwiftfinStore.State.User
|
||||||
|
|
||||||
|
@Published
|
||||||
|
var quickConnectCode = ""
|
||||||
|
|
||||||
|
@Published
|
||||||
|
var validQuickConnect = true
|
||||||
|
|
||||||
init(server: SwiftfinStore.State.Server, user: SwiftfinStore.State.User) {
|
init(server: SwiftfinStore.State.Server, user: SwiftfinStore.State.User) {
|
||||||
|
|
||||||
self.server = server
|
self.server = server
|
||||||
|
@ -44,4 +55,26 @@ final class SettingsViewModel: ObservableObject {
|
||||||
}.sorted(by: { $0.name < $1.name })
|
}.sorted(by: { $0.name < $1.name })
|
||||||
self.langs.insert(.auto, at: 0)
|
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
|
// TODO: Implement these for playback
|
||||||
// Section(header: Text("Networking")) {
|
// Section(header: Text("Networking")) {
|
||||||
// Picker("Default local quality", selection: $inNetworkStreamBitrate) {
|
// Picker("Default local quality", selection: $inNetworkStreamBitrate) {
|
||||||
|
|
Loading…
Reference in New Issue