From c21735b49a5dd8ab6a2f8f6085d650dcfb411fad Mon Sep 17 00:00:00 2001
From: wxiaoguang <wxiaoguang@gmail.com>
Date: Wed, 9 Mar 2022 12:42:29 +0800
Subject: [PATCH] Ensure isSSH is set whenever DISABLE_HTTP_GIT is set (#19028)

When DISABLE_HTTP_GIT is set we should always show the SSH button
---
 templates/repo/clone_buttons.tmpl | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/templates/repo/clone_buttons.tmpl b/templates/repo/clone_buttons.tmpl
index 29d3fe76d7..d4b822521c 100644
--- a/templates/repo/clone_buttons.tmpl
+++ b/templates/repo/clone_buttons.tmpl
@@ -19,17 +19,24 @@
 	</button>
 {{end}}
 {{if not (and $.DisableHTTP $.DisableSSH)}}
-	<script defer>
-		const isSSH = localStorage.getItem('repo-clone-protocol') === 'ssh';
-		const sshButton = document.getElementById('repo-clone-ssh');
-		const httpsButton = document.getElementById('repo-clone-https');
-		const input = document.getElementById('repo-clone-url');
-		if (input) input.value = (isSSH ? sshButton : httpsButton).getAttribute('data-link');
-		if (sshButton) sshButton.classList[isSSH ? 'add' : 'remove']('primary');
-		if (httpsButton) httpsButton.classList[isSSH ? 'remove' : 'add']('primary');
-		setTimeout(() => {
-			if (sshButton) sshButton.classList.remove('no-transition');
-			if (httpsButton) httpsButton.classList.remove('no-transition');
-		}, 100);
+	<script>
+		<!-- /* eslint-disable */ -->
+		window.config.pageData['repoCloneButtons']= {httpsDisabled: {{$.DisableHTTP}}};
+	</script>
+	<script>
+		(() => {
+			const tmplData = window.config.pageData.repoCloneButtons;
+			const isSSH = tmplData.httpsDisabled || localStorage.getItem('repo-clone-protocol') === 'ssh';
+			const sshButton = document.getElementById('repo-clone-ssh');
+			const httpsButton = document.getElementById('repo-clone-https');
+			const input = document.getElementById('repo-clone-url');
+			if (input) input.value = (isSSH ? sshButton : httpsButton).getAttribute('data-link');
+			if (sshButton) sshButton.classList[isSSH ? 'add' : 'remove']('primary');
+			if (httpsButton) httpsButton.classList[isSSH ? 'remove' : 'add']('primary');
+			setTimeout(() => {
+				if (sshButton) sshButton.classList.remove('no-transition');
+				if (httpsButton) httpsButton.classList.remove('no-transition');
+			}, 100);
+		})();
 	</script>
 {{end}}