From 12e352b6b301d3cb8e893cbee40fcc8a4e50e7ee Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Wed, 13 Apr 2022 20:21:32 +0300 Subject: [PATCH] Added Nitter settings #138 --- src/assets/javascripts/helpers/general.js | 2 +- src/assets/javascripts/helpers/imgur.js | 2 +- src/assets/javascripts/helpers/twitter.js | 194 ++++++++++++++++-- src/assets/javascripts/helpers/wikipedia.js | 2 +- .../javascripts/helpers/youtube/options.js | 1 - .../javascripts/helpers/youtube/youtube.js | 45 +--- src/pages/options/twitter/twitter.html | 9 +- src/pages/options/twitter/twitter.js | 112 +++++++--- 8 files changed, 270 insertions(+), 97 deletions(-) diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js index 1ee6bcf..9fec500 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 91e30fd..c8c6515 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 64507a9..a333777 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 7a4173f..9e41f11 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 e044a82..a4abd36 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 d51bf08..4de189b 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 d017ba7..efb0f44 100644 --- a/src/pages/options/twitter/twitter.html +++ b/src/pages/options/twitter/twitter.html @@ -165,10 +165,9 @@

Theme

- - @@ -239,6 +238,12 @@
+ +
+

Mute videos by default

+ +
+

Autoplay gifs

diff --git a/src/pages/options/twitter/twitter.js b/src/pages/options/twitter/twitter.js index c6d7ea1..5e7e9a0 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();