From 54f00d19449ca72392fe0d962c09767d3af206b1 Mon Sep 17 00:00:00 2001 From: Andre Staltz Date: Tue, 18 Jul 2023 23:47:13 +0300 Subject: [PATCH] new identity.has() API --- lib/index.js | 25 +++++++++++++++++++++++++ test/identity-add.test.js | 4 ++++ 2 files changed, 29 insertions(+) diff --git a/lib/index.js b/lib/index.js index 2d04e61..539071c 100644 --- a/lib/index.js +++ b/lib/index.js @@ -385,6 +385,30 @@ function initDB(peer, config) { cb(err) } + /** + * @param {{ + * keypair?: KeypairPublicSlice; + * identity: string; + * }} opts + */ + function identityHas(opts) { + const keypair = opts?.keypair ?? config.keypair + + const identityTangle = new DBTangle(opts.identity, records()) + for (const msgHash of identityTangle.topoSort()) { + const msg = get(msgHash) + if (!msg?.data) continue + /** @type {IdentityData} */ + const data = msg.data + if (data.action !== 'add') continue + if (data.add.key.algorithm !== keypair.curve) continue + if (data.add.key.bytes === keypair.public) { + return true + } + } + return false + } + /** * @param {{ * keypair?: Keypair, @@ -722,6 +746,7 @@ function initDB(peer, config) { findOrCreate: findOrCreateIdentity, add: addToIdentity, consent: consentToIdentity, + has: identityHas, }, feed: { publish: publishToFeed, diff --git a/test/identity-add.test.js b/test/identity-add.test.js index 4903bb0..380b937 100644 --- a/test/identity-add.test.js +++ b/test/identity-add.test.js @@ -26,6 +26,8 @@ test('identity.add()', async (t) => { domain: 'person', }) + assert.equal(peer.db.identity.has({ identity: id, keypair: keypair2 }), false) + const consent = peer.db.identity.consent({ identity: id, keypair: keypair2 }) const identityRec1 = await p(peer.db.identity.add)({ @@ -60,6 +62,8 @@ test('identity.add()', async (t) => { ) assert.equal(msg.pubkey, keypair1.public, 'msg.pubkey OLD KEY') + assert.equal(peer.db.identity.has({ identity: id, keypair: keypair2 }), true) + await p(peer.close)() })