diff options
Diffstat (limited to 'src/assets')
-rw-r--r-- | src/assets/javascripts/helpers/common.js | 3 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/imgur.js | 4 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/maps.js | 127 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/reddit.js | 3 |
4 files changed, 86 insertions, 51 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js index 65810db4..6dd0e7fb 100644 --- a/src/assets/javascripts/helpers/common.js +++ b/src/assets/javascripts/helpers/common.js @@ -47,6 +47,7 @@ async function updateInstances() { instagramHelper.setRedirects(instances.bibliogram); redditHelper.setTedditRedirects(instances.teddit); + redditHelper.setLibredditRedirects(instances.libreddit); translateHelper.setSimplyTranslateRedirects(instances.simplyTranslate); translateHelper.setLingvaRedirects(instances.lingva) @@ -128,7 +129,7 @@ function processDefaultCustomInstances( for (let element of nameCheckListElement.getElementsByTagName('input')) { if (element.className != 'toogle-all') - nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", event => { + nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", event => { if (event.target.checked) nameDefaultRedirects.push(element.className) else { diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js index 3884d5dc..20d7c5b3 100644 --- a/src/assets/javascripts/helpers/imgur.js +++ b/src/assets/javascripts/helpers/imgur.js @@ -116,9 +116,9 @@ function isImgur(url, initiator) { if (url.pathname == "/") return false; if ( initiator && - ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host)) + ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.test(initiator.host)) ) return false; - return targets.some(rx => rx.test(url.href)); + return targets.test(url.href); } function redirect(url, type) { diff --git a/src/assets/javascripts/helpers/maps.js b/src/assets/javascripts/helpers/maps.js index f0a58f2c..525fb145 100644 --- a/src/assets/javascripts/helpers/maps.js +++ b/src/assets/javascripts/helpers/maps.js @@ -4,6 +4,7 @@ window.browser = window.browser || window.chrome; import commonHelper from './common.js' const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/; + let redirects = { 'osm': { "normal": [ @@ -16,49 +17,7 @@ let redirects = { ] } }; -const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/; -const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/; -const placeRegex = /\/place\/(.*)\//; -const travelModes = { - driving: "fossgis_osrm_car", - walking: "fossgis_osrm_foot", - bicycling: "fossgis_osrm_bike", - transit: "fossgis_osrm_car", // not implemented on OSM, default to car. -}; -const travelModesFacil = { - driving: "car", - walking: "pedestrian", - bicycling: "bicycle", - transit: "car", // not implemented on Facil, default to car. -}; -const osmLayers = { - none: "S", - transit: "T", - traffic: "S", // not implemented on OSM, default to standard. - bicycling: "C", -}; - -function addressToLatLng(address, callback) { - const xmlhttp = new XMLHttpRequest(); - xmlhttp.onreadystatechange = () => { - if (xmlhttp.readyState === XMLHttpRequest.DONE) { - if (xmlhttp.status === 200) { - const json = JSON.parse(xmlhttp.responseText)[0]; - if (json) callback( - `${json.lat},${json.lon}`, - `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`, - ); - } else - console.info("Error: Status is " + xmlhttp.status); - } - }; - xmlhttp.open( - "GET", - `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, - false - ); - xmlhttp.send(); -} +const getRedirects = () => redirects; let disable; const getDisable = () => disable; @@ -76,7 +35,67 @@ function setFrontend(val) { console.log("mapsFrontend: ", frontend) }; +let facilNormalRedirectsChecks; +const getFacilNormalRedirectsChecks = () => facilNormalRedirectsChecks; +function setFacilNormalRedirectsChecks(val) { + facilNormalRedirectsChecks = val; + browser.storage.local.set({ facilNormalRedirectsChecks }) + console.log("facilNormalRedirectsChecks: ", val) +} + +let facilNormalCustomRedirects = []; +const getFacilNormalCustomRedirects = () => facilNormalCustomRedirects; +function setFacilNormalCustomRedirects(val) { + facilNormalCustomRedirects = val; + browser.storage.local.set({ facilNormalCustomRedirects }) + console.log("facilNormalCustomRedirects: ", val) +} + + function redirect(url, initiator) { + const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/; + const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/; + const placeRegex = /\/place\/(.*)\//; + const travelModes = { + driving: "fossgis_osrm_car", + walking: "fossgis_osrm_foot", + bicycling: "fossgis_osrm_bike", + transit: "fossgis_osrm_car", // not implemented on OSM, default to car. + }; + const travelModesFacil = { + driving: "car", + walking: "pedestrian", + bicycling: "bicycle", + transit: "car", // not implemented on Facil, default to car. + }; + const osmLayers = { + none: "S", + transit: "T", + traffic: "S", // not implemented on OSM, default to standard. + bicycling: "C", + }; + + function addressToLatLng(address, callback) { + const xmlhttp = new XMLHttpRequest(); + xmlhttp.onreadystatechange = () => { + if (xmlhttp.readyState === XMLHttpRequest.DONE) { + if (xmlhttp.status === 200) { + const json = JSON.parse(xmlhttp.responseText)[0]; + if (json) callback( + `${json.lat},${json.lon}`, + `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`, + ); + } else + console.info("Error: Status is " + xmlhttp.status); + } + }; + xmlhttp.open( + "GET", + `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, + false + ); + xmlhttp.send(); + } if (disable) return; if (initiator && initiator.host === "earth.google.com") return; @@ -84,7 +103,7 @@ function redirect(url, initiator) { let randomInstance; if (frontend == 'osm') randomInstance = commonHelper.getRandomInstance(redirects.osm.normal); - if (frontend == 'facil') randomInstance = commonHelper.getRandomInstance(redirects.facil.normal); + if (frontend == 'facil') randomInstance = commonHelper.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]); let mapCentre = "#"; let prefs = {}; @@ -200,11 +219,18 @@ async function init() { browser.storage.local.get( [ "disableMaps", - "mapsFrontend" + "mapsFrontend", + + "facilNormalRedirectsChecks", + "facilNormalCustomRedirects", ], r => { - disable = r.disableMaps ?? false - frontend = r.mapsFrontend ?? 'osm' + disable = r.disableMaps ?? false; + frontend = r.mapsFrontend ?? 'osm'; + + facilNormalRedirectsChecks = r.facilNormalRedirectsChecks ?? [...redirects.facil.normal]; + facilNormalCustomRedirects = r.facilNormalCustomRedirects ?? []; + resolve(); } ); @@ -218,6 +244,13 @@ export default { getFrontend, setFrontend, + getRedirects, + + getFacilNormalRedirectsChecks, + setFacilNormalRedirectsChecks, + getFacilNormalCustomRedirects, + setFacilNormalCustomRedirects, + redirect, init, }; diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index 73f10c42..77a77d43 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -417,7 +417,7 @@ function switchInstance(url) { } 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( @@ -453,6 +453,7 @@ async function init() { alwaysUsePreferred = r.alwaysUsePreferred ?? false; redirects.teddit = dataJson.teddit; + redirects.libreddit = dataJson.libreddit; if (r.redditRedirects) redirects = r.redditRedirects; if (r.redditRedirects) redirects = r.redditRedirects; |