feat: add LibraryViewModel.applyTrackEdits

feat/music-streaming
Laurent 1 month ago
parent d7b91ac14c
commit 0e018a79dd
  1. 15
      Music/ViewModels/LibraryViewModel.swift

@ -11,14 +11,29 @@ final class LibraryViewModel {
var trackCount = 0 var trackCount = 0
private let db: DatabaseService private let db: DatabaseService
private let editService: TrackEditService
private var cancellable: AnyDatabaseCancellable? private var cancellable: AnyDatabaseCancellable?
private var searchTask: Task<Void, Never>? private var searchTask: Task<Void, Never>?
init(db: DatabaseService) { init(db: DatabaseService) {
self.db = db self.db = db
self.editService = TrackEditService(database: db)
updateQuery() updateQuery()
} }
// Applies metadata edits to one or more tracks. File-tag writes run off the
// main actor; the library list refreshes automatically via the DB observation
// (no manual reload). Returns per-track warnings (unsupported format / file
// write failure) for the caller to surface; the DB edit always lands.
func applyTrackEdits(
_ values: EditableTrackFields,
editing edited: Set<EditableTrackField>,
to tracks: [Track]
) async -> [TrackEditWarning] {
let service = editService
return await Task.detached { service.save(values, editing: edited, to: tracks) }.value
}
func search(_ text: String) { func search(_ text: String) {
searchText = text searchText = text
searchTask?.cancel() searchTask?.cancel()

Loading…
Cancel
Save