diff --git a/static/js/app.js b/static/js/app.js index 50f02b1be..91c846697 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -24,6 +24,49 @@ window.showToast = (message, icon) => { $(toast).toast('show'); }; +window.readContentFromFile = (elm, type) => + new Promise((resolve, reject) => { + const reader = new FileReader(); + + reader.addEventListener('load', event => { + let str = event.target.result; + switch (type) { + case 'base64': { + // extract base64 content from a Data URI + str = str.substring(event.target.result.indexOf(',') + 1); + break; + } + case 'text': + default: + // do nothing + } + resolve(str); + }); + + reader.addEventListener('error', () => { + reject(new Error('Failed loading file')); + }); + + reader.addEventListener('abort', () => { + reject(new Error('Failed loading file')); + }); + + if (!elm.files || !elm.files[0]) { + let error = new Error('No file selected'); + error.code = 'NoFileSelected'; + return reject(error); + } + + switch (type) { + case 'base64': + reader.readAsDataURL(elm.files[0]); + break; + case 'text': + default: + reader.readAsText(elm.files[0], 'UTF-8'); + } + }); + document.addEventListener('DOMContentLoaded', () => { let toggleAllElements = (allElementsElm, otherElements, direction) => { if (!allElementsElm || !otherElements) { diff --git a/views/config/ai.hbs b/views/config/ai.hbs index 95f34fe99..555004abe 100644 --- a/views/config/ai.hbs +++ b/views/config/ai.hbs @@ -527,32 +527,6 @@ let testPromptBtn = document.getElementById('prompt-test-btn'); - const readFile = (elm) => { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - - reader.addEventListener('load', (event) => { - let str = event.target.result.substring(event.target.result.indexOf(',') + 1) - - resolve(str) - }); - - reader.addEventListener('error', () => { - reject(new Error('Failed loading file')) - }); - - reader.addEventListener('abort', () => { - reject(new Error('Failed loading file')) - }); - - if (!elm.files || !elm.files[0]) { - return reject(new Error('No file selected')); - } - - reader.readAsDataURL(elm.files[0]); - }) - } - let showError = message => { document.getElementById('testPromptError').classList.remove('d-none'); document.getElementById('testPromptResponse').classList.add('d-none'); @@ -572,7 +546,7 @@ document.getElementById('testPromptResponse').classList.add('d-none'); } - let fileSelectElm = document.getElementById('emlEmail') + let fileSelectElm = document.getElementById('emlEmail'); async function testPromptFn() { let emailFile; @@ -580,7 +554,7 @@ clearResponses(); try { - emailFile = await readFile(fileSelectElm) + emailFile = await readContentFromFile(fileSelectElm, 'base64'); } catch (err) { return showError(err.message) } diff --git a/views/config/license.hbs b/views/config/license.hbs index 7616cfc24..dbb12b92d 100644 --- a/views/config/license.hbs +++ b/views/config/license.hbs @@ -154,7 +154,7 @@ referrerpolicy="{{referrerPolicy}}">license central (requires a paid subscription).
{{/if}} -