Skip to content

Commit

Permalink
fix(license): allow selecting license key from a file instead of copying
Browse files Browse the repository at this point in the history
  • Loading branch information
andris9 committed Oct 9, 2023
1 parent 86538ba commit d813e35
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 33 deletions.
43 changes: 43 additions & 0 deletions static/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
30 changes: 2 additions & 28 deletions views/config/ai.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -572,15 +546,15 @@
document.getElementById('testPromptResponse').classList.add('d-none');
}
let fileSelectElm = document.getElementById('emlEmail')
let fileSelectElm = document.getElementById('emlEmail');
async function testPromptFn() {
let emailFile;
clearResponses();
try {
emailFile = await readFile(fileSelectElm)
emailFile = await readContentFromFile(fileSelectElm, 'base64');
} catch (err) {
return showError(err.message)
}
Expand Down
41 changes: 36 additions & 5 deletions views/config/license.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@
referrerpolicy="{{referrerPolicy}}">license
central</a> (requires a paid subscription).</p>{{/if}}

<form method="post" action="/admin/config/license">
<form method="post" id="licenseForm" action="/admin/config/license">
<input type="hidden" name="crumb" id="crumb" value="{{crumb}}" />

<div class="form-group">
Expand All @@ -175,6 +175,11 @@
<small class="form-text text-muted">Paste or drag a license key file to this text box</small>
</div>

<div class="custom-file mb-3">
<input type="file" class="custom-file-input" id="licenseFile">
<label class="custom-file-label" for="licenseFile">Or choose the license key from a file…</label>
</div>

<div class="mb-4">
<button type="submit" class="btn btn-primary btn-icon-split">
<span class="icon text-white-50">
Expand Down Expand Up @@ -238,9 +243,35 @@

<script>
document.addEventListener('DOMContentLoaded', () => {
document.getElementById('unregister-license-link').addEventListener('click', e => {
e.preventDefault();
$('#deleteLicense').modal('show');
});
let deleteLicenseElm = document.getElementById('unregister-license-link');
if (deleteLicenseElm) {
deleteLicenseElm.addEventListener('click', e => {
e.preventDefault();
$('#deleteLicense').modal('show');
});
}
let fileSelectElm = document.getElementById('licenseFile');
let licenseTextElm = document.getElementById('licenseTextElement')
let loadFromFile = async () => {
try {
let licenseFileTxt = await readContentFromFile(fileSelectElm, 'text');
if (licenseFileTxt) {
licenseTextElm.value = (licenseFileTxt || '').toString().trim();
licenseTextElm.focus();
licenseTextElm.select();
//document.getElementById('licenseForm').submit();
}
} catch (err) {
if (err.code === 'NoFileSelected') {
return
}
showToast('Failed to read license key file\n' + err.message, 'check-circle');
return
}
}
fileSelectElm.addEventListener('change', loadFromFile);
});
</script>

0 comments on commit d813e35

Please sign in to comment.