| 1234567891011121314151617181920212223242526272829303132333435 |
- import webPush from 'web-push';
- import { db } from '../database/db.js';
- let cachedKeys = null;
- function ensureVapidKeys() {
- if (cachedKeys) return cachedKeys;
- const row = db.prepare('SELECT public_key, private_key FROM vapid_keys ORDER BY id DESC LIMIT 1').get();
- if (row) {
- cachedKeys = { publicKey: row.public_key, privateKey: row.private_key };
- return cachedKeys;
- }
- const keys = webPush.generateVAPIDKeys();
- db.prepare('INSERT INTO vapid_keys (public_key, private_key) VALUES (?, ?)').run(keys.publicKey, keys.privateKey);
- cachedKeys = keys;
- return cachedKeys;
- }
- function getPublicKey() {
- return ensureVapidKeys().publicKey;
- }
- function configureWebPush() {
- const keys = ensureVapidKeys();
- webPush.setVapidDetails(
- 'mailto:noreply@pilotdeck.local',
- keys.publicKey,
- keys.privateKey
- );
- console.log('Web Push notifications configured');
- }
- export { ensureVapidKeys, getPublicKey, configureWebPush };
|