1
0
Fork 0
Personal fork of Tooty
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

90 lines
2.8 KiB

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tooty</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="bootstrap/css/bootstrap.min.css" media="all" rel="stylesheet" />
<link href="style.css" media="all" rel="stylesheet" />
<link rel="icon" type="image/png" sizes="192x192" href="images/favicon-192x192.png">
<link rel="icon" type="image/png" sizes="96x96" href="images/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png">
<meta name="msapplication-TileColor" content="#272b30">
<meta name="theme-color" content="#272b30">
</head>
<body>
<script src="app.js"></script>
<script>
const app = Elm.Main.fullscreen({
clients: localStorage.getItem("tooty.clients") || "[]",
registration: JSON.parse(localStorage.getItem("tooty.registration"))
});
app.ports.saveClients.subscribe(json => {
localStorage.setItem("tooty.clients", json);
});
app.ports.saveRegistration.subscribe(json => {
localStorage.setItem("tooty.registration", json);
});
app.ports.deleteRegistration.subscribe(json => {
localStorage.removeItem("tooty.registration");
});
app.ports.setStatus.subscribe(function(data) {
var element = document.getElementById(data.id);
if (element) {
element.value = data.status;
// Reset cursor at the end
element.focus();
}
});
app.ports.scrollIntoView.subscribe(function(id) {
requestAnimationFrame(function() {
var element = document.getElementById(id);
if (element) {
element.scrollIntoView(false);
}
});
});
app.ports.uploadMedia.subscribe(data => {
const files = Array.from(document.getElementById(data.id).files);
const formData = new FormData();
formData.append("file", files[0]);
fetch(data.url, {
method: "POST",
headers: { Authorization: "Bearer " + data.token },
body: formData,
})
.catch(err => app.ports.uploadError.send(err.message))
.then(response => response.text())
.then(app.ports.uploadSuccess.send);
});
function notify(data) {
const notif = new Notification(data.title, {
icon: data.icon,
body: data.body,
});
notif.onclick = () => location.hash = data.clickUrl;
}
app.ports.notify.subscribe(data => {
if (Notification.permission === "granted") {
notify(data);
} else if (Notification.permission !== "denied") {
Notification.requestPermission(permission => {
if (permission === "granted") {
notify(data);
}
});
}
});
</script>
</body>
</html>