From 0799b93000f62ffe265547bf3e2c11e9926e0af4 Mon Sep 17 00:00:00 2001 From: Jason Kim Date: Thu, 8 Apr 2021 22:30:41 -0700 Subject: [PATCH 1/5] feat: add i.redd.it to reddit targets Add "i.redd.it" to list of urls to redirect for Reddit. Although the redirect works, the link should be invalid because it still needs an "img" path prefix. --- src/assets/javascripts/helpers/reddit.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index 7c89a25..7edf037 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -3,6 +3,7 @@ const targets = [ "np.reddit.com", "new.reddit.com", "amp.reddit.com", + "i.redd.it", ]; const redirects = [ // libreddit: privacy w/ modern UI From 397fd8cffbb2f39e8f31304d4238f9087f0c19a5 Mon Sep 17 00:00:00 2001 From: Jason Kim Date: Thu, 8 Apr 2021 22:38:52 -0700 Subject: [PATCH 2/5] feat: add img prefix for i.redd.it "i.redd.it/" redirects "libredd.it/". Make it redirect to "libredd.it/img/". Tested only for "libredd.it". --- src/pages/background/background.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 9df083b..e93e120 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -448,6 +448,9 @@ function redirectReddit(url, initiator, type) { if (type !== "main_frame" || url.pathname.match(redditBypassPaths)) { return null; } + if (url.host === "i.redd.it") { + return `${redditInstance}/img${url.pathname}${url.search}`; + } return `${redditInstance}${url.pathname}${url.search}`; } From 123cca4e5cda2e0dfb42b3b41bf7e1412279514e Mon Sep 17 00:00:00 2001 From: Jason Kim Date: Thu, 8 Apr 2021 23:37:43 -0700 Subject: [PATCH 3/5] fix: redirect teddit differently Teddit image urls are different from libreddit. Handle each separately. Test manually: - libredd.it: pass - libreddit.spike.codes: pass - libreddit.kavin.rocks: pass - libreddit.insanity.wtf: fail (site doesn't work in general) - libreddit.dothq.co: pass - teddit.net: mostly fail - teddit.ggc-project.de: mostly fail - teddit.kavin.rocks: mostly fail - old.reddit.com: fail - i.reddit.com: fail - snew.notabug.io: fail (site doesn't work in general) Teddit image urls have two issues. First, the links almost never work (404) if the image url is visited directly before visiting the main page. Once the main page is visited, however, the image url starts working. I'm guessing this is an issue with teddit instances not fetching images unless the main page is accessed. Second, some image links are different/incompatible for some reason. For example, turns into . Libreddit seems to not have this issue. --- src/pages/background/background.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pages/background/background.js b/src/pages/background/background.js index e93e120..bd2d04c 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -449,7 +449,12 @@ function redirectReddit(url, initiator, type) { return null; } if (url.host === "i.redd.it") { - return `${redditInstance}/img${url.pathname}${url.search}`; + if (redditInstance.includes("libredd")) { + return `${redditInstance}/img${url.pathname}${url.search}`; + } else if (redditInstance.includes("teddit")) { + let pathWithoutSlash = url.pathname.slice(1); + return `${redditInstance}/pics/w:null_${pathWithoutSlash}${url.search}` + } } return `${redditInstance}${url.pathname}${url.search}`; } From e86895b00882d900e9d828a852df54d87211c988 Mon Sep 17 00:00:00 2001 From: Jason Kim Date: Fri, 9 Apr 2021 00:00:42 -0700 Subject: [PATCH 4/5] fix: don't redirect for rest of instances Unbreak old.reddit.com and i.reddit.com by ignoring image redirects for them. --- src/pages/background/background.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/background/background.js b/src/pages/background/background.js index bd2d04c..2534279 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -454,6 +454,8 @@ function redirectReddit(url, initiator, type) { } else if (redditInstance.includes("teddit")) { let pathWithoutSlash = url.pathname.slice(1); return `${redditInstance}/pics/w:null_${pathWithoutSlash}${url.search}` + } else { + return null; } } return `${redditInstance}${url.pathname}${url.search}`; From 905abce8f778e9a3edbd69b9f3183c93d11edffa Mon Sep 17 00:00:00 2001 From: Jason Kim Date: Fri, 9 Apr 2021 00:10:27 -0700 Subject: [PATCH 5/5] refactor: drop teddit image redirect support No longer redirect image links for teddit instances. Add a comment detailing the two issues I found. Now, the feature should be stable. --- src/pages/background/background.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 2534279..2047bfb 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -452,8 +452,12 @@ function redirectReddit(url, initiator, type) { if (redditInstance.includes("libredd")) { return `${redditInstance}/img${url.pathname}${url.search}`; } else if (redditInstance.includes("teddit")) { - let pathWithoutSlash = url.pathname.slice(1); - return `${redditInstance}/pics/w:null_${pathWithoutSlash}${url.search}` + // As of 2021-04-09, redirects for teddit images are nontrivial: + // - navigating to the image before ever navigating to its page causes + // 404 error (probably needs fix on teddit project) + // - some image links on teddit are very different + // Therefore, don't support redirecting image links for teddit. + return null; } else { return null; }