@@ -5397,6 +5391,16 @@
btn.addEventListener('click', () => setTab(btn.dataset.manageTab));
});
+ content.querySelector('#manageRestoreDefaultsBtn')?.addEventListener('click', async () => {
+ const didReset = await handleResetConfig(parentModalInstance || manageModal);
+ if (didReset) {
+ manageModal.close();
+ }
+ });
+ content.querySelector('#manageResetAllUsersBtn')?.addEventListener('click', () => {
+ handleResetAllUsersConfig();
+ });
+
// Export panel
const exportTa = content.querySelector('#manageExportConfigTextarea');
if (exportTa) {
@@ -6077,16 +6081,19 @@
}
}
+ /**
+ * @returns {Promise} true if defaults were restored
+ */
async function handleResetConfig(modalInstance) {
const userIsAdmin = await isAdmin();
if (!userIsAdmin) {
alert('You must be an administrator to reset configuration.');
- return;
+ return false;
}
const confirmed = confirm('This will restore the KefinTweaks configuration to its defaults. It cannot be undone. Are you sure you want to continue?');
if (!confirmed) {
- return;
+ return false;
}
try {
@@ -6114,6 +6121,7 @@
modalInstance.close();
}
openConfigurationModal();
+ return true;
} catch (error) {
console.error('[KefinTweaks Configuration] Error resetting config:', error);
if (window.KefinTweaksToaster && window.KefinTweaksToaster.toast) {
@@ -6121,6 +6129,43 @@
} else {
alert(`Error resetting configuration: ${error.message}`);
}
+ return false;
+ }
+ }
+
+ /**
+ * Bump configVersion so clients clear kefinTweaks* localStorage on next load (see injector.js).
+ */
+ async function handleResetAllUsersConfig() {
+ 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 local settings on their next visit. This action cannot be undone. Are you sure you want to continue?');
+ if (!confirmed) {
+ return;
+ }
+
+ try {
+ const config = await getKefinTweaksConfig();
+ config.configVersion = Date.now();
+
+ await KefinTweaksUtils.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}`);
+ }
}
}