"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 header = document.createElement("header"); const name = document.createElement("p"); const avatar = document.createElement("img") name.textContent = `${note.user.name} @${note.user.username}`; avatar.src = note.user.avatarUrl; const text = document.createElement("div"); text.textContent = `${note.text}`; el.appendChild(header); header.appendChild(avatar); header.appendChild(name); el.appendChild(text); tl.appendChild(el); } }); };