51 lines
1015 B
Go
51 lines
1015 B
Go
package backend
|
|
|
|
import (
|
|
"context"
|
|
"os/exec"
|
|
"runtime"
|
|
|
|
wailsRuntime "github.com/wailsapp/wails/v2/pkg/runtime"
|
|
)
|
|
|
|
func OpenFolderInExplorer(path string) error {
|
|
var cmd *exec.Cmd
|
|
|
|
switch runtime.GOOS {
|
|
case "windows":
|
|
cmd = exec.Command("explorer", path)
|
|
case "darwin": // macOS
|
|
cmd = exec.Command("open", path)
|
|
case "linux":
|
|
cmd = exec.Command("xdg-open", path)
|
|
default:
|
|
cmd = exec.Command("xdg-open", path)
|
|
}
|
|
|
|
return cmd.Start()
|
|
}
|
|
|
|
func SelectFolderDialog(ctx context.Context, defaultPath string) (string, error) {
|
|
// If defaultPath is empty, use default music path
|
|
if defaultPath == "" {
|
|
defaultPath = GetDefaultMusicPath()
|
|
}
|
|
|
|
options := wailsRuntime.OpenDialogOptions{
|
|
Title: "Select Download Folder",
|
|
DefaultDirectory: defaultPath,
|
|
}
|
|
|
|
selectedPath, err := wailsRuntime.OpenDirectoryDialog(ctx, options)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
// If user cancelled, selectedPath will be empty
|
|
if selectedPath == "" {
|
|
return "", nil
|
|
}
|
|
|
|
return selectedPath, nil
|
|
}
|