Properly parse empty setting value for booleans and integers
This commit is contained in:
parent
7f6af3c304
commit
3e42c7027f
2 changed files with 22 additions and 9 deletions
|
@ -80,19 +80,31 @@ function resolveKey<ValueType extends RegistryValueType, DefaultType>(
|
||||||
) : ValueType | DefaultType {
|
) : ValueType | DefaultType {
|
||||||
let value = resolver(key.key);
|
let value = resolver(key.key);
|
||||||
|
|
||||||
if(typeof value === "string") {
|
const keys = [key.key];
|
||||||
return decodeValueFromString(value, key.valueType);
|
if(Array.isArray(key.fallbackKeys)) {
|
||||||
|
keys.push(...key.fallbackKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* trying fallback values */
|
for(const resolveKey of keys) {
|
||||||
for(const fallback of key.fallbackKeys || []) {
|
value = resolver(resolveKey);
|
||||||
value = resolver(fallback);
|
|
||||||
if(typeof value !== "string") {
|
if(typeof value !== "string") {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (key.valueType) {
|
||||||
|
case "number":
|
||||||
|
case "boolean":
|
||||||
|
if(value.length === 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if(key.fallbackImports) {
|
if(key.fallbackImports) {
|
||||||
const fallbackValueImporter = key.fallbackImports[fallback];
|
const fallbackValueImporter = key.fallbackImports[resolveKey];
|
||||||
if(fallbackValueImporter) {
|
if(fallbackValueImporter) {
|
||||||
return fallbackValueImporter(value);
|
return fallbackValueImporter(value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,10 +34,11 @@ export function joinClassList(...classes: any[]) : string {
|
||||||
return classes.filter(value => typeof value === "string" && value.length > 0).join(" ");
|
return classes.filter(value => typeof value === "string" && value.length > 0).join(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useGlobalSetting<V extends RegistryValueType, DV>(key: RegistryKey<V>, defaultValue: DV) : V | DV;
|
|
||||||
export function useGlobalSetting<V extends RegistryValueType>(key: ValuedRegistryKey<V>, defaultValue?: V) : V;
|
export function useGlobalSetting<V extends RegistryValueType>(key: ValuedRegistryKey<V>, defaultValue?: V) : V;
|
||||||
export function useGlobalSetting<V extends RegistryValueType, DV>(key: RegistryKey<V>, defaultValue: DV) : V | DV {
|
export function useGlobalSetting<V extends RegistryValueType, DV>(key: RegistryKey<V>, defaultValue: DV) : V | DV;
|
||||||
const [ value, setValue ] = useState(settings.getValue(key, defaultValue));
|
|
||||||
|
export function useGlobalSetting(key, defaultValue) {
|
||||||
|
const [ value, setValue ] = useState(arguments.length > 1 ? settings.getValue(key, defaultValue) : settings.getValue(key));
|
||||||
useEffect(() => settings.globalChangeListener(key, value => setValue(value)), []);
|
useEffect(() => settings.globalChangeListener(key, value => setValue(value)), []);
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
|
|
Loading…
Add table
Reference in a new issue