aboutsummaryrefslogtreecommitdiffstats
path: root/web_src/js/features/repo-settings-branches.ts
blob: 40cdf9f9817400e0cf6ae02bb18a278423977499 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import {createSortable} from '../modules/sortable.ts';
import {POST} from '../modules/fetch.ts';
import {showErrorToast} from '../modules/toast.ts';
import {queryElemChildren} from '../utils/dom.ts';

export function initRepoSettingsBranchesDrag() {
  const protectedBranchesList = document.querySelector('#protected-branches-list');
  if (!protectedBranchesList) return;

  createSortable(protectedBranchesList, {
    handle: '.drag-handle',
    animation: 150,

    onEnd: () => {
      (async () => {
        const itemElems = queryElemChildren(protectedBranchesList, '.item[data-id]');
        const itemIds = Array.from(itemElems, (el) => parseInt(el.getAttribute('data-id')));

        try {
          await POST(protectedBranchesList.getAttribute('data-update-priority-url'), {
            data: {
              ids: itemIds,
            },
          });
        } catch (err) {
          const errorMessage = String(err);
          showErrorToast(`Failed to update branch protection rule priority:, error: ${errorMessage}`);
        }
      })();
    },
  });
}