diff options
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.js | 15 |
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; } |