From 86ed47e622dabf5c27d60f00883fff46bd349d95 Mon Sep 17 00:00:00 2001
From: Norwin <noerw@users.noreply.github.com>
Date: Fri, 9 Sep 2022 08:38:51 +0200
Subject: [PATCH] Make the vscode clone link respect transport protocol
 (#20557)

---
 templates/repo/clone_script.tmpl | 5 +++++
 templates/repo/home.tmpl         | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/templates/repo/clone_script.tmpl b/templates/repo/clone_script.tmpl
index 48b7ad3299..afd90040fb 100644
--- a/templates/repo/clone_script.tmpl
+++ b/templates/repo/clone_script.tmpl
@@ -1,6 +1,8 @@
 <script>
 	// synchronously set clone button states and urls here to avoid flickering
 	// on page load. initRepoCloneLink calls this when proto changes.
+	// this applies the protocol-dependant clone url to all elements with the
+	// `js-clone-url` and `js-clone-url-vsc` classes.
 	// TODO: This localStorage setting should be moved to backend user config
 	// so it's available during rendering, then this inline script can be removed.
 	(window.updateCloneStates = function() {
@@ -19,5 +21,8 @@
 		for (const el of document.getElementsByClassName('js-clone-url')) {
 			el[el.nodeName === 'INPUT' ? 'value' : 'textContent'] = link;
 		}
+		for (const el of document.getElementsByClassName('js-clone-url-vsc')) {
+			el['href'] = 'vscode://vscode.git/clone?url=' + encodeURIComponent(link);
+		}
 	})();
 </script>
diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl
index 69af36ac68..fe5af82d1a 100644
--- a/templates/repo/home.tmpl
+++ b/templates/repo/home.tmpl
@@ -126,7 +126,7 @@
 									<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "mr-3"}}{{.locale.Tr "repo.download_tar"}}</a>
 									<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.bundle" rel="nofollow">{{svg "octicon-package" 16 "mr-3"}}{{.locale.Tr "repo.download_bundle"}}</a>
 								{{end}}
-								<a class="item" href="vscode://vscode.git/clone?url={{$.RepoCloneLink.HTTPS}}">{{svg "gitea-vscode" 16 "mr-3"}}{{.locale.Tr "repo.clone_in_vsc"}}</a>
+								<a class="item js-clone-url-vsc" href="vscode://vscode.git/clone?url={{.CloneButtonOriginLink.HTTPS}}">{{svg "gitea-vscode" 16 "mr-3"}}{{.locale.Tr "repo.clone_in_vsc"}}</a>
 							</div>
 						</button>
 					</div>