0.3.21
This commit is contained in:
@@ -62,6 +62,7 @@ var configurationCatalogue = []configurationDefinition{
|
||||
{Key: "continueWatching.enabled", Name: "Continue Watching", Description: "Show the Continue Watching row.", Type: "boolean", Scopes: []string{"global", "user", "device"}, Default: true},
|
||||
{Key: "continueWatching.showNextUp", Name: "Continue Watching: Next Up", Description: "Include an unstarted next episode in Continue Watching.", Type: "boolean", Scopes: []string{"global", "user", "device"}, Default: true},
|
||||
{Key: "continueWatching.progressColour", Name: "Progress bar colour", Description: "Choose the progress bar treatment.", Type: "enum", Scopes: []string{"global", "user", "device"}, Default: "emby", Options: []string{"emby", "white"}},
|
||||
{Key: "detailExperience", Name: "Detail page experience", Description: "Which detail-page layout a viewer sees.", Type: "enum", Scopes: []string{"global", "user", "device"}, Default: "v1", Options: []string{"v1", "v2"}},
|
||||
{Key: "presentation.fontFamily", Name: "App font family", Description: "Choose the bundled font used in Memby’s typography trial areas.", Type: "enum", Scopes: []string{"global"}, Default: "system", Options: []string{"system", "inter"}},
|
||||
{Key: "ratings.enabled", Name: "Ratings", Description: "Show ratings throughout the catalogue.", Type: "boolean", Scopes: []string{"global", "user", "device"}, Default: true},
|
||||
{Key: "genres.enabled", Name: "Genres", Description: "Show genre browsing controls.", Type: "boolean", Scopes: []string{"global", "user", "device"}, Default: true},
|
||||
@@ -281,6 +282,22 @@ func configurationValue(policy store.FeaturePolicy, definition configurationDefi
|
||||
return definition.Default, "default"
|
||||
}
|
||||
|
||||
// detailExperienceFor resolves the "detailExperience" configuration value for a session,
|
||||
// validating the stored value rather than trusting its type: Values/UserValues/DeviceValues
|
||||
// are opaque JSON, and a value that is not exactly "v1" or "v2" must never reach the client
|
||||
// as something it has to guess how to handle.
|
||||
func detailExperienceFor(policy store.FeaturePolicy, sess store.Session) string {
|
||||
definition, ok := configurationDefinitionFor("detailExperience")
|
||||
if !ok {
|
||||
return "v1"
|
||||
}
|
||||
value, _ := configurationValue(policy, definition, sess)
|
||||
if text, ok := value.(string); ok && (text == "v1" || text == "v2") {
|
||||
return text
|
||||
}
|
||||
return "v1"
|
||||
}
|
||||
|
||||
func configurationPayload(policy store.FeaturePolicy, sessions ...store.Session) []evaluatedConfiguration {
|
||||
result := make([]evaluatedConfiguration, 0, len(configurationCatalogue))
|
||||
for _, definition := range configurationCatalogue {
|
||||
|
||||
Reference in New Issue
Block a user