package updates, linting fixes

This commit is contained in:
Matthias Kretschmann 2020-09-15 21:57:44 +02:00
parent 75b1adb699
commit e22212bd01
Signed by: m
GPG Key ID: 606EEEF3C479A91F
7 changed files with 1620 additions and 558 deletions

View File

@ -14,6 +14,10 @@
"prettier/@typescript-eslint"
],
"plugins": ["@typescript-eslint", "prettier"],
"rules": {
"no-use-before-define": "off",
"@typescript-eslint/no-use-before-define": "error"
},
"env": { "es6": true, "node": true },
"settings": {
"react": {

1987
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -28,15 +28,15 @@
"@oceanprotocol/lib": "^0.2.4",
"axios": "^0.20.0",
"decimal.js": "^10.2.0",
"web3": "^1.2.11",
"web3": "^1.3.0",
"web3modal": "^1.9.0"
},
"devDependencies": {
"@release-it/bumper": "^2.0.0",
"@types/node-fetch": "^2.5.7",
"@types/react": "^16.9.49",
"@typescript-eslint/eslint-plugin": "^4.0.1",
"@typescript-eslint/parser": "^4.0.1",
"@typescript-eslint/eslint-plugin": "^4.1.1",
"@typescript-eslint/parser": "^4.1.1",
"auto-changelog": "^2.2.0",
"eslint": "^7.8.1",
"eslint-config-oceanprotocol": "^1.5.0",
@ -45,7 +45,7 @@
"eslint-plugin-react": "^7.20.5",
"microbundle": "^0.12.3",
"prettier": "^2.1.1",
"release-it": "^14.0.2",
"release-it": "^14.0.3",
"serialize-javascript": "^5.0.1",
"typescript": "^4.0.2"
},

View File

@ -1,4 +1,3 @@
import Web3 from 'web3'
import { HttpProvider } from 'web3-core'
interface EthereumProvider extends HttpProvider {

View File

@ -37,6 +37,49 @@ function usePublish(): UsePublish {
index && setPublishStepText(publishFeedback[index])
}
async function mint(tokenAddress: string, tokensToMint: string) {
Logger.log('mint function', tokenAddress, accountId)
await ocean.datatokens.mint(tokenAddress, accountId, tokensToMint)
}
async function createPricing(
priceOptions: PriceOptions,
dataTokenAddress: string,
mintedTokens: string
): Promise<void | null> {
switch (priceOptions.type) {
case 'dynamic': {
const pool = await ocean.pool.createDTPool(
accountId,
dataTokenAddress,
priceOptions.tokensToMint.toString(),
priceOptions.weightOnDataToken,
priceOptions.liquidityProviderFee
)
break
}
case 'fixed': {
if (!config.fixedRateExchangeAddress) {
Logger.error(`'fixedRateExchangeAddress' not set in ccnfig.`)
return null
}
const fixedPriceExchange = await ocean.fixedRateExchange.create(
dataTokenAddress,
priceOptions.price.toString(),
accountId
)
await ocean.datatokens.approve(
dataTokenAddress,
config.fixedRateExchangeAddress,
mintedTokens,
accountId
)
break
}
}
}
/**
* Publish an asset.It also creates the datatoken, mints tokens and gives the market allowance
* @param {Metadata} asset The metadata of the asset.
@ -154,49 +197,6 @@ function usePublish(): UsePublish {
}
}
async function createPricing(
priceOptions: PriceOptions,
dataTokenAddress: string,
mintedTokens: string
): Promise<void | null> {
switch (priceOptions.type) {
case 'dynamic': {
const pool = await ocean.pool.createDTPool(
accountId,
dataTokenAddress,
priceOptions.tokensToMint.toString(),
priceOptions.weightOnDataToken,
priceOptions.liquidityProviderFee
)
break
}
case 'fixed': {
if (!config.fixedRateExchangeAddress) {
Logger.error(`'fixedRateExchangeAddress' not set in ccnfig.`)
return null
}
const fixedPriceExchange = await ocean.fixedRateExchange.create(
dataTokenAddress,
priceOptions.price.toString(),
accountId
)
await ocean.datatokens.approve(
dataTokenAddress,
config.fixedRateExchangeAddress,
mintedTokens,
accountId
)
break
}
}
}
async function mint(tokenAddress: string, tokensToMint: string) {
Logger.log('mint function', tokenAddress, accountId)
await ocean.datatokens.mint(tokenAddress, accountId, tokensToMint)
}
return {
publish,
mint,

View File

@ -75,17 +75,6 @@ function OceanProvider({
Logger.log('Web3Modal instance created.', web3ModalInstance)
}
// On mount setup Web3Modal instance
useEffect(() => {
init()
}, [])
// Connect automatically to cached provider if present
useEffect(() => {
if (!web3Modal) return
web3Modal.cachedProvider && connect()
}, [web3Modal])
async function connect(newConfig?: Config) {
try {
Logger.log('Connecting ...', newConfig)
@ -125,6 +114,18 @@ function OceanProvider({
Logger.error(error)
}
}
// On mount setup Web3Modal instance
useEffect(() => {
init()
}, [])
// Connect automatically to cached provider if present
useEffect(() => {
if (!web3Modal) return
web3Modal.cachedProvider && connect()
}, [web3Modal])
async function refreshBalance() {
const balance = account && (await getBalance(account))
setBalance(balance)

View File

@ -47,40 +47,6 @@ export async function getCheapestPool(
}
}
export async function getBestDataTokenPrice(
ocean: Ocean,
dataTokenAddress: string,
accountId: string
): Promise<BestPrice | undefined> {
const cheapestPool = await getCheapestPool(ocean, accountId, dataTokenAddress)
const cheapestExchange = await getCheapestExchange(ocean, dataTokenAddress)
Decimal.set({ precision: 5 })
const cheapestPoolPrice = new Decimal(
cheapestPool && cheapestPool.price !== ''
? cheapestPool.price
: 999999999999
)
const cheapestExchangePrice = new Decimal(
cheapestExchange && cheapestExchange?.price !== ''
? cheapestExchange.price
: 999999999999
)
if (cheapestPoolPrice < cheapestExchangePrice) {
return {
type: 'pool',
address: cheapestPool?.address,
value: cheapestPool?.price
} as BestPrice
} else {
return {
type: 'exchange',
address: cheapestExchange?.address,
value: cheapestExchange?.price
} as BestPrice
}
}
export async function getCheapestExchange(
ocean: Ocean,
dataTokenAddress: string
@ -118,6 +84,41 @@ export async function getCheapestExchange(
}
}
export async function getBestDataTokenPrice(
ocean: Ocean,
dataTokenAddress: string,
accountId: string
): Promise<BestPrice | undefined> {
const cheapestPool = await getCheapestPool(ocean, accountId, dataTokenAddress)
const cheapestExchange = await getCheapestExchange(ocean, dataTokenAddress)
Decimal.set({ precision: 5 })
const cheapestPoolPrice = new Decimal(
cheapestPool && cheapestPool.price !== ''
? cheapestPool.price
: 999999999999
)
const cheapestExchangePrice = new Decimal(
cheapestExchange && cheapestExchange?.price !== ''
? cheapestExchange.price
: 999999999999
)
if (cheapestPoolPrice < cheapestExchangePrice) {
return {
type: 'pool',
address: cheapestPool?.address,
value: cheapestPool?.price
} as BestPrice
} else {
return {
type: 'exchange',
address: cheapestExchange?.address,
value: cheapestExchange?.price
} as BestPrice
}
}
export async function checkAndBuyDT(
ocean: Ocean,
dataTokenAddress: string,