refactor: rename Format to Quality, add container Audio/Video sub-pickers

- Rename 'Format' button to 'Quality' in settings (audio_quality/video_quality)
- Add DefaultAudioContainer and DefaultVideoContainer to UserPreferences
- Container settings now has Audio/Video sub-pickers (mp3/m4a/opus vs mp4/mkv/webm)
- Add migration 003 for new container columns
- Update repo layer and playlist flow for new fields
- Update back routing: back_quality, back_container
This commit is contained in:
2026-06-25 16:03:03 +03:30
parent e08ed77884
commit 785e20bf94
7 changed files with 112 additions and 53 deletions

View File

@@ -76,13 +76,13 @@ func (s *Store) GetOrCreatePreferences(userID int64) (*domain.UserPreferences, e
func (s *Store) getPreferences(userID int64) (*domain.UserPreferences, error) {
row := s.db.QueryRow(`
SELECT default_media_type, default_audio_format, default_video_format,
default_container, default_language
default_audio_container, default_video_container, default_language
FROM user_preferences WHERE user_id = ?
`, userID)
var p domain.UserPreferences
var mediaType string
if err := row.Scan(&mediaType, &p.DefaultAudioFormat, &p.DefaultVideoFormat,
&p.DefaultContainer, &p.DefaultLanguage); err != nil {
&p.DefaultAudioContainer, &p.DefaultVideoContainer, &p.DefaultLanguage); err != nil {
return nil, err
}
switch mediaType {
@@ -110,10 +110,12 @@ func mediaTypeToString(mt domain.MediaType) string {
func (s *Store) UpdatePreferences(userID int64, prefs *domain.UserPreferences) error {
_, err := s.db.Exec(`
UPDATE user_preferences SET default_media_type=?, default_audio_format=?,
default_video_format=?, default_container=?, default_language=?
default_video_format=?, default_audio_container=?,
default_video_container=?, default_language=?
WHERE user_id=?
`, mediaTypeToString(prefs.DefaultMediaType), prefs.DefaultAudioFormat,
prefs.DefaultVideoFormat, prefs.DefaultContainer, prefs.DefaultLanguage, userID)
prefs.DefaultVideoFormat, prefs.DefaultAudioContainer,
prefs.DefaultVideoContainer, prefs.DefaultLanguage, userID)
return err
}