commit 0c796db854232e77ff7235654b6415e9585b04aa Author: OverPoweredDev Date: Sun Jul 11 17:12:03 2021 +0530 added language pair verification diff --git a/src/content/content.js b/src/content/content.js index 06d388c..e0bd10c 100644 --- a/src/content/content.js +++ b/src/content/content.js @@ -23,8 +23,12 @@ browser.runtime.onMessage.addListener(async function(request, sender, sendRespon sourceLanguage = await getWebsiteLanguage(); } - await translateWebpage(sourceLanguage, settings.defaultLanguage); - sendResponse({}); + if(verifyLangPairs(sourceLanguage, settings.defaultLanguage)) { + await translateWebpage(sourceLanguage, settings.defaultLanguage); + sendResponse({translated: true}); + } else { + sendResponse({translated: false, problem: 'Invalid Language Pair'}); + } }); async function addHoverElements(settings) { diff --git a/src/lib/storage.js b/src/lib/storage.js index 0eb8a8c..7b9cc4a 100644 --- a/src/lib/storage.js +++ b/src/lib/storage.js @@ -26,22 +26,27 @@ function saveGlobalSettings(settings) { function getLangPairs() { let langPairs = localStorage.getItem("apertium.langPairs"); - if(langPairs === null) { + if (langPairs === null) { let languageList = fetchLanguageList(getLangPairsEndpoint()); - console.log(languageList) - createLanguagePairs(languageList); + return createLanguagePairs(languageList); } return JSON.parse(langPairs); } +function verifyLangPairs(sourceLang, targetLang) { + let langPairs = getLangPairs().langPairs; + let langPairExists = (pair) => pair.sourceLanguage === sourceLang && pair.targetLanguage === targetLang + return langPairs.some(langPairExists) +} + async function fetchLanguageList(listPairURL) { return fetch(listPairURL) .then(response => response.json()) .then(data => data.responseData); } -function createLanguagePairs(languageList){ +function createLanguagePairs(languageList) { let current = new Date(); let langPairs = { diff --git a/src/lib/translate.js b/src/lib/translate.js index 2ccb3f0..f003c07 100644 --- a/src/lib/translate.js +++ b/src/lib/translate.js @@ -52,6 +52,7 @@ async function translateWebpage(sourceLanguage, targetLanguage) { let transportDocument = createNewDocument(textElements); let translatedDocument = await getTranslatedDocument(sourceLanguage, targetLanguage, transportDocument, 'transport.html'); + console.log(translatedDocument); } function createNewDocument(nodeList) { @@ -88,15 +89,13 @@ async function getTranslatedDocument(sourceLanguage, targetLanguage, file, filen formData.append('langpair', langPair); formData.append('file', file, filename) - fetch(getTranslateDocEndpoint(), { + let blob = await fetch(getTranslateDocEndpoint(), { method: 'POST', body: formData - }) - .then(response => response.blob()) - .then((blob) => { - console.log(blob); - download(blob, filename); - }) + }).then(response => response.blob()); + + download(blob, filename); + return (await blob).text(); } // everything below courtesy of https://gist.github.com/TinoDidriksen/c41c33ca5809ff297bf7b1608b3a41e2 diff --git a/src/popup/popup.js b/src/popup/popup.js index d3d6ae5..6857d32 100644 --- a/src/popup/popup.js +++ b/src/popup/popup.js @@ -94,6 +94,8 @@ $("#translate-button").on('click', async function () { let targetLanguage = await getTargetLanguage(); if (!targetLanguage || targetLanguage === 'select') return; + if(!verifyLangPairs(sourceLanguage, targetLanguage)) return; + getTranslation(translateInput, sourceLanguage, targetLanguage).then(translateOutput => { $(".output-text-box").val(translateOutput); });