mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-08-26 14:38:04 +02:00
This PR reduces the complexity of the system setting system. It only needs one line to introduce a new option, and the option can be used anywhere out-of-box. It is still high-performant (and more performant) because the config values are cached in the config system.
24 lines
860 B
JavaScript
24 lines
860 B
JavaScript
import {showTemporaryTooltip} from '../../modules/tippy.js';
|
|
import {POST} from '../../modules/fetch.js';
|
|
|
|
const {appSubUrl} = window.config;
|
|
|
|
export function initAdminConfigs() {
|
|
const elAdminConfig = document.querySelector('.page-content.admin.config');
|
|
if (!elAdminConfig) return;
|
|
|
|
for (const el of elAdminConfig.querySelectorAll('input[type="checkbox"][data-config-dyn-key]')) {
|
|
el.addEventListener('change', async () => {
|
|
try {
|
|
const resp = await POST(`${appSubUrl}/admin/config`, {
|
|
data: new URLSearchParams({key: el.getAttribute('data-config-dyn-key'), value: el.checked}),
|
|
});
|
|
const json = await resp.json();
|
|
if (json.errorMessage) throw new Error(json.errorMessage);
|
|
} catch (ex) {
|
|
showTemporaryTooltip(el, ex.toString());
|
|
el.checked = !el.checked;
|
|
}
|
|
});
|
|
}
|
|
}
|