Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions packages/runtime/src/dataViews/DataViewExpander.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ import {
import { FileDVO, IdentityDVO, MessageDVO, MessageStatus, RecipientDVO, RelationshipDVO, RelationshipDirection, RelationshipTemplateDVO } from "./transport";

export class DataViewExpander {
private readonly credentialOfferCache = new Map<string, Promise<any>>();
Comment thread
erbenjak marked this conversation as resolved.
Outdated
Comment thread
erbenjak marked this conversation as resolved.
Outdated
public constructor(
@Inject private readonly transport: TransportServices,
@Inject private readonly consumption: ConsumptionServices,
Expand Down Expand Up @@ -641,13 +642,21 @@ export class DataViewExpander {
case "ShareCredentialOfferRequestItem":
const shareCredentialOfferRequestItem = requestItem as ShareCredentialOfferRequestItemJSON;

const credentialResponses = await (async () => {
try {
return await this.consumptionController.openId4Vc.requestAllCredentialsFromCredentialOfferUrl(shareCredentialOfferRequestItem.credentialOfferUrl);
} catch {
return;
}
})();
// Use cache to avoid duplication of requests for the same URL
let credentialResponsesPromise = this.credentialOfferCache.get(shareCredentialOfferRequestItem.credentialOfferUrl);

if (!credentialResponsesPromise) {
credentialResponsesPromise = (async () => {
try {
return await this.consumptionController.openId4Vc.requestAllCredentialsFromCredentialOfferUrl(shareCredentialOfferRequestItem.credentialOfferUrl);
} catch {
return undefined;
}
})();

this.credentialOfferCache.set(shareCredentialOfferRequestItem.credentialOfferUrl, credentialResponsesPromise);
Comment thread
erbenjak marked this conversation as resolved.
}
const credentialResponses = await credentialResponsesPromise;

return {
...shareCredentialOfferRequestItem,
Expand Down
Loading