the reason is that leptos depends too much on the nightly build of rust and that didnt go well with the local dev env
148 lines
5.1 KiB
HTML
148 lines
5.1 KiB
HTML
<!DOCTYPE html><html lang="en"><head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Digitaler Frieden</title>
|
|
<link rel="stylesheet" href="/styles-a6b6e6f9250468d7.css" integrity="sha384-PpjsPiqi8QEB8ejejQGqjktR9RC+Hijur37kBb9JSfeVGuDHzinYw4QwRkP1H9SH">
|
|
|
|
|
|
<link rel="preload" href="/digitaler-frieden-c3672af9320d991f_bg.wasm" crossorigin="anonymous" integrity="sha384-tx67yL4skcKVDJO5vG0fNugLXfhAo8XFRw47S1/30IgW4Hcdu4oosxP7B/XL9g0v" as="fetch" type="application/wasm">
|
|
<link rel="modulepreload" href="/digitaler-frieden-c3672af9320d991f.js" crossorigin="anonymous" integrity="sha384-L2OaUExxARylFFHEezWWuPTTmKg/CGd3TQbuvWJPB/Rw3j8aQMXMwAeHOoUSwGF3"></head>
|
|
<body class="bg-black text-white">
|
|
|
|
|
|
|
|
<script type="module">
|
|
import init, * as bindings from '/digitaler-frieden-c3672af9320d991f.js';
|
|
init('/digitaler-frieden-c3672af9320d991f_bg.wasm');
|
|
window.wasmBindings = bindings;
|
|
|
|
</script><script>"use strict";
|
|
|
|
(function () {
|
|
|
|
const address = '{{__TRUNK_ADDRESS__}}';
|
|
const base = '{{__TRUNK_WS_BASE__}}';
|
|
let protocol = '';
|
|
protocol =
|
|
protocol
|
|
? protocol
|
|
: window.location.protocol === 'https:'
|
|
? 'wss'
|
|
: 'ws';
|
|
const url = protocol + '://' + address + base + '.well-known/trunk/ws';
|
|
|
|
class Overlay {
|
|
constructor() {
|
|
// create an overlay
|
|
this._overlay = document.createElement("div");
|
|
const style = this._overlay.style;
|
|
style.height = "100vh";
|
|
style.width = "100vw";
|
|
style.position = "fixed";
|
|
style.top = "0";
|
|
style.left = "0";
|
|
style.backgroundColor = "rgba(222, 222, 222, 0.5)";
|
|
style.fontFamily = "sans-serif";
|
|
// not sure that's the right approach
|
|
style.zIndex = "1000000";
|
|
style.backdropFilter = "blur(1rem)";
|
|
|
|
const container = document.createElement("div");
|
|
// center it
|
|
container.style.position = "absolute";
|
|
container.style.top = "30%";
|
|
container.style.left = "15%";
|
|
container.style.maxWidth = "85%";
|
|
|
|
this._title = document.createElement("div");
|
|
this._title.innerText = "Build failure";
|
|
this._title.style.paddingBottom = "2rem";
|
|
this._title.style.fontSize = "2.5rem";
|
|
|
|
this._message = document.createElement("div");
|
|
this._message.style.whiteSpace = "pre-wrap";
|
|
|
|
const icon= document.createElement("div");
|
|
icon.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="#dc3545" viewBox="0 0 16 16"><path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/></svg>';
|
|
this._title.prepend(icon);
|
|
|
|
container.append(this._title, this._message);
|
|
this._overlay.append(container);
|
|
|
|
this._inject();
|
|
window.setInterval(() => {
|
|
this._inject();
|
|
}, 250);
|
|
}
|
|
|
|
set reason(reason) {
|
|
this._message.textContent = reason;
|
|
}
|
|
|
|
_inject() {
|
|
if (!this._overlay.isConnected) {
|
|
// prepend it
|
|
document.body?.prepend(this._overlay);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
class Client {
|
|
constructor(url) {
|
|
this.url = url;
|
|
this.poll_interval = 5000;
|
|
this._overlay = null;
|
|
}
|
|
|
|
start() {
|
|
const ws = new WebSocket(this.url);
|
|
ws.onmessage = (ev) => {
|
|
const msg = JSON.parse(ev.data);
|
|
switch (msg.type) {
|
|
case "reload":
|
|
this.reload();
|
|
break;
|
|
case "buildFailure":
|
|
this.buildFailure(msg.data)
|
|
break;
|
|
}
|
|
};
|
|
ws.onclose = this.onclose;
|
|
}
|
|
|
|
onclose() {
|
|
window.setTimeout(
|
|
() => {
|
|
// when we successfully reconnect, we'll force a
|
|
// reload (since we presumably lost connection to
|
|
// trunk due to it being killed, so it will have
|
|
// rebuilt on restart)
|
|
const ws = new WebSocket(this.url);
|
|
ws.onopen = () => window.location.reload();
|
|
ws.onclose = this.onclose;
|
|
},
|
|
this.poll_interval);
|
|
}
|
|
|
|
reload() {
|
|
window.location.reload();
|
|
}
|
|
|
|
buildFailure({reason}) {
|
|
// also log the console
|
|
console.error("Build failed:", reason);
|
|
|
|
console.debug("Overlay", this._overlay);
|
|
|
|
if (!this._overlay) {
|
|
this._overlay = new Overlay();
|
|
}
|
|
this._overlay.reason = reason;
|
|
}
|
|
}
|
|
|
|
new Client(url).start();
|
|
|
|
})()
|
|
</script></body></html> |