Pushnotifications now
This commit is contained in:
64
api/subscriptions.js
Normal file
64
api/subscriptions.js
Normal file
@@ -0,0 +1,64 @@
|
||||
const express = require("express");
|
||||
const path = require("path");
|
||||
const router = express.Router();
|
||||
const webpush = require("web-push"); //requiring the web-push module
|
||||
const mongoose = require("mongoose");
|
||||
const schedule = require("node-schedule");
|
||||
|
||||
mongoose.connect("mongodb://localhost:27017/vinlottis", {
|
||||
useNewUrlParser: true
|
||||
});
|
||||
|
||||
const config = require(path.join(__dirname + "/../config/env/push.config"));
|
||||
const Subscription = require(path.join(__dirname + "/../schemas/Subscription"));
|
||||
|
||||
const vapidKeys = {
|
||||
publicKey: config.publicKey,
|
||||
privateKey: config.privateKey
|
||||
};
|
||||
//setting our previously generated VAPID keys
|
||||
webpush.setVapidDetails(
|
||||
config.mailto,
|
||||
vapidKeys.publicKey,
|
||||
vapidKeys.privateKey
|
||||
);
|
||||
|
||||
const sendNotification = (subscription, dataToSend = "") => {
|
||||
webpush.sendNotification(subscription, dataToSend);
|
||||
};
|
||||
|
||||
router.use((req, res, next) => {
|
||||
next();
|
||||
});
|
||||
|
||||
router.route("/save-subscription").post(async (req, res) => {
|
||||
const subscription = req.body;
|
||||
await saveToDatabase(subscription); //Method to save the subscription to Database
|
||||
res.json({ message: "success" });
|
||||
});
|
||||
|
||||
const saveToDatabase = async subscription => {
|
||||
let found = await Subscription.find({
|
||||
endpoint: subscription.endpoint,
|
||||
"keys.p256dh": subscription.keys.p256dh,
|
||||
"keys.auth": subscription.keys.auth
|
||||
});
|
||||
|
||||
if (found.length > 0) {
|
||||
return;
|
||||
} else {
|
||||
let newSubscription = new Subscription(subscription);
|
||||
await newSubscription.save();
|
||||
}
|
||||
};
|
||||
|
||||
schedule.scheduleJob("0 50 14 * * 5", async () => {
|
||||
let subs = await Subscription.find();
|
||||
for (let i = 0; i < subs.length; i++) {
|
||||
let subscription = subs[i]; //get subscription from your databse here.
|
||||
const message = "Husk vinlotteriet, det begynner om 10 minutter!";
|
||||
sendNotification(subscription, message);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user