103 lines
3.0 KiB
JavaScript
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));
|