Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/pages/projects/find_file/ref_switcher/ref_switcher_utils.js')
-rw-r--r--app/assets/javascripts/pages/projects/find_file/ref_switcher/ref_switcher_utils.js15
1 files changed, 14 insertions, 1 deletions
diff --git a/app/assets/javascripts/pages/projects/find_file/ref_switcher/ref_switcher_utils.js b/app/assets/javascripts/pages/projects/find_file/ref_switcher/ref_switcher_utils.js
index 5fecd024f1a..21a30f1c54b 100644
--- a/app/assets/javascripts/pages/projects/find_file/ref_switcher/ref_switcher_utils.js
+++ b/app/assets/javascripts/pages/projects/find_file/ref_switcher/ref_switcher_utils.js
@@ -10,19 +10,32 @@ export function generateRefDestinationPath(selectedRef, namespace) {
return window.location.href;
}
+ let refType = null;
const { pathname } = window.location;
const encodedHash = '%23';
const [projectRootPath] = pathname.split(namespace);
+ let actualRef = selectedRef;
+
+ const matches = selectedRef.match(/^refs\/(heads|tags)\/(.+)/);
+ if (matches) {
+ [, refType, actualRef] = matches;
+ }
const destinationPath = joinPaths(
projectRootPath,
namespace,
- encodeURI(selectedRef).replace(/#/g, encodedHash),
+ encodeURI(actualRef).replace(/#/g, encodedHash),
);
const newURL = new URL(window.location);
newURL.pathname = destinationPath;
+ if (refType) {
+ newURL.searchParams.set('ref_type', refType.toLowerCase());
+ } else {
+ newURL.searchParams.delete('ref_type');
+ }
+
return newURL.href;
}