Real-time collaboration within space (#411)
This commit is contained in:
+110
@@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="/favicon.png" />
|
||||
<title>Reset SilverBullet</title>
|
||||
<style>
|
||||
html,
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
border: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
header {
|
||||
background-color: #e1e1e1;
|
||||
border-bottom: #cacaca 1px solid;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
margin: 0 auto;
|
||||
max-width: 800px;
|
||||
padding: 8px;
|
||||
font-size: 28px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
form {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
input {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
form>div {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.error-message {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<h1>Logout</h1>
|
||||
</header>
|
||||
<button onclick="resetAll()">Logout</button>
|
||||
<button onclick="javascript:location='/'">Cancel</button>
|
||||
|
||||
<script>
|
||||
function resetAll() {
|
||||
// Reset local storage username
|
||||
localStorage.removeItem("username");
|
||||
|
||||
if (indexedDB.databases) {
|
||||
// get a list of all existing IndexedDB databases
|
||||
indexedDB.databases().then((databases) => {
|
||||
// loop through the list and delete each database
|
||||
return Promise.all(
|
||||
databases.map((database) => {
|
||||
console.log("Now deleting", database.name);
|
||||
return new Promise((resolve) => {
|
||||
return indexedDB.deleteDatabase(database.name).onsuccess = resolve;
|
||||
});
|
||||
})
|
||||
);
|
||||
}).then(() => {
|
||||
alert("Flushed local data, you're now logged out");
|
||||
location.href = "/.auth?logout";
|
||||
});
|
||||
} else {
|
||||
alert("Cannot flush local data (Firefox user?), will now log you out");
|
||||
location.href = "/.auth?logout";
|
||||
}
|
||||
|
||||
if (navigator.serviceWorker) {
|
||||
navigator.serviceWorker.ready.then((registration) => {
|
||||
registration.active.postMessage({ type: 'flushCache' });
|
||||
});
|
||||
|
||||
navigator.serviceWorker.addEventListener('message', (event) => {
|
||||
if (event.data.type === 'cacheFlushed') {
|
||||
console.log('Cache flushed');
|
||||
navigator.serviceWorker.getRegistrations().then((registrations) => {
|
||||
for (const registration of registrations) {
|
||||
registration.unregister();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user