1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-06-29 00:57:50 +02:00

Merge pull request #517 from oceanprotocol/issue510-match-providers-algo-dataset

Match dataset providers with private algorithms providers
This commit is contained in:
Bogdan Fazakas 2021-07-02 13:22:29 +03:00 committed by GitHub
commit c6c502188a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 4 deletions

View File

@ -158,7 +158,9 @@ export default function Compute({
source.token
)
setDdoAlgorithmList(gueryResults.results)
const datasetComputeService = ddo.findServiceByType('compute')
algorithmSelectionList = await transformDDOToAssetSelection(
datasetComputeService?.serviceEndpoint,
gueryResults.results,
config.metadataCacheUri,
[]
@ -385,7 +387,10 @@ export default function Compute({
text="This algorithm has been set to private by the publisher and can't be downloaded. You can run it against any allowed data sets though!"
state="info"
/>
<AlgorithmDatasetsListForCompute algorithmDid={ddo.id} />
<AlgorithmDatasetsListForCompute
algorithmDid={ddo.id}
dataset={ddo}
/>
</>
) : (
<Formik

View File

@ -176,7 +176,7 @@ export default function Consume({
</div>
</div>
{type === 'algorithm' && (
<AlgorithmDatasetsListForCompute algorithmDid={ddo.id} />
<AlgorithmDatasetsListForCompute algorithmDid={ddo.id} dataset={ddo} />
)}
<footer className={styles.feedback}>
<Web3Feedback isBalanceSufficient={isBalanceSufficient} />

View File

@ -54,7 +54,9 @@ export default function FormEditComputeDataset({
config.metadataCacheUri,
source.token
)
const datasetComputeService = ddo.findServiceByType('compute')
const algorithmSelectionList = await transformDDOToAssetSelection(
datasetComputeService?.serviceEndpoint,
querryResult.results,
config.metadataCacheUri,
publisherTrustedAlgorithms

View File

@ -5,11 +5,14 @@ import { AssetSelectionAsset } from '../../molecules/FormFields/AssetSelection'
import AssetComputeList from '../../molecules/AssetComputeList'
import { useOcean } from '../../../providers/Ocean'
import { useAsset } from '../../../providers/Asset'
import { DDO } from '@oceanprotocol/lib'
export default function AlgorithmDatasetsListForCompute({
algorithmDid
algorithmDid,
dataset
}: {
algorithmDid: string
dataset: DDO
}): ReactElement {
const { config } = useOcean()
const { type } = useAsset()
@ -18,8 +21,10 @@ export default function AlgorithmDatasetsListForCompute({
useEffect(() => {
async function getDatasetsAllowedForCompute() {
const datasetComputeService = dataset.findServiceByType('compute')
const datasets = await getAlgorithmDatasetsForCompute(
algorithmDid,
datasetComputeService?.serviceEndpoint,
config.metadataCacheUri
)
setDatasetsForCompute(datasets)

View File

@ -118,6 +118,7 @@ export async function getAssetsNames(
}
export async function transformDDOToAssetSelection(
datasetProviderEndpoint: string,
ddoList: DDO[],
metadataCacheUri: string,
selectedAlgorithms?: PublisherTrustedAlgorithm[]
@ -126,14 +127,22 @@ export async function transformDDOToAssetSelection(
const didList: string[] = []
const priceList: PriceList = await getAssetsPriceList(ddoList)
const symbolList: any = {}
const didProviderEndpointMap: any = {}
for (const ddo of ddoList) {
didList.push(ddo.id)
symbolList[ddo.id] = ddo.dataTokenInfo.symbol
const algoComputeService = ddo.findServiceByType('compute')
algoComputeService?.serviceEndpoint &&
(didProviderEndpointMap[ddo.id] = algoComputeService?.serviceEndpoint)
}
const ddoNames = await getAssetsNames(didList, metadataCacheUri, source.token)
const algorithmList: AssetSelectionAsset[] = []
didList?.forEach((did: string) => {
if (priceList[did]) {
if (
priceList[did] &&
(!didProviderEndpointMap[did] ||
didProviderEndpointMap[did] === datasetProviderEndpoint)
) {
let selected = false
selectedAlgorithms?.forEach((algorithm: PublisherTrustedAlgorithm) => {
if (algorithm.did === did) {
@ -162,6 +171,7 @@ export async function transformDDOToAssetSelection(
export async function getAlgorithmDatasetsForCompute(
algorithmId: string,
datasetProviderUri: string,
metadataCacheUri: string
): Promise<AssetSelectionAsset[]> {
const source = axios.CancelToken.source()
@ -183,6 +193,7 @@ export async function getAlgorithmDatasetsForCompute(
return []
}
const datasets = await transformDDOToAssetSelection(
datasetProviderUri,
computeDatasetsForCurrentAlgorithm,
metadataCacheUri,
[]