mirror of
https://github.com/ranaldsgift/KefinTweaks.git
synced 2026-11-05 15:52:47 +01:00
Fix user settings on admin accounts overriding default settings specified in the configuration for Optional CSS Modules
This commit is contained in:
1 parent
0cbb79e244
commit
f99f4401e9
2 files changed
+73
-62
No files matched your search
+59
-2
@@ -120,7 +120,7 @@
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Card Hover Effect',
|
||||
name: 'Disable Card Hover Effect',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/cardHoverEffect.css`,
|
||||
enabled: false
|
||||
},
|
||||
@@ -159,7 +159,44 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
colorSchemes: []
|
||||
colorSchemes: [],
|
||||
optionalIncludes: [
|
||||
{
|
||||
name: 'Media Bar Support',
|
||||
url: 'https://cdn.jsdelivr.net/gh/lscambo13/ElegantFin@main/Theme/assets/add-ons/media-bar-plugin-support-latest-min.css',
|
||||
enabled: true
|
||||
},
|
||||
{
|
||||
name: 'Media Bar Support (Nightly Version)',
|
||||
url: 'https://cdn.jsdelivr.net/gh/lscambo13/ElegantFin@main/Theme/assets/add-ons/media-bar-plugin-support-nightly.css',
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Disable Card Hover Effect',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/cardHoverEffect.css`,
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Center Overlay Play Button',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/centerPlayButton.css`,
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Extra Overlay Buttons',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/extraOverlayButtons.css`,
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Library Label Visibility',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/libraryLabelVisibility.css`,
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Solid App Bar',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/solidAppBar.css`,
|
||||
enabled: false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'GlassFin',
|
||||
@@ -218,6 +255,26 @@
|
||||
name: 'Watched Status Badges',
|
||||
url: 'https://cdn.jsdelivr.net/gh/KBH-Reeper/GlassFin@main/Theme/Styling/ActivateBadges.css',
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Disable Card Hover Effect',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/cardHoverEffect.css`,
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Center Overlay Play Button',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/centerPlayButton.css`,
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Library Label Visibility',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/libraryLabelVisibility.css`,
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
name: 'Solid App Bar',
|
||||
url: `${getKefinTweaksRoot()}skins/optional/ElegantFin/solidAppBar.css`,
|
||||
enabled: false
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
+14
-60
@@ -904,32 +904,15 @@ window.KefinTweaksConfig = ${JSON.stringify(configToBackup, null, 2)};`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get merged global optional includes (defaults + admin config)
|
||||
* Admin config should contain array of keys (strings), not objects
|
||||
* @returns {Array} Merged list of global optional includes
|
||||
* Get merged global optional includes
|
||||
* Merges default global includes with admin configuration
|
||||
* @returns {Array} Array of optional include objects
|
||||
*/
|
||||
function getMergedGlobalOptionalIncludes() {
|
||||
// Get default global optional includes from skinConfig.js
|
||||
const defaultGlobalIncludes = window.KefinTweaksDefaultSkinsConfig?.globalOptionalIncludes || [];
|
||||
|
||||
// Get admin-configured global optional includes from KefinTweaksConfig
|
||||
// Admin config should be an array of keys (strings)
|
||||
const adminGlobalIncludeKeys = window.KefinTweaksConfig?.optionalIncludes || [];
|
||||
|
||||
// Create a set of admin keys for quick lookup
|
||||
const adminKeysSet = new Set(adminGlobalIncludeKeys.filter(k => typeof k === 'string'));
|
||||
|
||||
// Start with defaults, then check if admin has added any new ones
|
||||
// For now, we only support defaults + admin keys
|
||||
// Admin can't override defaults, only add new ones via keys
|
||||
const merged = defaultGlobalIncludes.map(include => ({ ...include }));
|
||||
|
||||
// Note: Admin config now stores keys, not full objects
|
||||
// If admin wants to add new optional includes, they would need to add them to defaults
|
||||
// or we'd need to support a different structure. For now, we'll just use defaults
|
||||
// and check enabled state via keys
|
||||
|
||||
return merged;
|
||||
// We only support toggling existing defaults defined in skinConfig.js
|
||||
// User/Admin enabled states are applied via isOptionalIncludeEnabled()
|
||||
return (window.KefinTweaksDefaultSkinsConfig?.globalOptionalIncludes || []).map(include => ({ ...include }));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -945,10 +928,13 @@ window.KefinTweaksConfig = ${JSON.stringify(configToBackup, null, 2)};`;
|
||||
// Get merged global optional includes
|
||||
const globalOptionalIncludes = getMergedGlobalOptionalIncludes();
|
||||
|
||||
// Load enabled global optional includes (check enabled state via keys)
|
||||
// Load enabled global optional includes
|
||||
// This explicitly checks user localStorage config first via isOptionalIncludeEnabled
|
||||
globalOptionalIncludes.forEach(include => {
|
||||
const author = extractAuthorFromUrl(include.url);
|
||||
const key = generateOptionalIncludeKey('global', author, include.url);
|
||||
|
||||
// Check enabled state (User Config > Admin Config > Default)
|
||||
const isEnabled = isOptionalIncludeEnabled(key, include.enabled || false);
|
||||
|
||||
if (isEnabled && include.url) {
|
||||
@@ -961,6 +947,8 @@ window.KefinTweaksConfig = ${JSON.stringify(configToBackup, null, 2)};`;
|
||||
skin.optionalIncludes.forEach(include => {
|
||||
const author = extractAuthorFromUrl(include.url);
|
||||
const key = generateOptionalIncludeKey(skin.name, author, include.url);
|
||||
|
||||
// Check enabled state (User Config > Admin Config > Default)
|
||||
const isEnabled = isOptionalIncludeEnabled(key, include.enabled || false);
|
||||
|
||||
if (isEnabled && include.url) {
|
||||
@@ -2044,47 +2032,13 @@ window.KefinTweaksConfig = ${JSON.stringify(configToBackup, null, 2)};`;
|
||||
const key = generateOptionalIncludeKey('global', author, includeUrl);
|
||||
const enabled = checkbox.checked;
|
||||
|
||||
// Save only this specific key (Option 1: only save what user toggled)
|
||||
// Save only this specific key to user config
|
||||
saveOptionalIncludeState(key, enabled);
|
||||
|
||||
// Also update admin config with { key, enabled } (for initial enabled state)
|
||||
// Only update the specific key that was changed
|
||||
if (!window.KefinTweaksConfig) {
|
||||
window.KefinTweaksConfig = {};
|
||||
}
|
||||
if (!window.KefinTweaksConfig.optionalIncludes) {
|
||||
window.KefinTweaksConfig.optionalIncludes = [];
|
||||
}
|
||||
|
||||
// Find or create entry for this key in admin config
|
||||
const currentAdminEntries = window.KefinTweaksConfig.optionalIncludes || [];
|
||||
const adminEntryIndex = currentAdminEntries.findIndex(entry => {
|
||||
const entryKey = typeof entry === 'string' ? entry : (entry.key || '');
|
||||
return entryKey === key;
|
||||
});
|
||||
|
||||
if (adminEntryIndex >= 0) {
|
||||
// Update existing entry
|
||||
if (typeof currentAdminEntries[adminEntryIndex] === 'string') {
|
||||
currentAdminEntries[adminEntryIndex] = { key: key, enabled: enabled };
|
||||
} else {
|
||||
currentAdminEntries[adminEntryIndex].enabled = enabled;
|
||||
}
|
||||
} else {
|
||||
// Add new entry
|
||||
currentAdminEntries.push({ key: key, enabled: enabled });
|
||||
}
|
||||
|
||||
window.KefinTweaksConfig.optionalIncludes = currentAdminEntries;
|
||||
|
||||
// Save to JS Injector
|
||||
if (window.KefinTweaksUtils && window.KefinTweaksUtils.saveConfigToJavaScriptInjector) {
|
||||
window.KefinTweaksUtils.saveConfigToJavaScriptInjector(window.KefinTweaksConfig, { waitForLogin: false });
|
||||
}
|
||||
|
||||
// Apply changes immediately
|
||||
const currentSkinName = localStorage.getItem(STORAGE_KEY) || getDefaultSkinName();
|
||||
const currentSkin = SKINS_CONFIG.find(s => s.name === currentSkinName);
|
||||
|
||||
if (currentSkin) {
|
||||
// Unload and reload global optional includes
|
||||
unloadOptionalIncludesForSkin('global');
|
||||
|
||||
Reference in new issue
Block a user