From b4c07bddfabfd6ddeb97da040428bb539fe20cbe Mon Sep 17 00:00:00 2001 From: Daniel Chick Date: Wed, 22 Jan 2025 18:07:00 -0600 Subject: [PATCH] Refresh Server Info (#1402) * Add function to update basic server info * Add server info update in server check view model * Update ServerCheckViewModel.swift --------- Co-authored-by: chickdan <=> Co-authored-by: Ethan Pippin --- .../SwiftfinStore+ServerState.swift | 17 +++++++++++++++++ Shared/ViewModels/ServerCheckViewModel.swift | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/Shared/SwiftfinStore/SwiftfinStore+ServerState.swift b/Shared/SwiftfinStore/SwiftfinStore+ServerState.swift index bd2206f84..ca8b0413c 100644 --- a/Shared/SwiftfinStore/SwiftfinStore+ServerState.swift +++ b/Shared/SwiftfinStore/SwiftfinStore+ServerState.swift @@ -78,4 +78,21 @@ extension ServerState { let request = Paths.getSplashscreen() return ImageSource(url: client.fullURL(with: request)) } + + func updateServerInfo() async throws { + guard let server = try? SwiftfinStore.dataStack.fetchOne( + From() + ) else { return } + + let publicInfo = try await getPublicSystemInfo() + + try SwiftfinStore.dataStack.perform { transaction in + guard let newServer = transaction.edit(server) else { return } + + newServer.name = publicInfo.serverName ?? newServer.name + newServer.id = publicInfo.id ?? newServer.id + } + + StoredValues[.Server.publicInfo(id: server.id)] = publicInfo + } } diff --git a/Shared/ViewModels/ServerCheckViewModel.swift b/Shared/ViewModels/ServerCheckViewModel.swift index a4d7b875f..047e5e0c7 100644 --- a/Shared/ViewModels/ServerCheckViewModel.swift +++ b/Shared/ViewModels/ServerCheckViewModel.swift @@ -7,6 +7,7 @@ // import Combine +import Factory import Foundation import JellyfinAPI @@ -36,12 +37,15 @@ class ServerCheckViewModel: ViewModel, Stateful { // TODO: also server stuff connectCancellable = Task { do { + try await userSession.server.updateServerInfo() + let request = Paths.getCurrentUser let response = try await userSession.client.send(request) await MainActor.run { userSession.user.data = response.value self.state = .connected + Container.shared.currentUserSession.reset() } } catch { await MainActor.run {