commit 047aba483e7e1462880c40d41c803e4ce2ab26c1 Author: OverPoweredDev Date: Sat Jun 5 20:43:16 2021 +0530 created storage.js, a script that handles all localStorage operations. without it, I had the same code repeating thrice so definitely needed diff --git a/background/storage.js b/background/storage.js new file mode 100644 index 0000000..bfb6a9e --- /dev/null +++ b/background/storage.js @@ -0,0 +1,83 @@ +function getGlobalSettings() { + let settings = JSON.parse(localStorage.getItem("apertium.settings")); + if (settings === null) { + return { + apertiumSource: "https://apertium.org/apy/", + defaultLanguage: "eng", + lastUpdated: "on Installation", + inputSizeLimit: 1000 + } + } else { + return settings; + } +} + +function saveGlobalSettings(settings) { + let settingsJSON = JSON.stringify(settings); + localStorage.setItem("apertium.settings", settingsJSON); +} + +function getLangPairs() { + let langPairs = localStorage.getItem("apertium.langPairs"); + + if(langPairs === null) { + let languageList = fetchLanguageList(getLangPairsEndpoint()); + createLanguagePairs(languageList); + } +} + +async function updateLanguagePairs() { + let time = new Date().toLocaleString(); + let languageList = await fetchLanguageList(getLangPairsEndpoint()); + let languagePairsJSON = JSON.stringify(createLanguagePairs(languageList)); + + localStorage.setItem("apertium.langPairs", languagePairsJSON); + globalSettings.lastUpdated = time; + setLastUpdated(time); +} + +function getLangPairsEndpoint() { + return globalSettings.apertiumSource + "listPairs"; +} + +function getTranslationEndpoint() { + return globalSettings.apertiumSource + "translate"; +} + +async function fetchLanguageList(listPairURL) { + return fetch(listPairURL) + .then(response => response.json()) + .then(data => data.responseData); +} + +function createLanguagePairs(languageList){ + let current = new Date(); + + let langPairs = { + last_updated: current.toLocaleString(), + source: globalSettings.apertiumSource, + langPairs: languageList + }; + + let langPairsJSON = JSON.stringify(langPairs); + localStorage.setItem("apertium.langPairs", langPairsJSON); + return langPairs; +} + +function getSourceList() { + let languageList = JSON.parse(localStorage.getItem("apertium.langPairs")).langPairs; + let list = []; + for (let i = 0; i < languageList.length; i++) { + list.push(languageList[i].sourceLanguage); + } + return [...new Set(list)]; +} + +function getTargetList() { + let languageList = JSON.parse(localStorage.getItem("apertium.langPairs")).langPairs; + let list = []; + for (let i = 0; i < languageList.length; i++) { + list.push(languageList[i].targetLanguage); + } + return [...new Set(list)]; +} \ No newline at end of file diff --git a/popup/options.html b/popup/options.html index d86e37f..2fcdec0 100644 --- a/popup/options.html +++ b/popup/options.html @@ -4,6 +4,7 @@ Apertium + diff --git a/popup/options.js b/popup/options.js index 59d605f..5c61be7 100644 --- a/popup/options.js +++ b/popup/options.js @@ -28,82 +28,17 @@ function init() { globalSettings = getGlobalSettings(); getLangPairs(); createDropdown($("#target-language-dropdown")); - setDefaultLanguage(globalSettings.DefaultLanguage); + setDefaultLanguage(globalSettings.defaultLanguage); } - -function getGlobalSettings() { - let settings = JSON.parse(localStorage.getItem("apertium.settings")); - if (settings === null) { - return { - ApertiumSource: "https://apertium.org/apy/", - DefaultLanguage: "eng", - lastUpdated: "on Installation" - } - } else { - return settings; - } -} - -function saveGlobalSettings(settings) { - let settingsJSON = JSON.stringify(settings); - localStorage.setItem("apertium.settings", settingsJSON); -} - -function getLangPairs() { - let langPairs = localStorage.getItem("apertium.langPairs"); - - if(langPairs === null) { - let languageList = fetchLanguageList(getLangPairsEndpoint()); - createLanguagePairs(languageList); - } -} - -function getLangPairsEndpoint() { - return globalSettings.ApertiumSource + "listPairs"; -} - -async function fetchLanguageList(listPairURL) { - return fetch(listPairURL) - .then(response => response.json()) - .then(data => data.responseData); -} - -function createLanguagePairs(languageList){ - let current = new Date(); - - let langPairs = { - last_updated: current.toLocaleString(), - source: globalSettings.ApertiumSource, - langPairs: languageList - }; - - let langPairsJSON = JSON.stringify(langPairs); - localStorage.setItem("apertium.langPairs", langPairsJSON); - return langPairs; -} - -function getTargetLanguages() { - let languageList = JSON.parse(localStorage.getItem("apertium.langPairs")).langPairs; - let list = []; - for (let i = 0; i < languageList.length; i++) { - list.push(languageList[i].targetLanguage); - } - return [...new Set(list)]; -} - - - function setDefaultLanguage(defaultLanguage) { - - $("#target-language").text(defaultLanguage); } function createDropdown(parent) { parent.empty(); - let list = getTargetLanguages(); + let list = getTargetList(); list.forEach((languageCode) => { parent.append(""); }) diff --git a/popup/popup.html b/popup/popup.html index dc51ffb..70a67e6 100644 --- a/popup/popup.html +++ b/popup/popup.html @@ -4,6 +4,7 @@ Apertium + diff --git a/popup/popup.js b/popup/popup.js index 35caf60..a4fd8b7 100644 --- a/popup/popup.js +++ b/popup/popup.js @@ -1,8 +1,4 @@ let globalSettings = getGlobalSettings(); - -const INPUT_SIZE_LIMIT = 1000; -const TRANSLATE_URL = "https://beta.apertium.org/apy/translate"; - let prevText = ""; //TODO: Displays source languages available @@ -50,39 +46,6 @@ function init() { } -function getGlobalSettings() { - let settings = JSON.parse(localStorage.getItem("apertium.settings")); - if (settings === null) { - return { - ApertiumSource: "https://apertium.org/apy/", - DefaultLanguage: "eng", - lastUpdated: "on Installation" - } - } else { - return settings; - } -} - -function getSourceList() { - let languageList = JSON.parse(localStorage.getItem("apertium.langPairs")).langPairs; - let list = []; - for (let i = 0; i < languageList.length; i++) { - list.push(languageList[i].sourceLanguage); - } - return [...new Set(list)]; -} - -function getTargetList() { - let languageList = JSON.parse(localStorage.getItem("apertium.langPairs")).langPairs; - let list = []; - for (let i = 0; i < languageList.length; i++) { - list.push(languageList[i].targetLanguage); - } - return [...new Set(list)]; -} - - - // only return text if it is (a) non-empty; (b) less than the limit; (c) different from the previous input. function getInputText() { let inputField = $(".input-text-box"); @@ -91,7 +54,7 @@ function getInputText() { if (!text) { inputField.addClass("error"); return null; - } else if (text.length > INPUT_SIZE_LIMIT) { + } else if (text.length > globalSettings.inputSizeLimit) { inputField.addClass("error"); return null; } else if (text === prevText) { @@ -109,7 +72,7 @@ async function getTranslation(inputText, sourceLanguage, targetLanguage) { let langPair = ""; langPair = langPair.concat(sourceLanguage, "|", targetLanguage); - let url = new URL(TRANSLATE_URL); + let url = new URL(getTranslationEndpoint()); let params = {langpair: langPair, q: inputText, format: "html"}; url.search = new URLSearchParams(params).toString(); @@ -123,7 +86,6 @@ async function getTranslation(inputText, sourceLanguage, targetLanguage) { function createDropdown(parent, list) { parent.empty(); list.forEach((languageCode) => { - console.log(languageCode) parent.append(""); }) } diff --git a/settings/settings.html b/settings/settings.html index c61eb80..22bd3ff 100644 --- a/settings/settings.html +++ b/settings/settings.html @@ -4,6 +4,7 @@ Apertium + diff --git a/settings/settings.js b/settings/settings.js index da2742c..add13e9 100644 --- a/settings/settings.js +++ b/settings/settings.js @@ -27,10 +27,10 @@ $("#source-select").change(async function () { let selectedSource = $("#source-select option:selected").text(); switch (selectedSource) { case "Apertium Release": - globalSettings.ApertiumSource = "https://apertium.org/apy/"; + globalSettings.apertiumSource = "https://apertium.org/apy/"; break; case "Apertium Beta": - globalSettings.ApertiumSource = "https://beta.apertium.org/apy/"; + globalSettings.apertiumSource = "https://beta.apertium.org/apy/"; break; case "Local/Custom Source": alert("Option not available yet"); @@ -49,85 +49,11 @@ function init() { getLangPairs(); createDropdown($("#target-language-dropdown")); - setDefaultLanguage(globalSettings.DefaultLanguage); - setApertiumSource(globalSettings.ApertiumSource); - setLastUpdated(globalSettings.lastUpdated) + setDefaultLanguage(globalSettings.defaultLanguage); + setApertiumSource(globalSettings.apertiumSource); + setLastUpdated(globalSettings.lastUpdated); } - - -function getGlobalSettings() { - let settings = JSON.parse(localStorage.getItem("apertium.settings")); - if (settings === null) { - return { - ApertiumSource: "https://apertium.org/apy/", - DefaultLanguage: "eng", - lastUpdated: "on Installation" - } - } else { - return settings; - } -} - -function saveGlobalSettings(settings) { - let settingsJSON = JSON.stringify(settings); - localStorage.setItem("apertium.settings", settingsJSON); -} - -function getLangPairs() { - let langPairs = localStorage.getItem("apertium.langPairs"); - - if(langPairs === null) { - let languageList = fetchLanguageList(getLangPairsEndpoint()); - createLanguagePairs(languageList); - } -} - -async function updateLanguagePairs() { - let time = new Date().toLocaleString(); - let languageList = await fetchLanguageList(getLangPairsEndpoint()); - let languagePairsJSON = JSON.stringify(createLanguagePairs(languageList)); - - localStorage.setItem("apertium.langPairs", languagePairsJSON); - globalSettings.lastUpdated = time; - setLastUpdated(time); -} - -function getLangPairsEndpoint() { - return globalSettings.ApertiumSource + "listPairs"; -} - -async function fetchLanguageList(listPairURL) { - return fetch(listPairURL) - .then(response => response.json()) - .then(data => data.responseData); -} - -function createLanguagePairs(languageList){ - let current = new Date(); - - let langPairs = { - last_updated: current.toLocaleString(), - source: globalSettings.ApertiumSource, - langPairs: languageList - }; - - let langPairsJSON = JSON.stringify(langPairs); - localStorage.setItem("apertium.langPairs", langPairsJSON); - return langPairs; -} - -function getTargetLanguages() { - let languageList = JSON.parse(localStorage.getItem("apertium.langPairs")).langPairs; - let list = []; - for (let i = 0; i < languageList.length; i++) { - list.push(languageList[i].targetLanguage); - } - return [...new Set(list)]; -} - - - function setDefaultLanguage(defaultLanguage) { $("#target-language").text(defaultLanguage); } @@ -148,16 +74,16 @@ function setApertiumSource(apertiumSource) { } function setLastUpdated(lastUpdated) { - let updatedText = "Last Updated: " + lastUpdated + let updatedText = "Last Updated: " + lastUpdated; $("#last-updated").text(updatedText); } function createDropdown(parent) { parent.empty(); - let list = getTargetLanguages(); + let list = getTargetList(); list.forEach((languageCode) => { parent.append(""); - }) + }); } function getSelectedLanguage(selector) {