1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-11-14 17:24:51 +01:00

price optimizations and bug fixes (#274)

* price optimizations and bug fixes

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* travis fix

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* remove console.log

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* rephrasing

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* bump react hooks, show price while checking if consumable

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* remove console.log

* fix travis
This commit is contained in:
mihaisc 2020-11-26 17:02:42 +02:00 committed by GitHub
parent a7a29a6c63
commit 35d9b6faec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 69 additions and 26 deletions

45
package-lock.json generated
View File

@ -3550,9 +3550,9 @@
"integrity": "sha512-p0oOHXr60hXZuLNsQ/PsOQtCfia79thm7MjPxTrnnBvD+csJoHzARYMB0IFj/KTw6U5vLXODgjJAn8x6QksLwg==" "integrity": "sha512-p0oOHXr60hXZuLNsQ/PsOQtCfia79thm7MjPxTrnnBvD+csJoHzARYMB0IFj/KTw6U5vLXODgjJAn8x6QksLwg=="
}, },
"@oceanprotocol/lib": { "@oceanprotocol/lib": {
"version": "0.9.17", "version": "0.9.18",
"resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-0.9.17.tgz", "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-0.9.18.tgz",
"integrity": "sha512-im/e3zD1d8C8rDi0yidRhb1DU77Ka+XrweWYKMNQ8W86X1ODGf8CzdxMbwM3nIcYeTbNT+PcbBraRLQxwZOe3A==", "integrity": "sha512-RsP4CjAnauI2kDH0923LOO3NhdKNB1y8WwpAviVwIwz9sYqsIIcac6MKXIm5oDeLNhmCIhJXbwvQehf17wRL5Q==",
"requires": { "requires": {
"@ethereum-navigator/navigator": "^0.5.0", "@ethereum-navigator/navigator": "^0.5.0",
"@oceanprotocol/contracts": "^0.5.7", "@oceanprotocol/contracts": "^0.5.7",
@ -3572,15 +3572,34 @@
"integrity": "sha512-MMyy81FvnRGwl2cQ4+cucq/YWjUTGzStHyAUVM6P2pFA8zMc3jouuWN2WSAjmvhxeKZU7jvJRwZCoi+miEYKjw==" "integrity": "sha512-MMyy81FvnRGwl2cQ4+cucq/YWjUTGzStHyAUVM6P2pFA8zMc3jouuWN2WSAjmvhxeKZU7jvJRwZCoi+miEYKjw=="
}, },
"@oceanprotocol/react": { "@oceanprotocol/react": {
"version": "0.3.20", "version": "0.3.21",
"resolved": "https://registry.npmjs.org/@oceanprotocol/react/-/react-0.3.20.tgz", "resolved": "https://registry.npmjs.org/@oceanprotocol/react/-/react-0.3.21.tgz",
"integrity": "sha512-98mRBP0Ij20v6wYsbb/B7GM1H3HclUyrlWJKybRB/K+Hbk3AJW0+RQxJ+C4WkrkR4C5KquNjGccvgr5sZyQFoQ==", "integrity": "sha512-3fY3oYbJ1I2bTZzWqaHbQvVCI9Xdn3Oa0BOeWPA0757wT6gOQzdMcE/zKAFqzI6L/4006kTQF3Ls0UnKVkocUA==",
"requires": { "requires": {
"@oceanprotocol/lib": "^0.9.14", "@oceanprotocol/lib": "^0.9.18",
"axios": "^0.21.0", "axios": "^0.21.0",
"decimal.js": "^10.2.1", "decimal.js": "^10.2.1",
"web3": "^1.3.0", "web3": "^1.3.0",
"web3modal": "^1.9.1" "web3modal": "^1.9.1"
},
"dependencies": {
"@oceanprotocol/lib": {
"version": "0.9.18",
"resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-0.9.18.tgz",
"integrity": "sha512-RsP4CjAnauI2kDH0923LOO3NhdKNB1y8WwpAviVwIwz9sYqsIIcac6MKXIm5oDeLNhmCIhJXbwvQehf17wRL5Q==",
"requires": {
"@ethereum-navigator/navigator": "^0.5.0",
"@oceanprotocol/contracts": "^0.5.7",
"decimal.js": "^10.2.0",
"fs": "0.0.1-security",
"lzma": "^2.3.2",
"node-fetch": "^2.6.1",
"save-file": "^2.3.1",
"uuid": "^8.3.0",
"web3": "^1.3.0",
"web3-eth-contract": "^1.3.0"
}
}
} }
}, },
"@oceanprotocol/typographies": { "@oceanprotocol/typographies": {
@ -8077,9 +8096,9 @@
"dev": true "dev": true
}, },
"babel-plugin-styled-components": { "babel-plugin-styled-components": {
"version": "1.11.1", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.11.1.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz",
"integrity": "sha512-YwrInHyKUk1PU3avIRdiLyCpM++18Rs1NgyMXEAQC33rIXs/vro0A+stf4sT0Gf22Got+xRWB8Cm0tw+qkRzBA==", "integrity": "sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA==",
"requires": { "requires": {
"@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-annotate-as-pure": "^7.0.0",
"@babel/helper-module-imports": "^7.0.0", "@babel/helper-module-imports": "^7.0.0",
@ -34344,9 +34363,9 @@
} }
}, },
"web3modal": { "web3modal": {
"version": "1.9.1", "version": "1.9.2",
"resolved": "https://registry.npmjs.org/web3modal/-/web3modal-1.9.1.tgz", "resolved": "https://registry.npmjs.org/web3modal/-/web3modal-1.9.2.tgz",
"integrity": "sha512-fBybI1+jFAWO492ieyMexyr0MMdquCapeVaHLhclx8GegzIUeWhWa/S19LYMLMW/DDUi2aVTE4JbECX/IHYdQQ==", "integrity": "sha512-wxUpMPwFwjjTnhSSXbWY49Nrn9VAz9RRZpVmfFI2tMny26rsjqdBfYKiRNuMF2Y0Ui9gG4KiUtVkS7DJ2qfo2Q==",
"requires": { "requires": {
"detect-browser": "^5.1.0", "detect-browser": "^5.1.0",
"prop-types": "^15.7.2", "prop-types": "^15.7.2",

View File

@ -24,9 +24,9 @@
"@coingecko/cryptoformat": "^0.4.2", "@coingecko/cryptoformat": "^0.4.2",
"@loadable/component": "^5.14.1", "@loadable/component": "^5.14.1",
"@oceanprotocol/art": "^3.0.0", "@oceanprotocol/art": "^3.0.0",
"@oceanprotocol/lib": "^0.9.17", "@oceanprotocol/lib": "^0.9.18",
"@oceanprotocol/list-datapartners": "^1.0.3", "@oceanprotocol/list-datapartners": "^1.0.3",
"@oceanprotocol/react": "^0.3.20", "@oceanprotocol/react": "^0.3.22",
"@oceanprotocol/typographies": "^0.1.0", "@oceanprotocol/typographies": "^0.1.0",
"@sindresorhus/slugify": "^1.0.0", "@sindresorhus/slugify": "^1.0.0",
"@tippyjs/react": "^4.2.0", "@tippyjs/react": "^4.2.0",

View File

@ -27,7 +27,7 @@ export default function Consume({
const { marketFeeAddress } = useSiteMetadata() const { marketFeeAddress } = useSiteMetadata()
const [hasPreviousOrder, setHasPreviousOrder] = useState(false) const [hasPreviousOrder, setHasPreviousOrder] = useState(false)
const [previousOrderId, setPreviousOrderId] = useState<string>() const [previousOrderId, setPreviousOrderId] = useState<string>()
const { isInPurgatory } = useAsset() const { isInPurgatory, price } = useAsset()
const { const {
dtSymbol, dtSymbol,
buyDT, buyDT,
@ -37,23 +37,37 @@ export default function Consume({
} = usePricing(ddo) } = usePricing(ddo)
const { consumeStepText, consume, consumeError } = useConsume() const { consumeStepText, consume, consumeError } = useConsume()
const [isDisabled, setIsDisabled] = useState(true) const [isDisabled, setIsDisabled] = useState(true)
const [hasDatatoken, setHasDatatoken] = useState(false)
const [isConsumable, setIsConsumable] = useState(true)
const hasDatatoken = Number(dtBalance) >= 1 useEffect(() => {
setIsConsumable(
price.isConsumable !== undefined ? price.isConsumable === 'true' : true
)
}, [price])
useEffect(() => {
setHasDatatoken(Number(dtBalance) >= 1)
}, [dtBalance])
useEffect(() => { useEffect(() => {
setIsDisabled( setIsDisabled(
(!ocean || (!ocean ||
!isBalanceSufficient || !isBalanceSufficient ||
typeof consumeStepText !== 'undefined' || typeof consumeStepText !== 'undefined' ||
pricingIsLoading) && pricingIsLoading ||
!hasPreviousOrder !isConsumable) &&
!hasPreviousOrder &&
!hasDatatoken
) )
}, [ }, [
ocean, ocean,
hasPreviousOrder, hasPreviousOrder,
isBalanceSufficient, isBalanceSufficient,
consumeStepText, consumeStepText,
pricingIsLoading pricingIsLoading,
isConsumable,
hasDatatoken
]) ])
useEffect(() => { useEffect(() => {
@ -118,7 +132,13 @@ export default function Consume({
<File file={file} /> <File file={file} />
</div> </div>
<div className={styles.pricewrapper}> <div className={styles.pricewrapper}>
<Price ddo={ddo} conversion /> {isConsumable ? (
<Price ddo={ddo} conversion />
) : (
<div className={styles.help}>
There is not enough liquidity in the pool to buy this data set.
</div>
)}
{!isInPurgatory && <PurchaseButton />} {!isInPurgatory && <PurchaseButton />}
</div> </div>
</div> </div>

View File

@ -1,5 +1,5 @@
import { MetadataMarket } from '../../../@types/MetaData' import { MetadataMarket } from '../../../@types/MetaData'
import React, { ReactElement } from 'react' import React, { ReactElement, useEffect, useState } from 'react'
import { Link } from 'gatsby' import { Link } from 'gatsby'
import Markdown from '../../atoms/Markdown' import Markdown from '../../atoms/Markdown'
import MetaFull from './MetaFull' import MetaFull from './MetaFull'
@ -13,6 +13,7 @@ import { useMetadata, useOcean, usePricing } from '@oceanprotocol/react'
import EtherscanLink from '../../atoms/EtherscanLink' import EtherscanLink from '../../atoms/EtherscanLink'
import Bookmark from './Bookmark' import Bookmark from './Bookmark'
import Byline from './Byline' import Byline from './Byline'
import { useAsset } from '../../../providers/Asset'
export interface AssetContentProps { export interface AssetContentProps {
metadata: MetadataMarket metadata: MetadataMarket
@ -28,9 +29,12 @@ export default function AssetContent({
const { accountId, networkId } = useOcean() const { accountId, networkId } = useOcean()
const { owner } = useMetadata(ddo) const { owner } = useMetadata(ddo)
const { dtSymbol, dtName } = usePricing(ddo) const { dtSymbol, dtName } = usePricing(ddo)
const isOwner = accountId === owner const [showPricing, setShowPricing] = useState(false)
const hasNoPrice = ddo.price.datatoken === 0 && ddo.price.value === 0 const { price } = useAsset()
const showPricing = isOwner && hasNoPrice
useEffect(() => {
setShowPricing(accountId === owner && price.isConsumable === '')
}, [accountId, owner, price])
return ( return (
<article className={styles.grid}> <article className={styles.grid}>

View File

@ -152,7 +152,7 @@ function AssetProvider({
setOwner(ddo.publicKey[0].owner) setOwner(ddo.publicKey[0].owner)
await setPurgatory(ddo.id) await setPurgatory(ddo.id)
refreshPrice() await refreshPrice()
}, },
[refreshPrice, setPurgatory] [refreshPrice, setPurgatory]
) )