fix: add comments prefix for /foo/

Links that end in trailing slash but don't have "/comments/" should add
"/comments" prefix but don't because the regex match succeeds.  Fix the
regular expression to be more robust and add prefix for paths like

- /foo/
- /////foo
- /foo/////
- ////foo////

and not add prefix for paths like

- /comments/foo
- /////comments/foo
- /comments/////foo
- ////comments////foo
- ////comments////foo/////
This commit is contained in:
Jason Kim 2021-04-22 23:32:31 -07:00
parent e3df6c4333
commit 8e11c48850
No known key found for this signature in database
GPG Key ID: E1FDF0CB573FE944
1 changed files with 9 additions and 6 deletions

View File

@ -485,13 +485,16 @@ function redirectReddit(url, initiator, type) {
} else if (url.host === "redd.it") {
if (
redditInstance.includes("teddit") &&
!url.pathname.match(/^\/\S+\//)
!url.pathname.match(/^\/+[^\/]+\/+[^\/]/)
) {
// As of 2021-04-22, redirects for teddit redd.it links don't work unless
// the path starts with "/comments". It appears that all links that
// don't start with "/comments" are interchangeable with the ones
// that do start with "/comments", so manually add that prefix if it is
// missing.
// As of 2021-04-22, redirects for teddit redd.it/foo links don't work.
// It appears that adding "/comments" as a prefix works, so manually add
// that prefix if it is missing. Even though redd.it/comments/foo links
// don't seem to work or exist, guard against affecting those kinds of
// paths.
//
// Note the difference between redd.it/comments/foo (doesn't work) and
// teddit.net/comments/foo (works).
return `${redditInstance}/comments${url.pathname}${url.search}`;
}
}