fix volume slider
This commit is contained in:
@@ -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 }
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user