1
0
Fork 0
mirror of https://github.com/binwiederhier/ntfy.git synced 2025-04-22 02:00:00 +02:00
ntfy/web/src/app/SessionReplica.js
2023-06-09 14:32:34 -04:00

41 lines
921 B
JavaScript

import Dexie from "dexie";
/**
* Replica of the session in IndexedDB. This is used by the service
* worker to access the session. This is a bit of a hack.
*/
class SessionReplica {
constructor() {
const db = new Dexie("session-replica");
db.version(1).stores({
kv: "&key",
});
this.db = db;
}
async store(username, token) {
try {
await this.db.kv.bulkPut([
{ key: "user", value: username },
{ key: "token", value: token },
]);
} catch (e) {
console.error("[Session] Error replicating session to IndexedDB", e);
}
}
async reset() {
try {
await this.db.delete();
} catch (e) {
console.error("[Session] Error resetting session on IndexedDB", e);
}
}
async username() {
return (await this.db.kv.get({ key: "user" }))?.value;
}
}
const sessionReplica = new SessionReplica();
export default sessionReplica;