keyserver/src/static/js/manage.js

103 lines
3.0 KiB
JavaScript

/* eslint-disable */
;(function($) {
'use strict';
$('.progress-bar').css('width', '100%');
// POST key form
$('#addKey form').submit(function(e) {
e.preventDefault();
$('#addKey .alert').addClass('hidden');
$('#addKey .progress').removeClass('hidden');
$.ajax({
method: 'POST',
url: '/api/v1/key',
data: JSON.stringify({ publicKeyArmored:$('#addKey textarea').val() }),
contentType: 'application/json',
}).done(function(data, textStatus, xhr) {
if (xhr.status === 304) {
alert('addKey', 'danger', 'Key already exists!');
} else {
alert('addKey', 'success', xhr.responseText);
}
})
.fail(function(xhr) {
alert('addKey', 'danger', xhr.responseText);
});
});
// DELETE key form
$('#removeKey form').submit(function(e) {
e.preventDefault();
$('#removeKey .alert').addClass('hidden');
$('#removeKey .progress').removeClass('hidden');
var email = $('#removeKey input[type="email"]').val();
$.ajax({
method: 'DELETE',
url: '/api/v1/key?email=' + encodeURIComponent(email)
}).done(function(data, textStatus, xhr) {
alert('removeKey', 'success', xhr.responseText);
})
.fail(function(xhr) {
alert('removeKey', 'danger', xhr.responseText);
});
});
function alert(region, outcome, text) {
$('#' + region + ' .progress').addClass('hidden');
$('#' + region + ' .alert-' + outcome + ' span').text(text);
$('#' + region + ' .alert-' + outcome).removeClass('hidden');
}
$('#drop_zone').on('drop',
function(ev) {
// Prevent default behavior (Prevent file from being opened)
ev.stopPropagation();
ev.preventDefault();
$('#addKey .alert').addClass('hidden');
if(ev.originalEvent.dataTransfer.files[0].type != "text/plain") {
alert('addKey', 'danger', 'You must import an ascii-armored key file!');
return;
}
handleFiles(ev.originalEvent.dataTransfer.files);
});
$('#drop_zone').on('dragover',
function(ev) {
// Prevent default behavior (Prevent file from being opened)
ev.stopPropagation();
ev.preventDefault();
ev.originalEvent.dataTransfer.dropEffect = 'copy';
});
$('#drop_zone').on('dragenter',
function(ev) {
// Prevent default behavior (Prevent file from being opened)
ev.stopPropagation();
ev.preventDefault();
ev.originalEvent.dataTransfer.dropEffect = 'copy';
});
$('#fileSelect').click(function() {
$('#file-selector').click();
});
$('#file-selector').change(function() {
$('#addKey .alert').addClass('hidden');
handleFiles(this.files);
});
function handleFiles(files) {
if(files.length > 1) {
alert('addKey', 'danger', 'You must import a single file!');
return;
}
const file = files[0];
const reader = new FileReader();
reader.onload = function(){
$('#addKey textarea').val(reader.result);
}
reader.readAsText(file);
}
}(jQuery));