feat: capture text files for browser inbox
This commit is contained in:
@@ -50,6 +50,7 @@ h1 {
|
||||
}
|
||||
|
||||
.panel,
|
||||
.file-picker,
|
||||
.settings {
|
||||
border: 1px solid #273244;
|
||||
border-radius: 6px;
|
||||
@@ -66,6 +67,7 @@ h1 {
|
||||
}
|
||||
|
||||
.row span,
|
||||
.file-picker label,
|
||||
.settings label,
|
||||
.hint {
|
||||
color: #94a3b8;
|
||||
@@ -124,6 +126,11 @@ input {
|
||||
color: #e5e7eb;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.hint {
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
|
||||
@@ -32,9 +32,15 @@
|
||||
|
||||
<section class="actions">
|
||||
<button id="capture-page">Send Page</button>
|
||||
<button id="capture-file">Send File</button>
|
||||
<button id="retry">Retry Pending</button>
|
||||
</section>
|
||||
|
||||
<section class="file-picker">
|
||||
<label for="file-input">Text file</label>
|
||||
<input id="file-input" type="file">
|
||||
</section>
|
||||
|
||||
<section class="settings">
|
||||
<label for="receiver-input">Receiver URL</label>
|
||||
<input id="receiver-input" type="url" spellcheck="false">
|
||||
|
||||
@@ -6,8 +6,10 @@
|
||||
var receiverStateEl = document.getElementById('receiver-state');
|
||||
var receiverUrlEl = document.getElementById('receiver-url');
|
||||
var receiverInputEl = document.getElementById('receiver-input');
|
||||
var fileInputEl = document.getElementById('file-input');
|
||||
var pendingCountEl = document.getElementById('pending-count');
|
||||
var statusDotEl = document.getElementById('status-dot');
|
||||
var MAX_FILE_TEXT_LENGTH = 2 * 1024 * 1024;
|
||||
|
||||
function setStatus(text) {
|
||||
statusEl.textContent = text;
|
||||
@@ -67,6 +69,31 @@
|
||||
send({ type: 'verstak.capture', kind: 'page' });
|
||||
});
|
||||
|
||||
document.getElementById('capture-file').addEventListener('click', function () {
|
||||
var file = fileInputEl.files && fileInputEl.files[0];
|
||||
if (!file) {
|
||||
setStatus('Choose a text file first');
|
||||
return;
|
||||
}
|
||||
if (file.size > MAX_FILE_TEXT_LENGTH) {
|
||||
setStatus('File is too large for text capture');
|
||||
return;
|
||||
}
|
||||
setStatus('Reading file...');
|
||||
file.text().then(function (content) {
|
||||
send({
|
||||
type: 'verstak.capture',
|
||||
kind: 'file',
|
||||
fileName: file.name,
|
||||
fileMime: file.type || 'text/plain',
|
||||
fileSize: file.size,
|
||||
fileText: content
|
||||
});
|
||||
}).catch(function (err) {
|
||||
setStatus(err && err.message ? err.message : String(err));
|
||||
});
|
||||
});
|
||||
|
||||
document.getElementById('retry').addEventListener('click', function () {
|
||||
send({ type: 'verstak.capture', action: 'retryPending' });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user