feat: add web push

This commit is contained in:
HRG @ SCExC 2025-01-12 11:54:14 -05:00
parent a7c679e610
commit c6fe03db7a
4 changed files with 256 additions and 3 deletions

View file

@ -2,6 +2,7 @@ const fs = require("fs");
const util = require("util");
const vm = require("node:vm");
const path = require("path");
require('dotenv').config()
const express = require("express");
const session = require("express-session");
const fileUpload = require("express-fileupload");
@ -10,6 +11,7 @@ const { Eta } = require("eta");
const { match } = require("path-to-regexp");
const bcrypt = require("bcrypt");
const cheerio = require("cheerio");
const webPush = require("web-push");
const app = express();
const _expressWs = require("express-ws")(app);
const bodyParser = require("body-parser");
@ -38,6 +40,16 @@ app.use(
}),
);
const vapidPublicKey = process.env.VAPID_PUBLIC_KEY
const vapidPrivateKey = process.env.VAPID_PRIVATE_KEY
// Configure web-push with your VAPID details
webPush.setVapidDetails(
"mailto:signups@sheepmail.net", // a mailto URL or URL
vapidPublicKey,
vapidPrivateKey,
);
function bootstrapContext(db, structureId, routeId, initContext) {
const allDbInstances = {};
function getDb(alias) {
@ -48,7 +60,7 @@ function bootstrapContext(db, structureId, routeId, initContext) {
// for now just designing with component approach
const eta = model.getTemplater(structureId);
const libs = { eta, db: getDb };
const libs = { eta, db: getDb, push: webPush };
let dbs = model.getDbsForStructure(db, structureId);
let context = vm.createContext({
@ -76,6 +88,7 @@ function bootstrapContext(db, structureId, routeId, initContext) {
model.createLog(db, structureId, routeId, s);
},
},
vapidPublicKey: vapidPublicKey
});
for (let appDb of dbs) {
let dbInstance = model.getDbInstance(appDb.id);