about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-04-13 20:21:32 +0300
committerManeraKai <manerakai@protonmail.com>2022-04-13 20:21:32 +0300
commit12e352b6b301d3cb8e893cbee40fcc8a4e50e7ee (patch)
tree013518b1a21cc1fd8a0c9d865ce2b63cfe1845f7 /src
parentMerge branch 'master' of https://github.com/libredirect/libredirect (diff)
downloadlibredirect-12e352b6b301d3cb8e893cbee40fcc8a4e50e7ee.zip
Added Nitter settings #138
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/helpers/general.js2
-rw-r--r--src/assets/javascripts/helpers/imgur.js2
-rw-r--r--src/assets/javascripts/helpers/twitter.js194
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js2
-rw-r--r--src/assets/javascripts/helpers/youtube/options.js1
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js45
-rw-r--r--src/pages/options/twitter/twitter.html9
-rw-r--r--src/pages/options/twitter/twitter.js112
8 files changed, 270 insertions, 97 deletions
diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js
index 1ee6bcf5..9fec500f 100644
--- a/src/assets/javascripts/helpers/general.js
+++ b/src/assets/javascripts/helpers/general.js
@@ -65,7 +65,7 @@ async function init() {
                 "popupFrontends",
                 "autoRedirect"
             ],
-            r => { // r = result
+            r => { 
                 if (r.exceptions) exceptions = r.exceptions;
                 alwaysUsePreferred = r.alwaysUsePreferred ?? false;
 
diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js
index 91e30fde..c8c65159 100644
--- a/src/assets/javascripts/helpers/imgur.js
+++ b/src/assets/javascripts/helpers/imgur.js
@@ -171,7 +171,7 @@ async function init() {
 
                         "imgurProtocol",
                     ],
-                    r => { // r = result
+                    r => { 
                         disable = r.disableImgur ?? false;
 
                         protocol = r.imgurProtocol ?? "normal";
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index 64507a9f..a333777d 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -110,6 +110,59 @@ function setBypassWatchOnTwitter(val) {
 
 let alwaysUsePreferred;
 
+let theme;
+const getTheme = () => theme;
+
+let infiniteScroll;
+const getInfiniteScroll = () => infiniteScroll;
+
+let stickyProfile;
+const getStickyProfile = () => stickyProfile;
+
+let bidiSupport;
+const getBidiSupport = () => bidiSupport;
+
+let hideTweetStats;
+const getHideTweetStats = () => hideTweetStats;
+
+let hideBanner;
+const getHideBanner = () => hideBanner;
+
+let hidePins;
+const getHidePins = () => hidePins;
+
+let hideReplies;
+const getHideReplies = () => hideReplies;
+
+let squareAvatars;
+const getSquareAvatars = () => squareAvatars;
+
+let mp4Playback;
+const getMp4Playback = () => mp4Playback;
+
+let hlsPlayback;
+const getHlsPlayback = () => hlsPlayback;
+
+let proxyVideos;
+const getProxyVideos = () => proxyVideos;
+
+let muteVideos;
+const getMuteVideos = () => muteVideos;
+
+let autoplayGifs;
+const getAutoplayGifs = () => autoplayGifs;
+
+
+
+async function setSettings(val) {
+  return new Promise(
+    resolve => {
+      browser.storage.local.set(val).then(resolve);
+    }
+  )
+
+}
+
 function redirect(url, initiator) {
   let protocolHost = commonHelper.protocolHost(url);
   let isNitter = [
@@ -224,32 +277,93 @@ function isNitter(url, type) {
   ].includes(protocolHost);
 }
 
-let theme;
 let applyThemeToSites;
 function initNitterCookies() {
-  let themeValue;
-  if (theme == 'light') themeValue = 'Twitter';
-  if (theme == 'dark') themeValue = 'Twitter Dark';
-  if (applyThemeToSites && themeValue) {
+  if (enableCustomSettings) {
     let allInstances = [...redirects.nitter.normal, ...redirects.nitter.tor, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects]
     let checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects, ...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
-    for (const instanceUrl of allInstances)
-      if (!checkedInstances.includes(instanceUrl))
-        browser.cookies.remove({
-          url: instanceUrl,
-          name: "theme",
-        })
-    for (const instanceUrl of checkedInstances)
+    for (const instanceUrl of allInstances) if (!checkedInstances.includes(instanceUrl))
+      browser.cookies.remove({
+        url: instanceUrl,
+        name: "theme",
+      })
+    for (const instanceUrl of checkedInstances) {
       browser.cookies.set({
         url: instanceUrl,
         name: "theme",
-        value: themeValue
+        value: theme,
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "infiniteScroll",
+        value: infiniteScroll ? 'on' : '',
       })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "stickyProfile",
+        value: stickyProfile ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "bidiSupport",
+        value: bidiSupport ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "hideTweetStats",
+        value: hideTweetStats ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "hideBanner",
+        value: hideBanner ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "hidePins",
+        value: hidePins ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "hideReplies",
+        value: hideReplies ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "squareAvatars",
+        value: squareAvatars ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "mp4Playback",
+        value: mp4Playback ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "hlsPlayback",
+        value: hlsPlayback ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "proxyVideos",
+        value: proxyVideos ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "muteVideos",
+        value: muteVideos ? 'on' : '',
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "autoplayGifs",
+        value: autoplayGifs ? 'on' : '',
+      })
+    }
   }
 }
 
 async function init() {
-  return new Promise((resolve) => {
+  return new Promise(resolve => {
     fetch('/instances/data.json').then(response => response.text()).then(data => {
       let dataJson = JSON.parse(data);
       browser.storage.local.get(
@@ -259,10 +373,6 @@ async function init() {
           "enableTwitterCustomSettings",
 
           "twitterRedirects",
-
-          "theme",
-          "applyThemeToSites",
-
           "bypassWatchOnTwitter",
 
           "nitterNormalRedirectsChecks",
@@ -272,8 +382,22 @@ async function init() {
           "nitterTorCustomRedirects",
 
           "twitterProtocol",
-
           "alwaysUsePreferred",
+
+          "nitterTheme",
+          "nitterInfiniteScroll",
+          "nitterStickyProfile",
+          "nitterBidiSupport",
+          "nitterHideTweetStats",
+          "nitterHideBanner",
+          "nitterHidePins",
+          "nitterHideReplies",
+          "nitterSquareAvatars",
+          "nitterMp4Playback",
+          "nitterHlsPlayback",
+          "nitterProxyVideos",
+          "nitterMuteVideos",
+          "nitterAutoplayGifs",
         ],
         r => {
           disable = r.disableTwitter ?? false;
@@ -297,6 +421,21 @@ async function init() {
           nitterTorRedirectsChecks = r.nitterTorRedirectsChecks ?? [...redirects.nitter.tor];
           nitterTorCustomRedirects = r.nitterTorCustomRedirects ?? [];
 
+          theme = r.nitterTheme ?? 'Auto';
+          infiniteScroll = r.nitterInfiniteScroll ?? false;
+          stickyProfile = r.nitterStickyProfile ?? true;
+          bidiSupport = r.nitterBidiSupport ?? false;
+          hideTweetStats = r.nitterHideTweetStats ?? false;
+          hideBanner = r.nitterHideBanner ?? false;
+          hidePins = r.nitterHidePins ?? false;
+          hideReplies = r.nitterHideReplies ?? false;
+          squareAvatars = r.nitterSquareAvatars ?? false;
+          mp4Playback = r.nitterMp4Playback ?? true;
+          hlsPlayback = r.nitterHlsPlayback ?? false;
+          proxyVideos = r.nitterProxyVideos ?? true;
+          muteVideos = r.nitterMuteVideos ?? false;
+          autoplayGifs = r.nitterAutoplayGifs ?? true;
+
           initNitterCookies();
 
           resolve();
@@ -340,6 +479,23 @@ export default {
   isNitter,
   initNitterCookies,
 
+  getTheme,
+  getInfiniteScroll,
+  getStickyProfile,
+  getBidiSupport,
+  getHideTweetStats,
+  getHideBanner,
+  getHidePins,
+  getHideReplies,
+  getSquareAvatars,
+  getMp4Playback,
+  getHlsPlayback,
+  getProxyVideos,
+  getMuteVideos,
+  getAutoplayGifs,
+
+  setSettings,
+
   redirect,
   init,
   switchInstance,
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index 7a4173fb..9e41f119 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -199,7 +199,7 @@ async function init() {
           "theme",
           "applyThemeToSites",
 
-        ], r => { // r = result
+        ], r => { 
           disable = r.disableWikipedia ?? true;
 
           protocol = r.wikipediaProtocol ?? "normal";
diff --git a/src/assets/javascripts/helpers/youtube/options.js b/src/assets/javascripts/helpers/youtube/options.js
index e044a82b..a4abd363 100644
--- a/src/assets/javascripts/helpers/youtube/options.js
+++ b/src/assets/javascripts/helpers/youtube/options.js
@@ -5,7 +5,6 @@ window.browser = window.browser || window.chrome;
 export let youtubeListen;
 export const getYoutubeListen = () => youtubeListen;
 
-
 export let volume;
 export const getVolume = () => volume;
 export function setVolume(val) {
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index d51bf085..4de189b6 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -581,7 +581,7 @@ async function init() {
 
             "bypassWatchOnYoutube"
           ],
-          r => { // r = result
+          r => {
             redirects.invidious = dataJson.invidious;
             if (r.youtubeRedirects) redirects = r.youtubeRedirects;
 
@@ -628,99 +628,58 @@ async function init() {
 
 export default {
   setYoutubeSettings,
-
   getBypassWatchOnYoutube,
-
   initPipedLocalStorage,
   initPipedMaterialLocalStorage,
-
   getFrontend,
-
   getYoutubeEmbedFrontend,
-
   getRedirects,
   getCustomRedirects,
   setInvidiousRedirects,
   setPipedRedirects,
-
   redirect,
   switchInstance,
-
   isPipedorInvidious,
-
   initInvidiousCookies,
-
   getInvidiousAlwaysProxy,
-
   getInvidiousQuality,
-
   getInvidiousPlayerStyle,
-
   getInvidiousVideoLoop,
-
+  
   getDisable,
   setDisable,
 
   getEnableCustomSettings,
-
   getProtocol,
-
   getOnlyEmbeddedVideo,
-
   setVolume,
   getVolume,
-
   setAutoplay,
   getAutoplay,
-
   getInvidiousContinueAutoplay,
-
   getInvidiousContinue,
-
   getYoutubeListen,
-
   getInvidiousSpeed,
-
   getInvidiousQualityDash,
-
   getInvidiousComments,
-
   getInvidiousCaptions,
-
   getInvidiousRelatedVideos,
-
   getInvidiousAnnotations,
-
   getInvidiousExtendDesc,
-
   getInvidiousVrMode,
-
   getInvidiousSavePlayerPos,
-
   getPipedBufferGoal,
-
   getPipedComments,
-
   getPipedDisableLBRY,
-
   getPipedEnabledCodecs,
-
   getPipedHomepage,
-
   getPipedMinimizeDescription,
-
   getPipedProxyLBRY,
-
   getPipedQuality,
-
   getPipedRegion,
-
   getPipedSelectedSkip,
-
   getPipedSponsorblock,
-
   getPipedWatchHistory,
-
   getPipedMaterialSkipToLastPoint,
 
   getInvidiousNormalRedirectsChecks,
diff --git a/src/pages/options/twitter/twitter.html b/src/pages/options/twitter/twitter.html
index d017ba78..efb0f44d 100644
--- a/src/pages/options/twitter/twitter.html
+++ b/src/pages/options/twitter/twitter.html
@@ -165,10 +165,9 @@
 
         <div class="some-block option-block">
           <h4 data-localise="__MSG_theme__">Theme</h4>
-          <select name="theme">
+          <select class="theme">
             <option value="Auto">Auto</option>
             <option value="Auto (Twitter)">Auto (Twitter)</option>
-            <option value="Auto (Twitter)">Auto (Twitter)</option>
             <option value="Black">Black</option>
             <option value="Mastodon">Mastodon</option>
             <option value="Nitter">Nitter</option>
@@ -239,6 +238,12 @@
           <input class="proxyVideos" type="checkbox" />
         </div>
 
+
+        <div class="some-block option-block">
+          <h4 data-localise="__MSG_muteVideos__">Mute videos by default</h4>
+          <input class="muteVideos" type="checkbox" />
+        </div>
+
         <div class="some-block option-block">
           <h4 data-localise="__MSG_autoplayGifs__">Autoplay gifs</h4>
           <input class="autoplayGifs" type="checkbox" />
diff --git a/src/pages/options/twitter/twitter.js b/src/pages/options/twitter/twitter.js
index c6d7ea16..5e7e9a05 100644
--- a/src/pages/options/twitter/twitter.js
+++ b/src/pages/options/twitter/twitter.js
@@ -7,13 +7,49 @@ let protocolElement = document.getElementById("protocol");
 let enableYoutubeCustomSettingsElement = document.getElementById("enable-twitter-custom-settings");
 let bypassWatchOnTwitterElement = document.getElementById("bypass-watch-on-twitter");
 
+let theme = document.getElementById('nitter').getElementsByClassName("theme")[0];
+let infiniteScroll = document.getElementById('nitter').getElementsByClassName("infiniteScroll")[0];
+let stickyProfile = document.getElementById('nitter').getElementsByClassName('stickyProfile')[0];
+let bidiSupport = document.getElementById('nitter').getElementsByClassName('bidiSupport')[0];
+let hideTweetStats = document.getElementById('nitter').getElementsByClassName('hideTweetStats')[0];
+let hideBanner = document.getElementById('nitter').getElementsByClassName('hideBanner')[0];
+let hidePins = document.getElementById('nitter').getElementsByClassName('hidePins')[0];
+let hideReplies = document.getElementById('nitter').getElementsByClassName('hideReplies')[0];
+let squareAvatars = document.getElementById('nitter').getElementsByClassName('squareAvatars')[0];
+let mp4Playback = document.getElementById('nitter').getElementsByClassName('mp4Playback')[0];
+let hlsPlayback = document.getElementById('nitter').getElementsByClassName('hlsPlayback')[0];
+let proxyVideos = document.getElementById('nitter').getElementsByClassName('proxyVideos')[0];
+let muteVideos = document.getElementById('nitter').getElementsByClassName('muteVideos')[0];
+let autoplayGifs = document.getElementById('nitter').getElementsByClassName('autoplayGifs')[0];
+
 let nitterElement = document.getElementById("nitter");
-document.addEventListener("change", _ => {
+document.addEventListener("change", async _ => {
     twitterHelper.setDisable(!disableTwitterElement.checked)
     twitterHelper.setProtocol(protocolElement.value);
     twitterHelper.setEnableCustomSettings(enableYoutubeCustomSettingsElement.checked);
     twitterHelper.setBypassWatchOnTwitter(bypassWatchOnTwitterElement.checked);
     changeProtocolSettings(protocolElement.value);
+
+    await twitterHelper.setSettings({
+        // Display
+        nitterTheme: theme.value,
+        nitterInfiniteScroll: infiniteScroll.checked,
+        nitterStickyProfile: stickyProfile.checked,
+        nitterBidiSupport: bidiSupport.checked,
+        nitterHideTweetStats: hideTweetStats.checked,
+        nitterHideBanner: hideBanner.checked,
+        nitterHidePins: hidePins.checked,
+        nitterHideReplies: hideReplies.checked,
+        nitterSquareAvatars: squareAvatars.checked,
+
+        // Media
+        nitterMp4Playback: mp4Playback.checked,
+        nitterHlsPlayback: hlsPlayback.checked,
+        nitterProxyVideos: proxyVideos.checked,
+        nitterMuteVideos: muteVideos.checked,
+        nitterAutoplayGifs: autoplayGifs.checked,
+    });
+    init();
 })
 
 function changeProtocolSettings(protocol) {
@@ -33,33 +69,51 @@ function changeProtocolSettings(protocol) {
         for (const item of customSettingsDivElement) item.style.display = 'none';
 }
 
-twitterHelper.init().then(() => {
-    disableTwitterElement.checked = !twitterHelper.getDisable();
-    enableYoutubeCustomSettingsElement.checked = twitterHelper.getEnableCustomSettings();
-    bypassWatchOnTwitterElement.checked = twitterHelper.getBypassWatchOnTwitter();
+function init() {
+    twitterHelper.init().then(() => {
+        disableTwitterElement.checked = !twitterHelper.getDisable();
+        enableYoutubeCustomSettingsElement.checked = twitterHelper.getEnableCustomSettings();
+        bypassWatchOnTwitterElement.checked = twitterHelper.getBypassWatchOnTwitter();
 
-    let protocol = twitterHelper.getProtocol();
-    protocolElement.value = protocol;
-    changeProtocolSettings(protocol);
+        let protocol = twitterHelper.getProtocol();
+        protocolElement.value = protocol;
+        changeProtocolSettings(protocol);
+        console.log('init');
+        theme.value = twitterHelper.getTheme();
+        infiniteScroll.checked = twitterHelper.getInfiniteScroll();
+        stickyProfile.checked = twitterHelper.getStickyProfile();
+        bidiSupport.checked = twitterHelper.getBidiSupport();
+        hideTweetStats.checked = twitterHelper.getHideTweetStats();
+        hideBanner.checked = twitterHelper.getHideBanner();
+        hidePins.checked = twitterHelper.getHidePins();
+        hideReplies.checked = twitterHelper.getHideReplies();
+        squareAvatars.checked = twitterHelper.getSquareAvatars();
+        mp4Playback.checked = twitterHelper.getMp4Playback();
+        hlsPlayback.checked = twitterHelper.getHlsPlayback();
+        proxyVideos.checked = twitterHelper.getProxyVideos();
+        muteVideos.checked = twitterHelper.getMuteVideos();
+        autoplayGifs.checked = twitterHelper.getAutoplayGifs();
 
-    commonHelper.processDefaultCustomInstances(
-        'nitter',
-        'normal',
-        twitterHelper,
-        document,
-        twitterHelper.getNitterNormalRedirectsChecks,
-        twitterHelper.setNitterNormalRedirectsChecks,
-        twitterHelper.getNitterNormalCustomRedirects,
-        twitterHelper.setNitterNormalCustomRedirects
-    )
-    commonHelper.processDefaultCustomInstances(
-        'nitter',
-        'tor',
-        twitterHelper,
-        document,
-        twitterHelper.getNitterTorRedirectsChecks,
-        twitterHelper.setNitterTorRedirectsChecks,
-        twitterHelper.getNitterTorCustomRedirects,
-        twitterHelper.setNitterTorCustomRedirects
-    )
-});
\ No newline at end of file
+        commonHelper.processDefaultCustomInstances(
+            'nitter',
+            'normal',
+            twitterHelper,
+            document,
+            twitterHelper.getNitterNormalRedirectsChecks,
+            twitterHelper.setNitterNormalRedirectsChecks,
+            twitterHelper.getNitterNormalCustomRedirects,
+            twitterHelper.setNitterNormalCustomRedirects
+        )
+        commonHelper.processDefaultCustomInstances(
+            'nitter',
+            'tor',
+            twitterHelper,
+            document,
+            twitterHelper.getNitterTorRedirectsChecks,
+            twitterHelper.setNitterTorRedirectsChecks,
+            twitterHelper.getNitterTorCustomRedirects,
+            twitterHelper.setNitterTorCustomRedirects
+        )
+    });
+}
+init();