refactor: Use @Observable and inject factory in AppViewModel
- Replace ObservableObject with @Observable macro - Inject UseCaseFactory instead of individual use cases - Use factory.makeCheckServerReachabilityUseCase() on demand - Use factory.makeLogoutUseCase() for 401 handling
This commit is contained in:
parent
fde1140f24
commit
04de2c20d4
@ -8,18 +8,17 @@
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
|
||||
class AppViewModel: ObservableObject {
|
||||
@MainActor
|
||||
@Observable
|
||||
class AppViewModel {
|
||||
private let settingsRepository = SettingsRepository()
|
||||
private let logoutUseCase: LogoutUseCase
|
||||
private let checkServerReachabilityUseCase: PCheckServerReachabilityUseCase
|
||||
private let factory: UseCaseFactory
|
||||
|
||||
@Published var hasFinishedSetup: Bool = true
|
||||
@Published var isServerReachable: Bool = false
|
||||
var hasFinishedSetup: Bool = true
|
||||
var isServerReachable: Bool = false
|
||||
|
||||
init(logoutUseCase: LogoutUseCase = LogoutUseCase(),
|
||||
checkServerReachabilityUseCase: PCheckServerReachabilityUseCase = DefaultUseCaseFactory.shared.makeCheckServerReachabilityUseCase()) {
|
||||
self.logoutUseCase = logoutUseCase
|
||||
self.checkServerReachabilityUseCase = checkServerReachabilityUseCase
|
||||
init(factory: UseCaseFactory = DefaultUseCaseFactory.shared) {
|
||||
self.factory = factory
|
||||
setupNotificationObservers()
|
||||
|
||||
Task {
|
||||
@ -33,7 +32,7 @@ class AppViewModel: ObservableObject {
|
||||
object: nil,
|
||||
queue: .main
|
||||
) { [weak self] _ in
|
||||
Task {
|
||||
Task { @MainActor in
|
||||
await self?.handleUnauthorizedResponse()
|
||||
}
|
||||
}
|
||||
@ -43,19 +42,17 @@ class AppViewModel: ObservableObject {
|
||||
object: nil,
|
||||
queue: .main
|
||||
) { [weak self] _ in
|
||||
self?.loadSetupStatus()
|
||||
Task { @MainActor in
|
||||
self?.loadSetupStatus()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
private func handleUnauthorizedResponse() async {
|
||||
print("AppViewModel: Handling 401 Unauthorized - logging out user")
|
||||
|
||||
do {
|
||||
// Führe den Logout durch
|
||||
try await logoutUseCase.execute()
|
||||
|
||||
// Update UI state
|
||||
try await factory.makeLogoutUseCase().execute()
|
||||
loadSetupStatus()
|
||||
|
||||
print("AppViewModel: User successfully logged out due to 401 error")
|
||||
@ -64,19 +61,16 @@ class AppViewModel: ObservableObject {
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
private func loadSetupStatus() {
|
||||
hasFinishedSetup = settingsRepository.hasFinishedSetup
|
||||
}
|
||||
|
||||
@MainActor
|
||||
func onAppResume() async {
|
||||
await checkServerReachability()
|
||||
}
|
||||
|
||||
@MainActor
|
||||
private func checkServerReachability() async {
|
||||
isServerReachable = await checkServerReachabilityUseCase.execute()
|
||||
isServerReachable = await factory.makeCheckServerReachabilityUseCase().execute()
|
||||
}
|
||||
|
||||
deinit {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user