for BVC: finish submission of confirmations & final give

This commit is contained in:
2024-02-26 19:27:34 -07:00
parent 0b24d7bbd8
commit 2c28913d97
5 changed files with 152 additions and 20 deletions

View File

@@ -22,7 +22,7 @@ export interface AgreeVerifiableCredential {
"@type": string;
// "any" because arbitrary objects can be subject of agreement
// eslint-disable-next-line @typescript-eslint/no-explicit-any
object: Record<any, any>;
object: Record<string, any>;
}
export interface GiverInputInfo {
@@ -46,6 +46,7 @@ export interface ClaimResult {
export interface GenericVerifiableCredential {
"@context": string;
"@type": string;
[key: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any
}
export interface GenericServerRecord extends GenericVerifiableCredential {
@@ -54,7 +55,7 @@ export interface GenericServerRecord extends GenericVerifiableCredential {
issuedAt: string;
issuer: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
claim: Record<any, any>;
claim: Record<string, any>;
claimType?: string;
}
export const BLANK_GENERIC_SERVER_RECORD: GenericServerRecord = {
@@ -330,7 +331,7 @@ export function addLastClaimOrHandleAsIdIfMissing(
}
// return clone of object without any nested *VisibleToDids keys
// similar logic is found in endorser-mobile
// similar code is also contained in endorser-mobile
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function removeVisibleToDids(input: any): any {
if (input instanceof Object) {
@@ -340,7 +341,6 @@ export function removeVisibleToDids(input: any): any {
const result: Record<string, any> = {};
for (const key in input) {
if (!key.endsWith("VisibleToDids")) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
result[key] = removeVisibleToDids(R.clone(input[key]));
}
}
@@ -349,7 +349,6 @@ export function removeVisibleToDids(input: any): any {
// it's an array
return R.map(removeVisibleToDids, input);
}
return false;
} else {
return input;
}
@@ -518,6 +517,28 @@ export async function createAndSubmitOffer(
);
}
// similar logic is found in endorser-mobile
export const createAndSubmitConfirmation = async (
identifier: IIdentifier,
claim: GenericVerifiableCredential,
lastClaimId: string, // used to set the lastClaimId
handleId: string | undefined,
apiServer: string,
axios: Axios,
) => {
const goodClaim = removeSchemaContext(
removeVisibleToDids(
addLastClaimOrHandleAsIdIfMissing(claim, lastClaimId, handleId),
),
);
const confirmationClaim: GenericVerifiableCredential = {
"@context": "https://schema.org",
"@type": "AgreeAction",
object: goodClaim,
};
return createAndSubmitClaim(confirmationClaim, identifier, apiServer, axios);
};
export async function createAndSubmitClaim(
vcClaim: GenericVerifiableCredential,
identity: IIdentifier,
@@ -583,7 +604,7 @@ export async function createAndSubmitClaim(
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const isAccept = (claim: Record<any, any>) => {
export const isAccept = (claim: Record<string, any>) => {
return (
claim &&
claim["@context"] === SCHEMA_ORG_CONTEXT &&
@@ -592,7 +613,7 @@ export const isAccept = (claim: Record<any, any>) => {
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const isOffer = (claim: Record<any, any>) => {
export const isOffer = (claim: Record<string, any>) => {
return (
claim &&
claim["@context"] === SCHEMA_ORG_CONTEXT &&
@@ -622,7 +643,7 @@ export const capitalizeAndInsertSpacesBeforeCaps = (text: string) => {
similar code is also contained in endorser-mobile
**/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const claimSummary = (claim: Record<any, any>) => {
const claimSummary = (claim: Record<string, any>) => {
if (!claim) {
// to differentiate from "something" above
return "something";
@@ -630,7 +651,7 @@ const claimSummary = (claim: Record<any, any>) => {
if (claim.claim) {
// probably a Verified Credential
// eslint-disable-next-line @typescript-eslint/no-explicit-any
claim = claim.claim as Record<any, any>;
claim = claim.claim as Record<string, any>;
}
if (Array.isArray(claim)) {
if (claim.length === 1) {