From 335e918b1129ef6e0dd03a4713de90e68fbb23e3 Mon Sep 17 00:00:00 2001 From: silverwind Date: Sun, 31 Jul 2022 20:29:55 +0200 Subject: Clean up and fix clone button script (#20415) The button 'primary' class needs to be set in a synchronous script to prevent flicker of the button which was regressed recently, fixed that. Additionally, reduced the two script tags to just one, the previous scripts were actually initializing the buttons thrice on the empty repo page, now it only initializes once. Finally, removed duplicate code and re-used the inline function in the update code as well. I had to split out the script into a separate template as on the empty repo page, the script needs access to the clone URL span in the example text, which is rendered below the clone buttons, so buttons and script could not be combined. --- web_src/js/features/repo-common.js | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) (limited to 'web_src/js') diff --git a/web_src/js/features/repo-common.js b/web_src/js/features/repo-common.js index b0ecc5a651..1cf67401be 100644 --- a/web_src/js/features/repo-common.js +++ b/web_src/js/features/repo-common.js @@ -44,8 +44,6 @@ export function initRepoArchiveLinks() { } export function initRepoCloneLink() { - const defaultGitProtocol = 'https'; // ssh or https - const $repoCloneSsh = $('#repo-clone-ssh'); const $repoCloneHttps = $('#repo-clone-https'); const $inputLink = $('#repo-clone-url'); @@ -54,41 +52,19 @@ export function initRepoCloneLink() { return; } - const updateUi = () => { - let isSSH = (localStorage.getItem('repo-clone-protocol') || defaultGitProtocol) === 'ssh'; - // there must be at least one clone button (by context/repo.go). if no ssh, then there must be https. - if (isSSH && $repoCloneSsh.length === 0) { - isSSH = false; - } else if (!isSSH && $repoCloneHttps.length === 0) { - isSSH = true; - } - const cloneLink = (isSSH ? $repoCloneSsh : $repoCloneHttps).attr('data-link'); - $inputLink.val(cloneLink); - if (isSSH) { - $repoCloneSsh.addClass('primary'); - $repoCloneHttps.removeClass('primary'); - } else { - $repoCloneSsh.removeClass('primary'); - $repoCloneHttps.addClass('primary'); - } - // the empty repo guide - $('.quickstart .empty-repo-guide .clone-url').text(cloneLink); - }; - updateUi(); - + // restore animation after first init setTimeout(() => { - // restore animation after first init $repoCloneSsh.removeClass('no-transition'); $repoCloneHttps.removeClass('no-transition'); }, 100); $repoCloneSsh.on('click', () => { localStorage.setItem('repo-clone-protocol', 'ssh'); - updateUi(); + window.updateCloneStates(); }); $repoCloneHttps.on('click', () => { localStorage.setItem('repo-clone-protocol', 'https'); - updateUi(); + window.updateCloneStates(); }); $inputLink.on('click', () => { -- cgit v1.2.3