about summary refs log tree commit diff stats
path: root/content-script.js
blob: d13de3e13414d7ce1de087a7b528ffcc24e6a09d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
'use strict';

const nitterDefault = 'https://nitter.net';

let disableNitter;
let nitterInstance;

window.browser = window.browser || window.chrome;

function redirectTwitter(url) {
  if (url.host.split('.')[0] === 'pbs') {
    return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`;
  } else if (url.host.split('.')[0] === 'video') {
    return `${nitterInstance}/gif/${encodeURIComponent(url.href)}`;
  } else {
    return `${nitterInstance}${url.pathname}${url.search}`;
  };
}

browser.storage.sync.get(
  ['nitterInstance', 'disableNitter', 'removeTwitterSW'],
  (result) => {
    if (!result.removeTwitterSW) {
      disableNitter = result.disableNitter;
      nitterInstance = result.nitterInstance || nitterDefault;
      navigator.serviceWorker.getRegistrations().then(registrations => {
        for (let registration of registrations) {
          if (registration.scope === 'https://twitter.com/') {
            registration.unregister();
            console.log('Unregistered Twitter SW', registration);
          }
        }
      });
      const url = new URL(window.location);
      if (!disableNitter && url.host !== nitterInstance) {
        const redirect = redirectTwitter(url);
        console.info(
          'Redirecting', `"${url.href}"`, '=>', `"${redirect}"`
        );
        window.location = redirect;
      }
    }
  }
);