Feature reset config users (#85)

* feat: Implement Reset All User Settings

* fix: reset selected skin and color scheme

* fix: reset all local kefinTweaks storage

* fix: move reset settings button

* fix: reset button style

* fix: correct button text
This commit is contained in:
adripo
2026-02-13 19:39:06 -05:00
committed by GitHub
parent 6f5553dec1
commit 74c78413f4
2 changed files with 199 additions and 136 deletions
+43
View File
@@ -2202,6 +2202,9 @@
<button class="emby-button raised" id="importConfigBtn" style="padding: 0.75em 2em; font-size: 1em;">
<span>Import</span>
</button>
<button class="emby-button raised block button-delete" id="resetAllUsersBtn" style="padding: 0.75em 2em; font-size: 1em; font-weight: 500;">
<span>Reset All Users Local Settings</span>
</button>
`;
// Create modal using ModalSystem
@@ -4437,6 +4440,11 @@
resetBtn.addEventListener('click', () => handleResetConfig(modalInstance));
}
const resetAllUsersBtn = modalInstance.dialogFooter?.querySelector('#resetAllUsersBtn');
if (resetAllUsersBtn) {
resetAllUsersBtn.addEventListener('click', () => handleResetAllUsersConfig(modalInstance));
}
// Export button handler
const exportBtn = modalInstance.dialogFooter?.querySelector('#exportConfigBtn');
if (exportBtn) {
@@ -5462,6 +5470,41 @@ window.KefinTweaksConfig = ${JSON.stringify(config, null, 2)};`;
}
}
async function handleResetAllUsersConfig(modalInstance) {
const userIsAdmin = await isAdmin();
if (!userIsAdmin) {
alert('You must be an administrator to reset configuration for all users.');
return;
}
const confirmed = confirm('WARNING: This will force ALL users to reset their KefinTweaks settings to the default configuration on their next visit. This action cannot be undone. Are you sure you want to continue?');
if (!confirmed) {
return;
}
try {
const config = await getKefinTweaksConfig();
// Update the configVersion to current timestamp
// This will trigger the reset logic in injector.js for all clients
config.configVersion = Date.now();
await saveConfigToJavaScriptInjector(config);
if (window.KefinTweaksToaster && window.KefinTweaksToaster.toast) {
window.KefinTweaksToaster.toast('Reset signal sent. All users will be reset on next load.');
} else {
alert('Reset signal sent. All users will be reset on next load.');
}
} catch (error) {
console.error('[KefinTweaks Configuration] Error resetting all users config:', error);
if (window.KefinTweaksToaster && window.KefinTweaksToaster.toast) {
window.KefinTweaksToaster.toast(`Error resetting configuration: ${error.message}`, '5');
} else {
alert(`Error resetting configuration: ${error.message}`);
}
}
}
// Helper to parse JSON fields safely
function parseJSONField(fieldId, defaultValue) {
try {