in src/resourceExplorers/BlockchainDataManagerResourceExplorer.ts [599:651]
private async getSelectedTransactionNode(
azureClient: AzureBlockchainServiceClient,
bdmItems: IAzureBlockchainDataManagerDto[],
selectedMemberName: string,
location: string,
): Promise<TransactionNodeItem> {
Telemetry.sendEvent('BlockchainDataManagerResourceExplorer.getSelectedTransactionNode.selectTransactionNode');
const { bdmResource, transactionNodeResource } = azureClient;
let transactionNodeItems: TransactionNodeItem[] = [];
let filteredTransactionNode: TransactionNodeItem[] = [];
await window.withProgress({
location: ProgressLocation.Window,
title: `Getting transaction nodes for member - ${selectedMemberName}`,
}, async () => {
const bdmInputList: IAzureBlockchainDataManagerInputDto[] = [];
await Promise.all(bdmItems.map((bdm) => bdmResource.getBlockchainDataManagerInputList(bdm.name)))
.then((result) => {
result.forEach((inputs) => {
if (inputs.length) {
bdmInputList.push(...inputs);
}
});
});
const transactionNodes = await transactionNodeResource.getTransactionNodeList(selectedMemberName);
const defaultTransactionNode = await transactionNodeResource
.getTransactionNode(selectedMemberName, Constants.defaultInputNameInBdm);
defaultTransactionNode.name = selectedMemberName;
transactionNodeItems = [defaultTransactionNode, ...transactionNodes]
.map((tn) => new TransactionNodeItem(tn.name, tn.id, tn.properties.provisioningState));
filteredTransactionNode = transactionNodeItems
.filter((tn) => tn.provisioningState === Constants.provisioningState.succeeded &&
!bdmInputList.some((input) => input.properties.dataSource.resourceId === tn.url));
});
const selectedTransactionNode = await showQuickPick(
[ { label: Constants.uiCommandStrings.createTransactionNode}, ...filteredTransactionNode ],
{ placeHolder: Constants.placeholders.selectTransactionNode, ignoreFocusOut: true });
if (selectedTransactionNode instanceof TransactionNodeItem) {
return selectedTransactionNode;
}
await this.createdTransactionNode(selectedMemberName, location, azureClient, transactionNodeItems);
Telemetry.sendEvent('BlockchainDataManagerResourceExplorer.getSelectedTransactionNode.cancellationCreatingTransactionNode');
throw new CancellationEvent();
}