Fix SwiftData persistence concurrency stability
This commit is contained in:
@@ -14,7 +14,7 @@ struct MacLibraryView: View {
|
||||
Text("Backend Connection")
|
||||
.font(.title2)
|
||||
|
||||
TextField("http://localhost:3000", text: $viewModel.serverURLString)
|
||||
TextField("http://localhost:3007", text: $viewModel.serverURLString)
|
||||
.textFieldStyle(.roundedBorder)
|
||||
.onSubmit {
|
||||
viewModel.persistServerURLSelection()
|
||||
|
||||
@@ -16,6 +16,7 @@ final class MacLibraryViewModel {
|
||||
var discoveredTrackCount = 0
|
||||
var isScanning = false
|
||||
var nowPlayingState = NowPlayingState()
|
||||
var playbackErrorMessage: String?
|
||||
|
||||
var serverURLString: String
|
||||
var deviceRegistrationStatus = "Not registered."
|
||||
@@ -70,9 +71,11 @@ final class MacLibraryViewModel {
|
||||
self.serverURLString = userDefaults.string(forKey: Self.serverURLDefaultsKey)
|
||||
?? ServerEnvironment.defaultLocalBaseURL.absoluteString
|
||||
self.nowPlayingState = playbackController.nowPlayingState
|
||||
self.playbackErrorMessage = Self.playbackErrorMessage(from: playbackController.nowPlayingState.error)
|
||||
|
||||
playbackController.onStateChange = { [weak self] state in
|
||||
self?.nowPlayingState = state
|
||||
self?.playbackErrorMessage = Self.playbackErrorMessage(from: state.error)
|
||||
}
|
||||
|
||||
if let url = folderAccessService.storedFolderURL() {
|
||||
@@ -215,10 +218,6 @@ final class MacLibraryViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
var playbackErrorMessage: String? {
|
||||
nowPlayingState.error?.errorDescription
|
||||
}
|
||||
|
||||
func uploadSelectedTrack() async {
|
||||
guard let selectedTrackID else {
|
||||
lastUploadStatus = "Select a local track before uploading."
|
||||
@@ -789,6 +788,10 @@ final class MacLibraryViewModel {
|
||||
private static let deviceIdKey = "velody.device-id"
|
||||
private static let bootstrapTokenKey = "velody.bootstrap-token"
|
||||
private static let playbackSessionDefaultsKey = "velody.playback.session"
|
||||
|
||||
private static func playbackErrorMessage(from error: PlaybackError?) -> String? {
|
||||
error?.errorDescription ?? error?.localizedDescription
|
||||
}
|
||||
}
|
||||
|
||||
private enum UploadOutcome {
|
||||
@@ -803,7 +806,7 @@ private enum BackendConnectionError: LocalizedError {
|
||||
var errorDescription: String? {
|
||||
switch self {
|
||||
case .invalidServerURL:
|
||||
return "Enter a valid backend URL, such as http://localhost:3000."
|
||||
return "Enter a valid backend URL, such as http://localhost:3007."
|
||||
case .missingDeviceIdentity:
|
||||
return "Register this Mac before uploading or sending a heartbeat."
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user