add first stab at showing how the contact is visible in my network
This commit is contained in:
@@ -95,6 +95,61 @@ export const canFulfillOffer = (veriClaim: GenericServerRecord) => {
|
||||
return !!(veriClaim.claimType === "Offer" && offerGiverDid(veriClaim));
|
||||
};
|
||||
|
||||
// return object with paths and arrays of DIDs for any keys ending in "VisibleToDid"
|
||||
export function findAllVisibleToDids(
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
input: any,
|
||||
): Record<string, Array<string>> {
|
||||
if (Array.isArray(input)) {
|
||||
const result: Record<string, Array<string>> = {};
|
||||
for (let i = 0; i < input.length; i++) {
|
||||
const inside = findAllVisibleToDids(input[i]);
|
||||
for (const key in inside) {
|
||||
result["[" + i + "]" + key] = inside[key];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
} else if (input instanceof Object) {
|
||||
// regular map (non-array) object
|
||||
const result: Record<string, Array<string>> = {};
|
||||
for (const key in input) {
|
||||
if (key.endsWith("VisibleToDids")) {
|
||||
const newKey = key.slice(0, -"VisibleToDids".length);
|
||||
result["." + newKey] = input[key];
|
||||
} else {
|
||||
const inside = findAllVisibleToDids(input[key]);
|
||||
for (const insideKey in inside) {
|
||||
result["." + key + insideKey] = inside[insideKey];
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test findAllVisibleToDids
|
||||
*
|
||||
|
||||
pkgx +deno.land sh
|
||||
|
||||
import * as R from 'ramda';
|
||||
|
||||
console.log(R.equals(findAllVisibleToDids(null), {}));
|
||||
console.log(R.equals(findAllVisibleToDids(9), {}));
|
||||
console.log(R.equals(findAllVisibleToDids([]), {}));
|
||||
console.log(R.equals(findAllVisibleToDids({}), {}));
|
||||
console.log(R.equals(findAllVisibleToDids({ issuer: "abc" }), {}));
|
||||
console.log(R.equals(findAllVisibleToDids({ issuerVisibleToDids: ["abc"] }), { ".issuer": ["abc"] }));
|
||||
console.log(R.equals(findAllVisibleToDids([{ issuerVisibleToDids: ["abc"] }]), { "[0].issuer": ["abc"] }));
|
||||
console.log(R.equals(findAllVisibleToDids(["xyz", { fluff: { issuerVisibleToDids: ["abc"] } }]), { "[1].fluff.issuer": ["abc"] }));
|
||||
console.log(R.equals(findAllVisibleToDids(["xyz", { fluff: { issuerVisibleToDids: ["abc"] }, stuff: [ { did: "HIDDEN", agentDidVisibleToDids: ["def", "ghi"] } ] }]), { "[1].fluff.issuer": ["abc"], "[1].stuff[0].agentDid": ["def", "ghi"] }));
|
||||
|
||||
*
|
||||
**/
|
||||
|
||||
/**
|
||||
* Generates a new identity, saves it to the database, and sets it as the active identity.
|
||||
* @return {Promise<string>} with the DID of the new identity
|
||||
|
||||
Reference in New Issue
Block a user