mirror of
https://github.com/binwiederhier/ntfy.git
synced 2024-05-27 07:40:38 +12:00
ff5c854192
- Use new notification request/opt-in flow for push - Implement unsubscribing - Implement muting - Implement emojis in title - Add iOS specific PWA warning - Don’t use websockets when web push is enabled - Fix duplicate notifications - Implement default web push setting - Implement changing subscription type - Implement web push subscription refresh - Implement web push notification click
45 lines
1 KiB
JavaScript
45 lines
1 KiB
JavaScript
import Dexie from "dexie";
|
|
|
|
// Store to IndexedDB as well so that the
|
|
// service worker can access it
|
|
// TODO: Probably make everything depend on this and not use localStorage,
|
|
// but that's a larger refactoring effort for another PR
|
|
|
|
class SessionReplica {
|
|
constructor() {
|
|
const db = new Dexie("session-replica");
|
|
|
|
db.version(1).stores({
|
|
keyValueStore: "&key",
|
|
});
|
|
|
|
this.db = db;
|
|
}
|
|
|
|
async store(username, token) {
|
|
try {
|
|
await this.db.keyValueStore.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.keyValueStore.get({ key: "user" }))?.value;
|
|
}
|
|
}
|
|
|
|
const sessionReplica = new SessionReplica();
|
|
export default sessionReplica;
|