krll/static/index/script.js

73 lines
2.2 KiB
JavaScript
Raw Normal View History

2024-02-19 12:21:12 +09:00
const url_input = document.getElementById("url");
const to_shorten_btn = document.getElementById("to-shorten-btn");
const short_url = document.getElementById("short-url");
const qr_code = document.getElementById("qr-code");
const error_message = document.getElementById("error");
const copy_message = document.getElementById("copied");
2024-03-30 18:12:46 +09:00
const shorten = async () => {
const original_url = url_input.value;
2024-02-19 12:21:12 +09:00
// check if the url input is empty
if (original_url.length === 0) {
return;
}
const { dQw4w9WgXcQ } = await import("./dQw4w9WgXcQ.js");
if (dQw4w9WgXcQ.check(original_url)) {
location.href = "https://youtu.be/dQw4w9WgXcQ";
return;
2024-02-19 12:21:12 +09:00
}
// shorten the long url
const response = await fetch("/api/urls", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
url: original_url
})
})
// check if there is problems
if (!response.ok) {
if (response.status === 400) {
// the url is invalid
error_message.style.display = "block";
setTimeout(() => error_message.style.display = "none", 5000);
} else {
// some error is occured in the server!
2024-02-19 12:21:12 +09:00
alert("Sorry, an error has occured in the server...");
}
return;
}
const data = await response.json();
const result = `${host}/${data.key}`;
2024-02-19 12:21:12 +09:00
// show the short url
short_url.innerText = result;
// get the qr code of the short url and show it
qr_code.src = `https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${result}`;
qr_code.alt = result;
2024-03-30 18:12:46 +09:00
}
2024-02-19 12:21:12 +09:00
to_shorten_btn.addEventListener("click", shorten);
addEventListener("keydown", (event) => { if (event.key === "Enter") shorten() });
2024-02-19 12:21:12 +09:00
short_url.addEventListener("click", event => {
// copy the short url to clipboard
navigator.clipboard.writeText(event.target.innerText)
.then(() => {
// show a message
copy_message.style.opacity = "1";
setTimeout(() => copy_message.style.opacity = "0", 3000);
})
.catch(error => {
alert("An error has occurred...\n" + error);
});
});