Provide a cropping tool on the avatar editing page, allowing users to select the cropping area themselves. This way, users can decide the displayed area of the image, rather than us deciding for them. --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: Giteabot <teabot@gitea.io>
32 lines
1 KiB
TypeScript
32 lines
1 KiB
TypeScript
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}`);
|
|
}
|
|
})();
|
|
},
|
|
});
|
|
}
|