From dfec82deb2ef95df61d398615e646fb45b3a0e3d Mon Sep 17 00:00:00 2001 From: Ryan Breen Date: Sun, 12 Feb 2023 14:27:15 -0500 Subject: [PATCH] Adding metadata to the events. --- Shared (Extension)/Resources/background.js | 9 ++++--- Shared (Extension)/Resources/db.js | 30 ++++++---------------- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/Shared (Extension)/Resources/background.js b/Shared (Extension)/Resources/background.js index 466ada3..4fde090 100644 --- a/Shared (Extension)/Resources/background.js +++ b/Shared (Extension)/Resources/background.js @@ -140,7 +140,7 @@ function complete({ payload, origKind, event, remember, host }) { }); break; case 'signEvent': - signEvent_(event).then(e => sendResponse(e)); + signEvent_(event, host).then(e => sendResponse(e)); break; case 'nip04.encrypt': nip04Encrypt(event).then(e => sendResponse(e)); @@ -214,14 +214,17 @@ async function currentProfile() { return profiles[index]; } -async function signEvent_(event) { +async function signEvent_(event, host) { event = JSON.parse(JSON.stringify(event)); let privKey = await getPrivKey(); let pubKey = getPublicKey(privKey); event.pubkey = pubKey; event.id = getEventHash(event); event.sig = signEvent(event, privKey); - saveEvent(event); + saveEvent({ + event, + metadata: { host, signed_at: Math.round(Date.now() / 1000) }, + }); return event; } diff --git a/Shared (Extension)/Resources/db.js b/Shared (Extension)/Resources/db.js index 4ff5e5a..cc94437 100644 --- a/Shared (Extension)/Resources/db.js +++ b/Shared (Extension)/Resources/db.js @@ -1,35 +1,21 @@ import { openDB } from 'idb'; -// export function openDb() { -// let openRequest = indexedDB.open('db', 1); - -// openRequest.onupgradeneeded = reqEvent => { -// let db = reqEvent.target.result; -// db.createObjectStore('events', { keyPath: 'id' }); -// }; - -// return openRequest; -// } async function openEventsDb() { return await openDB('events', 1, { upgrade(db) { - db.createObjectStore('events', { keyPath: 'id' }); + const events = db.createObjectStore('events', { + keyPath: 'event.id', + }); + events.createIndex('pubkey', 'event.pubkey'); + events.createIndex('created_at', 'event.created_at'); + events.createIndex('kind', 'event.kind'); + events.createIndex('host', 'metadata.host'); }, }); } export async function saveEvent(event) { + console.log('logging event', event); let db = await openEventsDb(); return db.put('events', event); } - -// export function saveEvent(event) { -// let openRequest = openDb(); - -// openRequest.onsuccess = reqEvent => { -// let db = reqEvent.target.result; -// let transaction = db.transaction('events', 'readwrite'); -// let events = transaction.objectStore('events'); -// events.put(event); -// }; -// }