From 56121342d60aa2caea7010faed23833beedbfcad Mon Sep 17 00:00:00 2001 From: counterweight Date: Sun, 9 Feb 2025 19:55:44 +0100 Subject: [PATCH] inviting npubs --- src/app.js | 2 +- src/models/InvitedNpub.js | 28 ++++++++++++++++++++++++++++ src/public/javascript/invite.js | 28 ++++++++++++++++++++++++++++ src/routes/apiRoutes.js | 15 +++++++++++++++ src/routes/webRoutes.js | 1 - src/views/invite.ejs | 4 ++++ 6 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 src/models/InvitedNpub.js create mode 100644 src/public/javascript/invite.js diff --git a/src/app.js b/src/app.js index 9de7597..b4fde65 100644 --- a/src/app.js +++ b/src/app.js @@ -4,7 +4,7 @@ const path = require('path'); const sequelize = require('./database'); const Session = require('./models/Session'); -const AppInvite = require('./models/AppInvite'); + const app = express(); const port = 3000; diff --git a/src/models/InvitedNpub.js b/src/models/InvitedNpub.js new file mode 100644 index 0000000..b706a8d --- /dev/null +++ b/src/models/InvitedNpub.js @@ -0,0 +1,28 @@ +const { DataTypes } = require('sequelize'); +const sequelize = require('../database'); + +const InvitedNpub = sequelize.define('InvitedNpub', { + uuid: { + type: DataTypes.UUID, + allowNull: false, + unique: true, + primaryKey: true + }, + app_invite_uuid: { + type: DataTypes.UUID, + allowNull: false, + unique: true, + }, + invited_npub: { + type: DataTypes.STRING, + allowNull: false, + }, + created_at: { + type: DataTypes.DATE, + allowNull: false + } +}, { + tableName: 'invited_npub' +}); + +module.exports = InvitedNpub; \ No newline at end of file diff --git a/src/public/javascript/invite.js b/src/public/javascript/invite.js new file mode 100644 index 0000000..edb3a03 --- /dev/null +++ b/src/public/javascript/invite.js @@ -0,0 +1,28 @@ +function acceptInvite() { + const npub = window.nostr.getPublicKey(); + console.log("Npub is" + npub); + + npub.then(async function (npub) { + try { + const response = await fetch('/api/invited-npub', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + "npub": npub + }) + }); + + if (response.ok) { + const data = await response.json(); + console.log('invited-npub record created successfully:', data); + } else { + const error = await response.json(); + console.error('Failed to create invited-npub record:', error); + } + } catch (error) { + console.error('An error occurred:', error); + } + }); +} \ No newline at end of file diff --git a/src/routes/apiRoutes.js b/src/routes/apiRoutes.js index f2ff1cb..451041a 100644 --- a/src/routes/apiRoutes.js +++ b/src/routes/apiRoutes.js @@ -2,6 +2,7 @@ const express = require('express'); const uuid = require("uuid"); const SessionNpubbed = require('../models/SessionNpubbed'); +const InvitedNpub = require('../models/InvitedNpub'); const router = express.Router(); @@ -41,4 +42,18 @@ router.post('/session-npubbed', async (req, res) => { } }); + +router.post('/invited-npub', async (req, res) => { + const sessionUuid = req.cookies.sessionUuid; + const npub = req.body.npub; + + await InvitedNpub.create({ + uuid: uuid.v7(), + app_invite_uuid: uuid.v7(), //should read from cookie instead + invited_npub: npub, + created_at: new Date().toISOString() + }); + +}); + module.exports = router; diff --git a/src/routes/webRoutes.js b/src/routes/webRoutes.js index 0d0a118..0e7fd5d 100644 --- a/src/routes/webRoutes.js +++ b/src/routes/webRoutes.js @@ -3,7 +3,6 @@ const router = express.Router(); const AppInvite = require('../models/AppInvite'); - router.get('/', (req, res) => { res.render('index', { uuid: req.cookies.sessionUuid }); }); diff --git a/src/views/invite.ejs b/src/views/invite.ejs index 7363e01..a2af867 100644 --- a/src/views/invite.ejs +++ b/src/views/invite.ejs @@ -5,12 +5,16 @@ Invite Details +

Invite Details

Invite UUID: <%= invite.uuid %>

+
+ +
\ No newline at end of file