aboutsummaryrefslogtreecommitdiff
path: root/src/static/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/static/main.js')
-rw-r--r--src/static/main.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/static/main.js b/src/static/main.js
new file mode 100644
index 0000000..40e62d6
--- /dev/null
+++ b/src/static/main.js
@@ -0,0 +1,49 @@
+window.onload = function() {
+ const form = document.querySelector('form')
+
+ if (form !== null) {
+ const submit = document.querySelector('input[type="submit"]')
+ const loading = document.querySelector('.g-Loading')
+ const error = document.querySelector('.g-Error')
+
+ function showError(msg) {
+ loading.style.display = 'none'
+ submit.disabled = false
+ error.innerText = msg
+ error.style.display = 'block'
+ }
+
+ form.onsubmit = function(event) {
+ event.preventDefault()
+
+ loading.style.display = 'flex'
+ submit.disabled = true
+ error.style.display = 'none'
+
+ const key = document.querySelector('input[name="key"]').value
+ const expiration = document.querySelector('select[name="expiration"]').value
+ const file = document.querySelector('input[name="file"]').files[0]
+ const filename = file.name.replace(/[^0-9a-zA-Z\.]/gi, '-')
+
+ // Wait a bit to prevent showing the loader too briefly
+ setTimeout(function() {
+ const xhr = new XMLHttpRequest()
+ xhr.open('POST', '/', true)
+ xhr.onload = function () {
+ if (xhr.status === 200) {
+ window.location = `/${xhr.responseText}`
+ } else {
+ showError(`Error uploading: ${xhr.status}`)
+ }
+ }
+ xhr.onerror = function () {
+ showError('Upload error')
+ }
+ xhr.setRequestHeader('X-FileName', filename)
+ xhr.setRequestHeader('X-Expiration', expiration)
+ xhr.setRequestHeader('X-Key', key)
+ xhr.send(file)
+ }, 500)
+ }
+ }
+}