88 lines
2.5 KiB
JavaScript
88 lines
2.5 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
window.onload = async () => {
|
||
|
const account = JSON.parse(localStorage.getItem('account'));
|
||
|
const i = account.token;
|
||
|
|
||
|
const api = (endpoint, data = {}) => {
|
||
|
const promise = new Promise((resolve, reject) => {
|
||
|
// Append a credential
|
||
|
if (i) data.i = i;
|
||
|
|
||
|
// Send request
|
||
|
fetch(endpoint.indexOf('://') > -1 ? endpoint : `/api/${endpoint}`, {
|
||
|
method: 'POST',
|
||
|
body: JSON.stringify(data),
|
||
|
credentials: 'omit',
|
||
|
cache: 'no-cache'
|
||
|
}).then(async (res) => {
|
||
|
const body = res.status === 204 ? null : await res.json();
|
||
|
|
||
|
if (res.status === 200) {
|
||
|
resolve(body);
|
||
|
} else if (res.status === 204) {
|
||
|
resolve();
|
||
|
} else {
|
||
|
reject(body.error);
|
||
|
}
|
||
|
}).catch(reject);
|
||
|
});
|
||
|
|
||
|
return promise;
|
||
|
};
|
||
|
|
||
|
const content = document.getElementById('content');
|
||
|
|
||
|
document.getElementById('ls').addEventListener('click', () => {
|
||
|
content.innerHTML = '';
|
||
|
|
||
|
const lsEditor = document.createElement('div');
|
||
|
lsEditor.id = 'lsEditor';
|
||
|
|
||
|
const adder = document.createElement('div');
|
||
|
adder.classList.add('adder');
|
||
|
const addKeyInput = document.createElement('input');
|
||
|
const addValueTextarea = document.createElement('textarea');
|
||
|
const addButton = document.createElement('button');
|
||
|
addButton.textContent = 'add';
|
||
|
addButton.addEventListener('click', () => {
|
||
|
localStorage.setItem(addKeyInput.value, addValueTextarea.value);
|
||
|
location.reload();
|
||
|
});
|
||
|
|
||
|
adder.appendChild(addKeyInput);
|
||
|
adder.appendChild(addValueTextarea);
|
||
|
adder.appendChild(addButton);
|
||
|
lsEditor.appendChild(adder);
|
||
|
|
||
|
for (let i = 0; i < localStorage.length; i++) {
|
||
|
const k = localStorage.key(i);
|
||
|
const record = document.createElement('div');
|
||
|
record.classList.add('record');
|
||
|
const header = document.createElement('header');
|
||
|
header.textContent = k;
|
||
|
const textarea = document.createElement('textarea');
|
||
|
textarea.textContent = localStorage.getItem(k);
|
||
|
const saveButton = document.createElement('button');
|
||
|
saveButton.textContent = 'save';
|
||
|
saveButton.addEventListener('click', () => {
|
||
|
localStorage.setItem(k, textarea.value);
|
||
|
location.reload();
|
||
|
});
|
||
|
const removeButton = document.createElement('button');
|
||
|
removeButton.textContent = 'remove';
|
||
|
removeButton.addEventListener('click', () => {
|
||
|
localStorage.removeItem(k);
|
||
|
location.reload();
|
||
|
});
|
||
|
record.appendChild(header);
|
||
|
record.appendChild(textarea);
|
||
|
record.appendChild(saveButton);
|
||
|
record.appendChild(removeButton);
|
||
|
lsEditor.appendChild(record);
|
||
|
}
|
||
|
|
||
|
content.appendChild(lsEditor);
|
||
|
});
|
||
|
};
|