mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 08:21:11 +00: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;
 | 
						|
      }
 | 
						|
    });
 | 
						|
  }
 | 
						|
}
 |