mirror of
https://github.com/oceanprotocol/react.git
synced 2025-02-14 21:10:38 +01:00
useMetadata fix
This commit is contained in:
parent
1a7b390a2f
commit
4d932e7a58
@ -1,7 +1,7 @@
|
|||||||
import { useState, useEffect } from 'react'
|
import { useState, useEffect } from 'react'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { DID, DDO, MetaData, Curation } from '@oceanprotocol/squid'
|
import { DID, DDO, MetaData, Curation } from '@oceanprotocol/squid'
|
||||||
import { useOcean } from '../../providers'
|
import { useOcean, OceanConnectionStatus } from '../../providers'
|
||||||
|
|
||||||
interface UseMetadata {
|
interface UseMetadata {
|
||||||
ddo: DDO
|
ddo: DDO
|
||||||
@ -15,18 +15,21 @@ interface UseMetadata {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function useMetadata(did?: DID | string): UseMetadata {
|
function useMetadata(did?: DID | string): UseMetadata {
|
||||||
const { aquarius, config } = useOcean()
|
const { aquarius, config, status } = useOcean()
|
||||||
const [ddo, setDDO] = useState<DDO | undefined>()
|
const [ddo, setDDO] = useState<DDO | undefined>()
|
||||||
const [metadata, setMetadata] = useState<MetaData | undefined>()
|
const [metadata, setMetadata] = useState<MetaData | undefined>()
|
||||||
const [title, setTitle] = useState<string | undefined>()
|
const [title, setTitle] = useState<string | undefined>()
|
||||||
|
|
||||||
async function getDDO(did: DID | string): Promise<DDO> {
|
async function getDDO(did: DID | string): Promise<DDO> {
|
||||||
|
if(status!=OceanConnectionStatus.CONNECTED) return
|
||||||
|
|
||||||
const ddo = await aquarius.retrieveDDO(did)
|
const ddo = await aquarius.retrieveDDO(did)
|
||||||
return ddo
|
return ddo
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getMetadata(did: DID | string): Promise<MetaData> {
|
async function getMetadata(did: DID | string): Promise<MetaData> {
|
||||||
const ddo = await getDDO(did)
|
const ddo = await getDDO(did)
|
||||||
|
if(!ddo) return
|
||||||
const metadata = ddo.findServiceByType('metadata')
|
const metadata = ddo.findServiceByType('metadata')
|
||||||
return metadata.attributes
|
return metadata.attributes
|
||||||
}
|
}
|
||||||
@ -38,6 +41,7 @@ function useMetadata(did?: DID | string): UseMetadata {
|
|||||||
|
|
||||||
async function getTitle(did: DID | string): Promise<string> {
|
async function getTitle(did: DID | string): Promise<string> {
|
||||||
const metadata = await getMetadata(did)
|
const metadata = await getMetadata(did)
|
||||||
|
console.log(metadata)
|
||||||
return metadata.main.name
|
return metadata.main.name
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,6 +52,7 @@ function useMetadata(did?: DID | string): UseMetadata {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function init(): Promise<void> {
|
async function init(): Promise<void> {
|
||||||
|
if(!did) return
|
||||||
const ddo = await getDDO(did)
|
const ddo = await getDDO(did)
|
||||||
setDDO(ddo)
|
setDDO(ddo)
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import { Ocean, Config, Account, Aquarius, Logger } from '@oceanprotocol/squid'
|
|||||||
import Web3 from 'web3'
|
import Web3 from 'web3'
|
||||||
import Balance from '@oceanprotocol/squid/dist/node/models/Balance'
|
import Balance from '@oceanprotocol/squid/dist/node/models/Balance'
|
||||||
import { connectOcean } from './utils'
|
import { connectOcean } from './utils'
|
||||||
import { useWeb3 } from '../Web3Provider'
|
import { useWeb3, InjectedProviderStatus } from '../Web3Provider'
|
||||||
|
|
||||||
enum OceanConnectionStatus {
|
enum OceanConnectionStatus {
|
||||||
OCEAN_CONNECTION_ERROR = -1,
|
OCEAN_CONNECTION_ERROR = -1,
|
||||||
@ -40,7 +40,7 @@ function OceanProvider({
|
|||||||
const [status, setStatus] = useState<OceanConnectionStatus>(
|
const [status, setStatus] = useState<OceanConnectionStatus>(
|
||||||
OceanConnectionStatus.NOT_CONNECTED
|
OceanConnectionStatus.NOT_CONNECTED
|
||||||
)
|
)
|
||||||
const { web3 } = useWeb3()
|
const { web3,ethProviderStatus } = useWeb3()
|
||||||
|
|
||||||
// -------------------------------------------------------------
|
// -------------------------------------------------------------
|
||||||
// 1. On mount, connect to Aquarius instance right away
|
// 1. On mount, connect to Aquarius instance right away
|
||||||
@ -54,8 +54,8 @@ function OceanProvider({
|
|||||||
// 2. Once `web3` becomes available, connect to the whole network
|
// 2. Once `web3` becomes available, connect to the whole network
|
||||||
// -------------------------------------------------------------
|
// -------------------------------------------------------------
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!web3) return
|
if (!web3 || ethProviderStatus!= InjectedProviderStatus.CONNECTED ) return
|
||||||
|
console.log(ethProviderStatus)
|
||||||
async function init(): Promise<void> {
|
async function init(): Promise<void> {
|
||||||
const { ocean, account, accountId, balance } = await connectOcean(
|
const { ocean, account, accountId, balance } = await connectOcean(
|
||||||
web3,
|
web3,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user