KeepPlayerFocus pref, rework prefs page, always autoplay if you click on the next track

This commit is contained in:
Laptop
2025-02-26 22:48:26 +02:00
parent 3718ef7e66
commit 7a044a2dec
7 changed files with 170 additions and 132 deletions

View File

@@ -1,7 +1,6 @@
package cfg
import (
"fmt"
"log"
"os"
"strconv"
@@ -144,6 +143,7 @@ func defaultPreferences() {
DefaultPreferences.SearchSuggestions = &False
DefaultPreferences.DynamicLoadComments = &False
DefaultPreferences.KeepPlayerFocus = &False
}
func loadDefaultPreferences(loaded Preferences) {
@@ -238,21 +238,18 @@ func loadDefaultPreferences(loaded Preferences) {
} else {
DefaultPreferences.DynamicLoadComments = &False
}
if loaded.KeepPlayerFocus != nil {
DefaultPreferences.KeepPlayerFocus = loaded.KeepPlayerFocus
} else {
DefaultPreferences.KeepPlayerFocus = &False
}
}
func boolean(in string) bool {
return strings.Trim(strings.ToLower(in), " ") == "true"
}
type wrappedError struct {
err error
fault string
}
func (w wrappedError) Error() string {
return fmt.Sprintf("error loading %s: %s", w.fault, w.err)
}
func fromEnv() error {
env := os.Getenv("GET_WEB_PROFILES")
if env != "" {
@@ -264,7 +261,7 @@ func fromEnv() error {
var p Preferences
err := json.Unmarshal(S2b(env), &p)
if err != nil {
return wrappedError{err, "DEFAULT_PREFERENCES"}
return err
}
loadDefaultPreferences(p)
@@ -306,7 +303,7 @@ func fromEnv() error {
if env != "" {
num, err := strconv.ParseInt(env, 10, 64)
if err != nil {
return wrappedError{err, "CLIENT_ID_TTL"}
return err
}
ClientIDTTL = time.Duration(num) * time.Second
@@ -316,7 +313,7 @@ func fromEnv() error {
if env != "" {
num, err := strconv.ParseInt(env, 10, 64)
if err != nil {
return wrappedError{err, "USER_TTL"}
return err
}
UserTTL = time.Duration(num) * time.Second
@@ -326,7 +323,7 @@ func fromEnv() error {
if env != "" {
num, err := strconv.ParseInt(env, 10, 64)
if err != nil {
return wrappedError{err, "USER_CACHE_CLEAN_DELAY"}
return err
}
UserCacheCleanDelay = time.Duration(num) * time.Second
@@ -336,7 +333,7 @@ func fromEnv() error {
if env != "" {
num, err := strconv.ParseInt(env, 10, 64)
if err != nil {
return wrappedError{err, "TRACK_TTL"}
return err
}
TrackTTL = time.Duration(num) * time.Second
@@ -346,7 +343,7 @@ func fromEnv() error {
if env != "" {
num, err := strconv.ParseInt(env, 10, 64)
if err != nil {
return wrappedError{err, "TRACK_CACHE_CLEAN_DELAY"}
return err
}
TrackCacheCleanDelay = time.Duration(num) * time.Second
@@ -356,7 +353,7 @@ func fromEnv() error {
if env != "" {
num, err := strconv.ParseInt(env, 10, 64)
if err != nil {
return wrappedError{err, "PLAYLIST_TTL"}
return err
}
PlaylistTTL = time.Duration(num) * time.Second
@@ -366,7 +363,7 @@ func fromEnv() error {
if env != "" {
num, err := strconv.ParseInt(env, 10, 64)
if err != nil {
return wrappedError{err, "PLAYLIST_CACHE_CLEAN_DELAY"}
return err
}
PlaylistCacheCleanDelay = time.Duration(num) * time.Second
@@ -381,7 +378,7 @@ func fromEnv() error {
if env != "" {
num, err := strconv.ParseInt(env, 10, 64)
if err != nil {
return wrappedError{err, "DNS_CACHE_TTL"}
return err
}
DNSCacheTTL = time.Duration(num) * time.Second
@@ -412,7 +409,7 @@ func fromEnv() error {
var p []string
err := json.Unmarshal(S2b(env), &p)
if err != nil {
return wrappedError{err, "TRUSTED_PROXIES"}
return err
}
TrustedProxies = p
@@ -436,12 +433,8 @@ func init() {
if env := os.Getenv("SOUNDCLOAK_CONFIG"); env == "FROM_ENV" {
err := fromEnv()
if err != nil {
// So we only set default preferences if it fails to load that in
if err.(wrappedError).fault == "DEFAULT_PREFERENCES" {
defaultPreferences()
}
log.Println("failed to load config from environment:", err)
log.Println("Warning: failed to load config from environment:", err)
defaultPreferences()
}
return
@@ -451,7 +444,7 @@ func init() {
data, err := os.ReadFile(filename)
if err != nil {
log.Printf("failed to load config from %s: %s\n", filename, err)
log.Printf("Warning: failed to load config from %s: %s\n", filename, err)
defaultPreferences()
return
}