56 lines
1.4 KiB
JavaScript
56 lines
1.4 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;
|
||
|
};
|
||
|
|
||
|
document.getElementById('submit').addEventListener('click', () => {
|
||
|
api('notes/create', {
|
||
|
text: document.getElementById('text').value
|
||
|
}).then(() => {
|
||
|
location.reload();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
api('notes/timeline').then(notes => {
|
||
|
const tl = document.getElementById('tl');
|
||
|
for (const note of notes) {
|
||
|
const el = document.createElement('div');
|
||
|
const name = document.createElement('header');
|
||
|
name.textContent = `${note.user.name} @${note.user.username}`;
|
||
|
const text = document.createElement('div');
|
||
|
text.textContent = `${note.text}`;
|
||
|
el.appendChild(name);
|
||
|
el.appendChild(text);
|
||
|
tl.appendChild(el);
|
||
|
}
|
||
|
});
|
||
|
};
|