fix volume slider

This commit is contained in:
2025-06-20 19:03:33 -07:00
parent 6e5e587998
commit 839ec53c17
2 changed files with 16 additions and 7 deletions

View File

@@ -38,6 +38,7 @@ class MainViewModel
init() {
observePlaylistChanges()
observeNowPlayingModel()
configureViewModelCallbacks()
}
@@ -77,10 +78,6 @@ class MainViewModel
try await api.previous()
}
nowPlayingViewModel.onVolumeChange = apiCallback { model, api in
try await api.setVolume(model.volume)
}
nowPlayingViewModel.onSheetDismiss = { [weak self] _ in
self?.isNowPlayingSheetPresented = false
}
@@ -148,6 +145,21 @@ class MainViewModel
}
}
func observeNowPlayingModel() {
withObservationTracking {
_ = nowPlayingViewModel.volume
} onChange: { [weak self] in
Task {
guard let self else { return }
await self.withModificationsViaAPI { api in
try await api.setVolume(self.nowPlayingViewModel.volume)
}
await MainActor.run { self.observeNowPlayingModel() }
}
}
}
func withModificationsViaAPI(_ modificationBlock: (API) async throws -> Void) async {
guard let api = selectedServer?.api else { return }

View File

@@ -14,7 +14,6 @@ class NowPlayingViewModel
var onStop: (NowPlayingViewModel) -> Void = { _ in }
var onNext: (NowPlayingViewModel) -> Void = { _ in }
var onPrev: (NowPlayingViewModel) -> Void = { _ in }
var onVolumeChange: (NowPlayingViewModel) -> Void = { _ in }
var onSheetDismiss: (NowPlayingViewModel) -> Void = { _ in }
var isPlaying: Bool = false
@@ -94,8 +93,6 @@ struct NowPlayingView: View
model.settingVolume = model.volume
model.isSettingVolume = editing
}
model.onVolumeChange(model)
}
)
.padding(.horizontal, 18.0)