This commit is contained in:
Ethan Pippin 2021-11-10 23:03:58 -07:00
parent 1ee02dfcb0
commit 43f03c1c9c
10 changed files with 30 additions and 30 deletions

View File

@ -11,7 +11,7 @@ import Defaults
import JellyfinAPI import JellyfinAPI
struct SettingsView: View { struct SettingsView: View {
@ObservedObject var viewModel: SettingsViewModel @ObservedObject var viewModel: SettingsViewModel
@Default(.inNetworkBandwidth) var inNetworkStreamBitrate @Default(.inNetworkBandwidth) var inNetworkStreamBitrate

View File

@ -13,7 +13,7 @@ struct ServerDetailView: View {
@ObservedObject var viewModel: ServerDetailViewModel @ObservedObject var viewModel: ServerDetailViewModel
@State var currentServerURI: String @State var currentServerURI: String
init(viewModel: ServerDetailViewModel) { init(viewModel: ServerDetailViewModel) {
self.viewModel = viewModel self.viewModel = viewModel
self.currentServerURI = viewModel.server.currentURI self.currentServerURI = viewModel.server.currentURI

View File

@ -96,7 +96,7 @@ struct UserListView: View {
} label: { } label: {
Image(systemName: "info.circle.fill") Image(systemName: "info.circle.fill")
} }
if !viewModel.users.isEmpty { if !viewModel.users.isEmpty {
Button { Button {
userListRouter.route(to: \.userSignIn, viewModel.server) userListRouter.route(to: \.userSignIn, viewModel.server)

View File

@ -69,7 +69,7 @@ final class MainCoordinator: NavigationCoordinatable {
} }
} }
} }
@objc func didChangeServerCurrentURI(_ notification: Notification) { @objc func didChangeServerCurrentURI(_ notification: Notification) {
guard let newCurrentServerState = notification.object as? SwiftfinStore.State.Server else { fatalError("Need to have new current login state server") } guard let newCurrentServerState = notification.object as? SwiftfinStore.State.Server else { fatalError("Need to have new current login state server") }
guard SessionManager.main.currentLogin != nil else { return } guard SessionManager.main.currentLogin != nil else { return }
@ -77,7 +77,7 @@ final class MainCoordinator: NavigationCoordinatable {
SessionManager.main.loginUser(server: newCurrentServerState, user: SessionManager.main.currentLogin.user) SessionManager.main.loginUser(server: newCurrentServerState, user: SessionManager.main.currentLogin.user)
} }
} }
func makeMainTab() -> MainTabCoordinator { func makeMainTab() -> MainTabCoordinator {
MainTabCoordinator() MainTabCoordinator()
} }

View File

@ -12,17 +12,17 @@ import Stinsen
import SwiftUI import SwiftUI
final class ServerDetailCoordinator: NavigationCoordinatable { final class ServerDetailCoordinator: NavigationCoordinatable {
let stack = NavigationStack(initial: \ServerDetailCoordinator.start) let stack = NavigationStack(initial: \ServerDetailCoordinator.start)
@Root var start = makeStart @Root var start = makeStart
let viewModel: ServerDetailViewModel let viewModel: ServerDetailViewModel
init(viewModel: ServerDetailViewModel) { init(viewModel: ServerDetailViewModel) {
self.viewModel = viewModel self.viewModel = viewModel
} }
@ViewBuilder func makeStart() -> some View { @ViewBuilder func makeStart() -> some View {
ServerDetailView(viewModel: viewModel) ServerDetailView(viewModel: viewModel)
} }

View File

@ -120,7 +120,7 @@ final class SessionManager {
return (editServer, transaction) return (editServer, transaction)
} }
.handleEvents(receiveOutput: { (server, transaction) in .handleEvents(receiveOutput: { (_, transaction) in
try? transaction.commitAndWait() try? transaction.commitAndWait()
}) })
.map({ (server, _) in .map({ (server, _) in
@ -149,7 +149,7 @@ final class SessionManager {
return (editServer, transaction) return (editServer, transaction)
} }
.handleEvents(receiveOutput: { (server, transaction) in .handleEvents(receiveOutput: { (_, transaction) in
try? transaction.commitAndWait() try? transaction.commitAndWait()
}) })
.map({ (server, _) in .map({ (server, _) in

View File

@ -180,9 +180,9 @@ extension SwiftfinStore.Errors: LocalizedError {
var title: String { var title: String {
switch self { switch self {
case .existingServer(_): case .existingServer:
return "Existing Server" return "Existing Server"
case .existingUser(_): case .existingUser:
return "Existing User" return "Existing User"
} }
} }

View File

@ -106,7 +106,7 @@ final class ConnectToServerViewModel: ViewModel {
.sink { completion in .sink { completion in
self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "connectToServer", self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "connectToServer",
completion: completion) completion: completion)
} receiveValue: { server in } receiveValue: { _ in
self.router?.dismissCoordinator() self.router?.dismissCoordinator()
} }
.store(in: &self.cancellables) .store(in: &self.cancellables)

View File

@ -25,7 +25,7 @@ final class HomeViewModel: ViewModel {
override init() { override init() {
super.init() super.init()
refresh() refresh()
// Nov. 6, 2021 // Nov. 6, 2021
// This is a workaround since Stinsen doesn't have the ability to rebuild a root at the time of writing. // This is a workaround since Stinsen doesn't have the ability to rebuild a root at the time of writing.
// See ServerDetailViewModel.swift for feature request issue // See ServerDetailViewModel.swift for feature request issue
@ -33,36 +33,36 @@ final class HomeViewModel: ViewModel {
nc.addObserver(self, selector: #selector(didSignIn), name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) nc.addObserver(self, selector: #selector(didSignIn), name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil)
nc.addObserver(self, selector: #selector(didSignOut), name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) nc.addObserver(self, selector: #selector(didSignOut), name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil)
} }
@objc func didSignIn() { @objc func didSignIn() {
for cancellable in cancellables { for cancellable in cancellables {
cancellable.cancel() cancellable.cancel()
} }
librariesShowRecentlyAddedIDs = [] librariesShowRecentlyAddedIDs = []
libraries = [] libraries = []
resumeItems = [] resumeItems = []
nextUpItems = [] nextUpItems = []
refresh() refresh()
} }
@objc func didSignOut() { @objc func didSignOut() {
for cancellable in cancellables { for cancellable in cancellables {
cancellable.cancel() cancellable.cancel()
} }
cancellables.removeAll() cancellables.removeAll()
} }
func refresh() { func refresh() {
LogManager.shared.log.debug("Refresh called.") LogManager.shared.log.debug("Refresh called.")
UserViewsAPI.getUserViews(userId: SessionManager.main.currentLogin.user.id) UserViewsAPI.getUserViews(userId: SessionManager.main.currentLogin.user.id)
.trackActivity(loading) .trackActivity(loading)
.sink(receiveCompletion: { completion in .sink(receiveCompletion: { completion in
switch completion { switch completion {
case .finished: () case .finished: ()
case .failure(_): case .failure:
self.libraries = [] self.libraries = []
self.handleAPIRequestError(completion: completion) self.handleAPIRequestError(completion: completion)
} }
@ -82,7 +82,7 @@ final class HomeViewModel: ViewModel {
.sink(receiveCompletion: { completion in .sink(receiveCompletion: { completion in
switch completion { switch completion {
case .finished: () case .finished: ()
case .failure(_): case .failure:
self.libraries = [] self.libraries = []
self.handleAPIRequestError(completion: completion) self.handleAPIRequestError(completion: completion)
} }
@ -110,7 +110,7 @@ final class HomeViewModel: ViewModel {
.sink(receiveCompletion: { completion in .sink(receiveCompletion: { completion in
switch completion { switch completion {
case .finished: () case .finished: ()
case .failure(_): case .failure:
self.resumeItems = [] self.resumeItems = []
self.handleAPIRequestError(completion: completion) self.handleAPIRequestError(completion: completion)
} }
@ -127,7 +127,7 @@ final class HomeViewModel: ViewModel {
.sink(receiveCompletion: { completion in .sink(receiveCompletion: { completion in
switch completion { switch completion {
case .finished: () case .finished: ()
case .failure(_): case .failure:
self.nextUpItems = [] self.nextUpItems = []
self.handleAPIRequestError(completion: completion) self.handleAPIRequestError(completion: completion)
} }

View File

@ -11,20 +11,20 @@ import Foundation
import JellyfinAPI import JellyfinAPI
class ServerDetailViewModel: ViewModel { class ServerDetailViewModel: ViewModel {
@Published var server: SwiftfinStore.State.Server @Published var server: SwiftfinStore.State.Server
init(server: SwiftfinStore.State.Server) { init(server: SwiftfinStore.State.Server) {
self.server = server self.server = server
} }
func setServerCurrentURI(uri: String) { func setServerCurrentURI(uri: String) {
SessionManager.main.setServerCurrentURI(server: server, uri: uri) SessionManager.main.setServerCurrentURI(server: server, uri: uri)
.sink { c in .sink { c in
print(c) print(c)
} receiveValue: { newServerState in } receiveValue: { newServerState in
self.server = newServerState self.server = newServerState
let nc = SwiftfinNotificationCenter.main let nc = SwiftfinNotificationCenter.main
nc.post(name: SwiftfinNotificationCenter.Keys.didChangeServerCurrentURI, object: newServerState) nc.post(name: SwiftfinNotificationCenter.Keys.didChangeServerCurrentURI, object: newServerState)
} }