feat(17-01): add WriteTrackTagsByPath and ImageFilePicker backend methods
- WriteTrackTagsByPath resolves filePath to trackID via GetAudioFileByPath - ImageFilePicker opens native file dialog filtered to JPEG/PNG - Added Wails TypeScript bindings for both new methods
This commit is contained in:
@@ -67,3 +67,26 @@ func (fe *FrontendUtil) PlaylistFilePicker() (
|
||||
|
||||
return files, nil
|
||||
}
|
||||
|
||||
// ImageFilePicker opens a file selection dialog filtered to image
|
||||
// files (JPEG, PNG). Returns the selected file path, or empty
|
||||
// string if the user cancelled.
|
||||
func (fe *FrontendUtil) ImageFilePicker() (string, error) {
|
||||
file, err := runtime.OpenFileDialog(
|
||||
fe.ctx,
|
||||
runtime.OpenDialogOptions{
|
||||
Title: "Select Cover Art",
|
||||
Filters: []runtime.FileFilter{
|
||||
{
|
||||
DisplayName: "Image Files (*.jpg, *.jpeg, *.png)",
|
||||
Pattern: "*.jpg;*.jpeg;*.png",
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("could not open file dialog: %w", err)
|
||||
}
|
||||
|
||||
return file, nil
|
||||
}
|
||||
|
||||
@@ -172,3 +172,17 @@ func (tw *TagWriter) WriteTrackTags(trackID int64, changes TagChanges) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// WriteTrackTagsByPath resolves a file path to its audio_file.id and
|
||||
// delegates to WriteTrackTags. This is the frontend-facing entry
|
||||
// point since the frontend identifies tracks by FilePath.
|
||||
func (tw *TagWriter) WriteTrackTagsByPath(filePath string, changes TagChanges) error {
|
||||
ctx := context.Background()
|
||||
|
||||
audioFile, err := tw.db.Queries.GetAudioFileByPath(ctx, filePath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("resolve track by path %q: %w", filePath, err)
|
||||
}
|
||||
|
||||
return tw.WriteTrackTags(audioFile.ID, changes)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user