mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
* wagmi + ethers + web3modal setup * refactor wallet components * fallback providers, more config * kick out useWeb3 * remove all useWeb3 imports * more web3.js usage removal * isAddress utils replacement * restore add token / add network * less accountId changes * web3 legacy tinkering, utils/web3 → utils/wallet * legacy web3 object for ocean.js * graph sync fix, remove custom network switching code * package updates, merge fixes * downgrade to ethers v5 * fix project id * switch to ConnectKit * connectkit theming * add existing chains to wagmi * rewrite getPaymentCollector() * kick out getPaymentCollector completely, use wagmi hooks instead * Revert "kick out getPaymentCollector completely, use wagmi hooks instead" This reverts commit 54c7d1ef1a2dec0b1575a685125ba78336b30f59. * switch getPaymentCollector * calcBaseInGivenDatatokensOut reorg * wip integrate ocean lib 3.0.0 * update orbis components to use wagmi instead of web hooks * more oceanjs integration updates * more refactors * fix build * update ocean lib * fix publish * fix order fixed rate * remove logs * debug and stop infinite cycle orbis connect * fix orbis dm connection * mock use network and fix some more tests * mock wagmi switch network * mock wagmi useProvider createClient and connectKit getDefaultClient * fix jest tests * try storybook fix * cleanups and bump ocean lib * fix order * bump lib to next.5 and add more modal style * bump ocean.js lib to 3.0.0 --------- Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
68 lines
2.0 KiB
TypeScript
68 lines
2.0 KiB
TypeScript
import { isCID } from '@utils/ipfs'
|
|
import isUrl from 'is-url-superb'
|
|
import * as Yup from 'yup'
|
|
import { ethers } from 'ethers'
|
|
import { isGoogleUrl } from './url/index'
|
|
|
|
export function testLinks(isEdit?: boolean) {
|
|
return Yup.string().test((value, context) => {
|
|
const { type } = context.parent
|
|
let validField
|
|
let errorMessage
|
|
|
|
switch (type) {
|
|
// we allow submit if the type input is hidden as will be ignore
|
|
case 'hidden':
|
|
validField = true
|
|
break
|
|
case 'url':
|
|
case 'graphql':
|
|
validField = isUrl(value?.toString() || '')
|
|
// if we're in publish, the field must be valid
|
|
if (!validField) {
|
|
validField = false
|
|
errorMessage = 'Must be a valid url.'
|
|
}
|
|
// we allow submit on empty sample field
|
|
if (
|
|
!value?.toString() &&
|
|
(context.path === 'links[0].url' ||
|
|
context.path === 'services[0].links[0].url')
|
|
) {
|
|
validField = true
|
|
}
|
|
// if the url has google drive, we need to block the user from submit
|
|
if (isGoogleUrl(value?.toString())) {
|
|
validField = false
|
|
errorMessage =
|
|
'Google Drive is not a supported hosting service. Please use an alternative.'
|
|
}
|
|
break
|
|
case 'ipfs':
|
|
validField = isCID(value?.toString())
|
|
errorMessage = !value?.toString() ? 'CID required.' : 'CID not valid.'
|
|
break
|
|
case 'arweave':
|
|
validField = value && !value?.toString().includes('http')
|
|
errorMessage = !value?.toString()
|
|
? 'Transaction ID required.'
|
|
: 'Transaction ID not valid.'
|
|
break
|
|
case 'smartcontract':
|
|
validField = ethers.utils.isAddress(value?.toString())
|
|
errorMessage = !value?.toString()
|
|
? 'Address required.'
|
|
: 'Address not valid.'
|
|
break
|
|
}
|
|
|
|
if (!validField) {
|
|
return context.createError({
|
|
message: errorMessage
|
|
})
|
|
}
|
|
|
|
return true
|
|
})
|
|
}
|