async function like(id) { const formData = new FormData(); formData.append('post', id); const result = await fetch('/like', { method: 'POST', body: formData }); if (result.status === 401) { window.location.href = "/login"; return; } if (result.status < 200 || result.status >= 400) { alert("your post didnt get the like because the server thought your opinion was invalid"); return; } } async function post() { const postbox = document.getElementById('newpost'); const formData = new FormData(); formData.append('post', postbox.value); const result = await fetch('/post', { method: 'POST', body: formData }); if (result.status < 200 || result.status >= 400) { alert("you have been silenced by the server and your post did not go through"); return; } window.location.href = "/"; } async function register() { const usernameBox = document.getElementById('username'); const passwordBox = document.getElementById('password'); const formData = new FormData(); formData.append('username', usernameBox.value); formData.append('password', passwordBox.value); const result = await fetch('/register', { method: 'POST', body: formData }); if (result.status < 200 || result.status >= 400) { alert("fard"); return; } window.location.href = "/"; } async function login() { const usernameBox = document.getElementById('username'); const passwordBox = document.getElementById('password'); const formData = new FormData(); formData.append('username', usernameBox.value); formData.append('password', passwordBox.value); const result = await fetch('/login', { method: 'POST', body: formData }); if (result.status < 200 || result.status >= 400) { alert("for some reason the server hates you and didn't let you log into your account"); return; } window.location.href = "/"; } async function checkLoginStatus() { const result = await fetch('/me'); if (result.headers.get('X-Logged-In') !== 'true') { return ""; } const username = result.headers.get('X-Username'); return username; } document.addEventListener('DOMContentLoaded', async function() { if (window.fetch) { // We know the fetch API exists, so hide the stuff that doesn't rely on it const form = document.getElementById("postbox-form"); if (!form) { return; } form.style.display = 'none'; const postbox = document.getElementById("postbox"); if (!postbox) { return; } const userStatus = await checkLoginStatus(); // if we're logged in, show the post box, // otherwise show a welcome message, encouraging users to sign up/log in if (userStatus === "") { const newElement = document.createElement("p"); newElement.textContent = "Welcome to Chookchat!\nTo get posting, click 'login' to log in or create an account.\nEnjoy your stay!"; postbox.appendChild(newElement); } else { const helperText = document.createElement("p"); helperText.textContent = "You're posting as " + userStatus; postbox.appendChild(helperText); const textArea = document.createElement("textarea"); textArea.id = "newpost"; postbox.appendChild(textArea); const postButton = document.createElement("button"); postButton.textContent = "Post"; postButton.id = "postbutton" postButton.onclick = post; postbox.appendChild(postButton); const loginLink = document.getElementById("loginLink"); loginLink.textContent = "hello, " + userStatus + "!"; loginLink.href = "/profile/" + userStatus; } } });