code.gitea.io/gitea@v1.22.3/web_src/js/features/repo-migration.js (about)

     1  import {hideElem, showElem, toggleElem} from '../utils/dom.js';
     2  
     3  const service = document.getElementById('service_type');
     4  const user = document.getElementById('auth_username');
     5  const pass = document.getElementById('auth_password');
     6  const token = document.getElementById('auth_token');
     7  const mirror = document.getElementById('mirror');
     8  const lfs = document.getElementById('lfs');
     9  const lfsSettings = document.getElementById('lfs_settings');
    10  const lfsEndpoint = document.getElementById('lfs_endpoint');
    11  const items = document.querySelectorAll('#migrate_items input[type=checkbox]');
    12  
    13  export function initRepoMigration() {
    14    checkAuth();
    15    setLFSSettingsVisibility();
    16  
    17    user?.addEventListener('input', () => {checkItems(false)});
    18    pass?.addEventListener('input', () => {checkItems(false)});
    19    token?.addEventListener('input', () => {checkItems(true)});
    20    mirror?.addEventListener('change', () => {checkItems(true)});
    21    document.getElementById('lfs_settings_show')?.addEventListener('click', (e) => {
    22      e.preventDefault();
    23      e.stopPropagation();
    24      showElem(lfsEndpoint);
    25    });
    26    lfs?.addEventListener('change', setLFSSettingsVisibility);
    27  
    28    const cloneAddr = document.getElementById('clone_addr');
    29    cloneAddr?.addEventListener('change', () => {
    30      const repoName = document.getElementById('repo_name');
    31      if (cloneAddr.value && !repoName?.value) { // Only modify if repo_name input is blank
    32        repoName.value = cloneAddr.value.match(/^(.*\/)?((.+?)(\.git)?)$/)[3];
    33      }
    34    });
    35  }
    36  
    37  function checkAuth() {
    38    if (!service) return;
    39    const serviceType = Number(service.value);
    40  
    41    checkItems(serviceType !== 1);
    42  }
    43  
    44  function checkItems(tokenAuth) {
    45    let enableItems;
    46    if (tokenAuth) {
    47      enableItems = token?.value !== '';
    48    } else {
    49      enableItems = user?.value !== '' || pass?.value !== '';
    50    }
    51    if (enableItems && Number(service?.value) > 1) {
    52      if (mirror?.checked) {
    53        for (const item of items) {
    54          item.disabled = item.name !== 'wiki';
    55        }
    56        return;
    57      }
    58      for (const item of items) item.disabled = false;
    59    } else {
    60      for (const item of items) item.disabled = true;
    61    }
    62  }
    63  
    64  function setLFSSettingsVisibility() {
    65    if (!lfs) return;
    66    const visible = lfs.checked;
    67    toggleElem(lfsSettings, visible);
    68    hideElem(lfsEndpoint);
    69  }