fix volume slider
This commit is contained in:
@@ -38,6 +38,7 @@ class MainViewModel
|
|||||||
|
|
||||||
init() {
|
init() {
|
||||||
observePlaylistChanges()
|
observePlaylistChanges()
|
||||||
|
observeNowPlayingModel()
|
||||||
configureViewModelCallbacks()
|
configureViewModelCallbacks()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,10 +78,6 @@ class MainViewModel
|
|||||||
try await api.previous()
|
try await api.previous()
|
||||||
}
|
}
|
||||||
|
|
||||||
nowPlayingViewModel.onVolumeChange = apiCallback { model, api in
|
|
||||||
try await api.setVolume(model.volume)
|
|
||||||
}
|
|
||||||
|
|
||||||
nowPlayingViewModel.onSheetDismiss = { [weak self] _ in
|
nowPlayingViewModel.onSheetDismiss = { [weak self] _ in
|
||||||
self?.isNowPlayingSheetPresented = false
|
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 {
|
func withModificationsViaAPI(_ modificationBlock: (API) async throws -> Void) async {
|
||||||
guard let api = selectedServer?.api else { return }
|
guard let api = selectedServer?.api else { return }
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ class NowPlayingViewModel
|
|||||||
var onStop: (NowPlayingViewModel) -> Void = { _ in }
|
var onStop: (NowPlayingViewModel) -> Void = { _ in }
|
||||||
var onNext: (NowPlayingViewModel) -> Void = { _ in }
|
var onNext: (NowPlayingViewModel) -> Void = { _ in }
|
||||||
var onPrev: (NowPlayingViewModel) -> Void = { _ in }
|
var onPrev: (NowPlayingViewModel) -> Void = { _ in }
|
||||||
var onVolumeChange: (NowPlayingViewModel) -> Void = { _ in }
|
|
||||||
var onSheetDismiss: (NowPlayingViewModel) -> Void = { _ in }
|
var onSheetDismiss: (NowPlayingViewModel) -> Void = { _ in }
|
||||||
|
|
||||||
var isPlaying: Bool = false
|
var isPlaying: Bool = false
|
||||||
@@ -94,8 +93,6 @@ struct NowPlayingView: View
|
|||||||
model.settingVolume = model.volume
|
model.settingVolume = model.volume
|
||||||
model.isSettingVolume = editing
|
model.isSettingVolume = editing
|
||||||
}
|
}
|
||||||
|
|
||||||
model.onVolumeChange(model)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.padding(.horizontal, 18.0)
|
.padding(.horizontal, 18.0)
|
||||||
|
|||||||
Reference in New Issue
Block a user