Let's get account names to the UI.

This commit is contained in:
2024-04-13 21:51:18 -04:00
parent 26165e30de
commit dbf28c03e6
3 changed files with 52 additions and 20 deletions

View File

@ -540,17 +540,13 @@ async function getProcessBlob(blobId, key, options) {
},
};
process.sendIdentities = async function () {
process.app.send({
process.app.send(Object.assign({
action: 'identities',
identities: await ssb.getIdentities(
process?.credentials?.session?.name
),
identity: await getActiveIdentity(
process?.credentials?.session?.name,
options.packageOwner,
options.packageName
),
});
}, await getIdentityInfo(
process?.credentials?.session?.name,
options?.packageOwner,
options?.packageName
)));
};
process.setActiveIdentity = async function (identity) {
if (
@ -1558,6 +1554,42 @@ async function getActiveIdentity(user, packageOwner, packageName) {
}
}
async function getIdentityInfo(user, packageOwner, packageName) {
let identities = await ssb.getIdentities(
user
);
let names = new Object();
for (let identity of identities) {
names[identity] = identity;
}
await ssb.sqlAsync(`
SELECT author, name FROM (
SELECT
messages.author,
RANK() OVER (PARTITION BY messages.author ORDER BY messages.sequence DESC) AS author_rank,
messages.content ->> 'name' AS name
FROM messages
JOIN json_each(?) AS ids
ON messages.author = ids.value
WHERE json_extract(messages.content, '$.type') = 'about' AND content ->> 'about' = messages.author AND name IS NOT NULL)
WHERE author_rank = 1
`,
[JSON.stringify(identities)],
function (row) {
names[row.author] = row.name;
});
return {
identities: identities,
identity: await getActiveIdentity(
user,
packageOwner,
packageName
),
names: names,
};
}
export {
gGlobalSettings as globalSettings,
setGlobalSettings,
@ -1565,4 +1597,5 @@ export {
invoke,
getSessionProcessBlob,
getActiveIdentity,
getIdentityInfo,
};