From 0642ceba408c56283554bdd9508e3baa46228ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bryan=20Gald=C3=A1mez?= Date: Mon, 2 Jun 2025 02:06:54 -0600 Subject: [PATCH] refactor(ZenMods): rework how default value for mod preferences are set (#8783) this should avoid possible collisions --- src/zen/mods/ZenMods.mjs | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/zen/mods/ZenMods.mjs b/src/zen/mods/ZenMods.mjs index ab9c1e804..3cfdcfcdb 100644 --- a/src/zen/mods/ZenMods.mjs +++ b/src/zen/mods/ZenMods.mjs @@ -157,31 +157,33 @@ continue; } - if (type === 'checkbox') { - const value = Services.prefs.getBoolPref(property, false); - if (typeof defaultValue !== 'boolean') { - console.warn( - '[ZenMods]: Warning, invalid data type received for expected type boolean, skipping.' - ); - continue; - } + const getProperty = + type === 'checkbox' ? Services.prefs.getBoolPref : Services.prefs.getStringPref; + const setProperty = + type === 'checkbox' ? Services.prefs.setBoolPref : Services.prefs.setStringPref; - if (!value) { - Services.prefs.setBoolPref(property, defaultValue); - } - } else { - const value = Services.prefs.getStringPref(property, 'zen-property-no-saved'); + try { + getProperty(property); + } catch { + console.debug( + `[ZenMods]: Setting default value for ${property} to ${defaultValue} (${typeof defaultValue})` + ); - if (typeof defaultValue !== 'string' && typeof defaultValue !== 'number') { + if ( + typeof defaultValue !== 'boolean' && + typeof defaultValue !== 'string' && + typeof defaultValue !== 'number' + ) { console.warn( `[ZenMods]: Warning, invalid data type received (${typeof defaultValue}), skipping.` ); continue; } - if (value === 'zen-property-no-saved') { - Services.prefs.setStringPref(property, defaultValue.toString()); - } + setProperty( + property, + typeof defaultValue === 'boolean' ? defaultValue : defaultValue.toString() + ); } } }