diff --git a/package.json b/package.json index 3d422d4..424690c 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "3.0.0", "license": "MIT", "scripts": { - "start": "NODE_OPTIONS=--openssl-legacy-provider react-scripts start", + "start": "react-scripts start", "build": "yarn build:theme && react-scripts --max_old_space_size=4096 build", "build:theme": "lessc --js ./src/bootstrap/theme.less ./src/bootstrap/theme.css", "release": "standard-version", diff --git a/src/components/light-search-bar.js b/src/components/light-search-bar.js index aad68f2..7852e88 100644 --- a/src/components/light-search-bar.js +++ b/src/components/light-search-bar.js @@ -53,7 +53,7 @@ const OptionItem = ({ item }) => { // there are a few ethers queries coming from here. // they might have to be changed to subgraph queries // TODO read and figure it out - const { itemID, metadata: itemMetadata, registry } = item + const { itemID, props, registry } = item const { id: tcrAddress } = registry const { gtcrView, @@ -111,14 +111,14 @@ const OptionItem = ({ item }) => { <> ) : ( - itemMetadata?.props + props .filter(col => col.isIdentifier) .map((column, j) => ( @@ -139,22 +139,18 @@ const OptionItem = ({ item }) => { ) } -OptionItem.propTypes = { - item: PropTypes.shape({ - itemID: PropTypes.string, - metadata: PropTypes.shape({ - props: PropTypes.arrayOf( - PropTypes.shape({ - type: PropTypes.oneOf(Object.values(ItemTypes)), - value: PropTypes.string.isRequired - }) - ) - }), - registry: PropTypes.shape({ - id: PropTypes.string +OptionItem.propTypes = PropTypes.shape({ + itemID: PropTypes.string, + props: PropTypes.arrayOf( + PropTypes.shape({ + type: PropTypes.oneOf(Object.values(ItemTypes)), + value: PropTypes.string.isRequired }) - }).isRequired -} + ), + registry: PropTypes.shape({ + id: PropTypes.string + }) +}).isRequired const LightSearchBar = () => { const [value, setValue] = useState() @@ -166,15 +162,18 @@ const LightSearchBar = () => { const [debouncedCallback] = useDebouncedCallback(input => { if (!input || input.length === 0) setData([]) - else + else { + const where = { + keywords: { _ilike: `%${input.trim()}%` }, + registry_id: { _eq: tcrAddress.toLowerCase() } + } makeItemSearchQuery({ variables: { - text: `${tcrAddress.toLowerCase()} & ${input - .trim() - .replace(' ', ' & ')}:*`, + where: where, first: MAX_ITEM_COUNT } }) + } setWriting(false) }, 700) @@ -184,7 +183,7 @@ const LightSearchBar = () => { }, [itemSearchQuery]) const options = data.map(d => { - const itemLabels = d.item?.metadata?.props.filter(prop => + const itemLabels = d?.props.filter(prop => searchableFields.includes(prop.type) ) @@ -193,11 +192,11 @@ const LightSearchBar = () => { label = itemLabels.find(prop => prop.type === ItemTypes.TEXT)?.value || itemLabels[0].value - else label = d.item.itemID + else label = d.itemID return ( - - + + ) }) diff --git a/src/components/request-timelines.js b/src/components/request-timelines.js index 8acb0cf..ea459ce 100644 --- a/src/components/request-timelines.js +++ b/src/components/request-timelines.js @@ -87,11 +87,11 @@ const Timeline = ({ request, item, metaEvidence }) => { name: 'Evidence', timestamp: e.timestamp, transactionHash: e.txHash, - title: e.metadata?.title, - description: e.metadata?.description, - URI: e.URI, - fileURI: e.metadata?.fileURI, - fileTypeExtension: e.metadata?.fileTypeExtension, + title: e.title, + description: e.description, + URI: e.uri, + fileURI: e.fileURI, + fileTypeExtension: e.fileTypeExtension, party: e.party })) @@ -117,13 +117,13 @@ const Timeline = ({ request, item, metaEvidence }) => { useEffect(() => { const evidenceManualFetch = async () => { const unindexedEvidenceURIs = logs - .filter(e => e.metadata?.name === 'Evidence') + .filter(e => e.name === 'Evidence') .filter( e => - e.metadata?.title === null && - e.metadata?.description === null && - e.metadata?.fileURI === null && - e.metadata?.fileTypeExtension === null + e.title === null && + e.description === null && + e.fileURI === null && + e.fileTypeExtension === null ) .map(e => e.URI) diff --git a/src/hooks/factory.js b/src/hooks/factory.js index 7b42f17..a288e73 100644 --- a/src/hooks/factory.js +++ b/src/hooks/factory.js @@ -17,7 +17,7 @@ const useFactory = () => { const query = { query: ` { - lregistry(id: "${tcrAddress.toLowerCase()}") { + lregistry:LRegistry_by_pk(id: "${tcrAddress.toLowerCase()}") { id } } @@ -48,7 +48,7 @@ const useFactory = () => { const query = { query: ` { - registry(id: "${tcrAddress.toLowerCase()}") { + registry:Registry_by_pk(id: "${tcrAddress.toLowerCase()}") { id } } diff --git a/src/hooks/light-tcr-view.js b/src/hooks/light-tcr-view.js index a2b44c0..042bd62 100644 --- a/src/hooks/light-tcr-view.js +++ b/src/hooks/light-tcr-view.js @@ -12,9 +12,9 @@ import { parseIpfs } from 'utils/ipfs-parse' export const fetchMetaEvidence = async (tcr, networkId) => { const query = { query: `{ - lregistry(id: "${tcr.toLowerCase()}") { + lregistry:LRegistry_by_pk(id: "${tcr.toLowerCase()}") { registrationMetaEvidence { - URI + uri } connectedTCR } @@ -29,7 +29,7 @@ export const fetchMetaEvidence = async (tcr, networkId) => { const { data } = await response.json() return { - metaEvidenceURI: data.lregistry.registrationMetaEvidence.URI, + metaEvidenceURI: data.lregistry.registrationMetaEvidence.uri, connectedTCR: data.lregistry.connectedTCR } } diff --git a/src/hooks/tcr-view.js b/src/hooks/tcr-view.js index 27249eb..77713b4 100644 --- a/src/hooks/tcr-view.js +++ b/src/hooks/tcr-view.js @@ -16,15 +16,15 @@ import { parseIpfs } from 'utils/ipfs-parse' export const fetchMetaEvidence = async (tcr, networkId) => { const query = { query: `{ - registry(id: "${tcr.toLowerCase()}") { + registry:Registry_by_pk(id: "${tcr.toLowerCase()}") { registrationMetaEvidence { - URI + uri } connectedTCR } - lregistry(id: "${tcr.toLowerCase()}") { + lregistry:LRegistry_by_pk(id: "${tcr.toLowerCase()}") { registrationMetaEvidence { - URI + uri } connectedTCR } @@ -65,12 +65,12 @@ export const fetchMetaEvidence = async (tcr, networkId) => { if (!data?.registry && !data?.lregistry && !pgtcrData?.registry) return null else if (data.registry !== null) return { - metaEvidenceURI: data.registry.registrationMetaEvidence.URI, + metaEvidenceURI: data.registry.registrationMetaEvidence.uri, connectedTCR: data.registry.connectedTCR } else if (data.lregistry !== null) return { - metaEvidenceURI: data.lregistry.registrationMetaEvidence.URI, + metaEvidenceURI: data.lregistry.registrationMetaEvidence.uri, connectedTCR: data.lregistry.connectedTCR } else diff --git a/src/pages/items/index.js b/src/pages/items/index.js index 3836e36..4a73bf7 100644 --- a/src/pages/items/index.js +++ b/src/pages/items/index.js @@ -96,30 +96,40 @@ const Items = () => { const orderDirection = oldestFirst ? 'asc' : 'desc' const itemsWhere = useMemo(() => { - if (absent) return { registry: tcrAddress.toLowerCase(), status: 'Absent' } + if (absent) + return { + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'Absent' } + } if (registered) - return { registry: tcrAddress.toLowerCase(), status: 'Registered' } + return { + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'Registered' } + } if (submitted) return { - registry: tcrAddress.toLowerCase(), - status: 'RegistrationRequested' + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'RegistrationRequested' } } if (removalRequested) - return { registry: tcrAddress.toLowerCase(), status: 'ClearingRequested' } + return { + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'ClearingRequested' } + } if (challengedSubmissions) return { - registry: tcrAddress.toLowerCase(), - status: 'RegistrationRequested', - disputed: true + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'RegistrationRequested' }, + disputed: { _eq: true } } if (challengedRemovals) return { - registry: tcrAddress.toLowerCase(), - status: 'ClearingRequested', - disputed: true + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'ClearingRequested' }, + disputed: { _eq: true } } - return { registry: tcrAddress.toLowerCase() } + return { registry_id: { _eq: tcrAddress.toLowerCase() } } }, [ absent, challengedRemovals, @@ -142,9 +152,9 @@ const Items = () => { () => getItems({ variables: { - skip: (Number(page) - 1) * ITEMS_PER_PAGE, - first: MAX_ENTITIES, - orderDirection: orderDirection, + offset: (Number(page) - 1) * ITEMS_PER_PAGE, + limit: MAX_ENTITIES, + order_by: [{ latestRequestSubmissionTime: orderDirection }], where: itemsWhere } }), diff --git a/src/pages/light-item-details/badges/index.js b/src/pages/light-item-details/badges/index.js index 35d1293..52c39c6 100644 --- a/src/pages/light-item-details/badges/index.js +++ b/src/pages/light-item-details/badges/index.js @@ -73,8 +73,8 @@ const mapToLegacy = items => items .map(item => ({ ...item, - decodedData: item.metadata?.props.map(({ value }) => value), - mergedData: item.metadata?.props + decodedData: item?.props.map(({ value }) => value), + mergedData: item?.props })) .map( ({ @@ -320,23 +320,21 @@ const Badges = ({ connectedTCRAddr, item, tcrAddress }) => { const query = { query: ` { - litems (where:{ - registry: "${badgeAddr.toLowerCase()}", - metadata_: {keywords: "${keywords}"} + litems:LItem (where:{ + registry_id: { _eq: "${badgeAddr.toLowerCase()}" }, + keywords: { _eq: "${keywords}" } }) { itemID status data - metadata{ - props { - value - type - label - description - isIdentifier - } + props { + value + type: itemType + label + description + isIdentifier } - requests(first: 1, orderBy: submissionTime, orderDirection: desc) { + requests(limit: 1, order_by: { submissionTime: desc }) { disputed disputeID submissionTime @@ -344,7 +342,7 @@ const Badges = ({ connectedTCRAddr, item, tcrAddress }) => { requester challenger resolutionTime - rounds(first: 1, orderBy: creationTime, orderDirection: desc) { + rounds(limit: 1, order_by: { creationTime: desc }) { appealPeriodStart appealPeriodEnd ruling diff --git a/src/pages/light-items/index.js b/src/pages/light-items/index.js index c3755a2..b6a26c4 100644 --- a/src/pages/light-items/index.js +++ b/src/pages/light-items/index.js @@ -175,30 +175,40 @@ const Items = () => { const orderDirection = oldestFirst ? 'asc' : 'desc' const itemsWhere = useMemo(() => { - if (absent) return { registry: tcrAddress.toLowerCase(), status: 'Absent' } + if (absent) + return { + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'Absent' } + } if (registered) - return { registry: tcrAddress.toLowerCase(), status: 'Registered' } + return { + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'Registered' } + } if (submitted) return { - registry: tcrAddress.toLowerCase(), - status: 'RegistrationRequested' + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'RegistrationRequested' } } if (removalRequested) - return { registry: tcrAddress.toLowerCase(), status: 'ClearingRequested' } + return { + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'ClearingRequested' } + } if (challengedSubmissions) return { - registry: tcrAddress.toLowerCase(), - status: 'RegistrationRequested', - disputed: true + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'RegistrationRequested' }, + disputed: { _eq: true } } if (challengedRemovals) return { - registry: tcrAddress.toLowerCase(), - status: 'ClearingRequested', - disputed: true + registry_id: { _eq: tcrAddress.toLowerCase() }, + status: { _eq: 'ClearingRequested' }, + disputed: { _eq: true } } - return { registry: tcrAddress.toLowerCase() } + return { registry_id: { _eq: tcrAddress.toLowerCase() } } }, [ absent, challengedRemovals, @@ -232,9 +242,9 @@ const Items = () => { () => getItems({ variables: { - skip: (Number(page) - 1) * ITEMS_PER_PAGE, - first: ITEMS_PER_PAGE, - orderDirection: orderDirection, + offset: (Number(page) - 1) * ITEMS_PER_PAGE, + limit: ITEMS_PER_PAGE, + order_by: [{ latestRequestSubmissionTime: orderDirection }], where: itemsWhere, registryId: tcrAddress.toLowerCase() } @@ -260,8 +270,8 @@ const Items = () => { let { litems: items } = data items = items.map(item => ({ ...item, - decodedData: item.metadata?.props.map(({ value }) => value), - mergedData: item.metadata?.props + decodedData: item.props?.map(({ value }) => value) || [], + mergedData: item.props || [] })) // HACK: // the graph could have failed to include the props. @@ -283,7 +293,7 @@ const Items = () => { ...i, mergedData, decodedData, - metadata: { props: mergedData } + props: mergedData } return newItem } else return i diff --git a/src/utils/graphql/classic-item-details.js b/src/utils/graphql/classic-item-details.js index 1ae4143..4bf5ceb 100644 --- a/src/utils/graphql/classic-item-details.js +++ b/src/utils/graphql/classic-item-details.js @@ -2,12 +2,12 @@ import { gql } from '@apollo/client' const CLASSIC_ITEM_DETAILS_QUERY = gql` query classicItemDetailsQuery($id: String!) { - item(id: $id) { + item: Item_by_pk(id: $id) { itemID data status disputed - requests(orderBy: submissionTime, orderDirection: desc) { + requests(order_by: { submissionTime: desc }) { requestType disputed disputeID @@ -24,22 +24,20 @@ const CLASSIC_ITEM_DETAILS_QUERY = gql` resolutionTx evidenceGroup { id - evidences(orderBy: number, orderDirection: desc) { + evidences(order_by: { number: desc }) { party - URI + uri number timestamp txHash - metadata { - name - title - description - fileURI - fileTypeExtension - } + name + title + description + fileURI + fileTypeExtension } } - rounds(orderBy: creationTime, orderDirection: desc) { + rounds(order_by: { creationTime: desc }) { appealed appealPeriodStart appealPeriodEnd diff --git a/src/utils/graphql/classic-registry-items.js b/src/utils/graphql/classic-registry-items.js index f0094a4..fc99d02 100644 --- a/src/utils/graphql/classic-registry-items.js +++ b/src/utils/graphql/classic-registry-items.js @@ -4,22 +4,21 @@ import { gql } from '@apollo/client' const CLASSIC_REGISTRY_ITEMS_QUERY = gql` query classicRegistryItemsQuery( - $skip: Int - $first: Int - $orderDirection: OrderDirection - $where: Item_filter + $offset: Int + $limit: Int + $order_by: [Item_order_by!] + $where: Item_bool_exp ) { - items( - skip: $skip - first: $first - orderDirection: $orderDirection - orderBy: latestRequestSubmissionTime + items: Item( + offset: $offset + limit: $limit + order_by: $order_by where: $where ) { itemID status data - requests(first: 1, orderBy: submissionTime, orderDirection: desc) { + requests(limit: 1, order_by: { submissionTime: desc }) { disputed disputeID submissionTime @@ -27,7 +26,7 @@ const CLASSIC_REGISTRY_ITEMS_QUERY = gql` requester challenger deposit - rounds(first: 1, orderBy: creationTime, orderDirection: desc) { + rounds(limit: 1, order_by: { creationTime: desc }) { appealed appealPeriodStart appealPeriodEnd diff --git a/src/utils/graphql/item-details.js b/src/utils/graphql/item-details.js index 8fd63bc..6e10005 100644 --- a/src/utils/graphql/item-details.js +++ b/src/utils/graphql/item-details.js @@ -2,12 +2,12 @@ import { gql } from '@apollo/client' const LIGHT_ITEM_DETAILS_QUERY = gql` query lightItemDetailsQuery($id: String!) { - litem(id: $id) { + litem: LItem_by_pk(id: $id) { data itemID status disputed - requests(orderBy: submissionTime, orderDirection: desc) { + requests(order_by: { submissionTime: desc }) { requestType disputed disputeID @@ -24,22 +24,20 @@ const LIGHT_ITEM_DETAILS_QUERY = gql` resolutionTime evidenceGroup { id - evidences(orderBy: number, orderDirection: desc) { + evidences(order_by: { number: desc }) { party - URI + uri number timestamp txHash - metadata { - name - title - description - fileURI - fileTypeExtension - } + name + title + description + fileURI + fileTypeExtension } } - rounds(orderBy: creationTime, orderDirection: desc) { + rounds(order_by: { creationTime: desc }) { appealed appealPeriodStart appealPeriodEnd diff --git a/src/utils/graphql/item-search.js b/src/utils/graphql/item-search.js index 0555260..a2539cc 100644 --- a/src/utils/graphql/item-search.js +++ b/src/utils/graphql/item-search.js @@ -1,40 +1,36 @@ import { gql } from '@apollo/client' const ITEM_SEARCH_QUERY = gql` - query itemSearchQuery($text: String!) { - itemSearch(text: $text, first: $first) { - item { + query itemSearchQuery($where: LItem_bool_exp!, $limit: Int) { + itemSearch: LItem(limit: $limit, where: $where) { + id + itemID + data + props { + type: itemType + value + isIdentifier + } + registry { id - itemID - data - metadata { - props { - type - value - isIdentifier - } - } - registry { - id - } - requests(first: 1, orderBy: submissionTime, orderDirection: desc) { - disputed - disputeID - submissionTime - resolved - requester - challenger - resolutionTime - deposit - rounds(first: 1, orderBy: creationTime, orderDirection: desc) { - appealPeriodStart - appealPeriodEnd - ruling - hasPaidRequester - hasPaidChallenger - amountPaidRequester - amountPaidChallenger - } + } + requests(limit: 1, order_by: { submissionTime: desc }) { + disputed + disputeID + submissionTime + resolved + requester + challenger + resolutionTime + deposit + rounds(limit: 1, order_by: { creationTime: desc }) { + appealPeriodStart + appealPeriodEnd + ruling + hasPaidRequester + hasPaidChallenger + amountPaidRequester + amountPaidChallenger } } } diff --git a/src/utils/graphql/light-items.js b/src/utils/graphql/light-items.js index 2f3f561..6634d3a 100644 --- a/src/utils/graphql/light-items.js +++ b/src/utils/graphql/light-items.js @@ -2,13 +2,13 @@ import { gql } from '@apollo/client' const LIGHT_ITEMS_QUERY = gql` query lightItemsQuery( - $skip: Int - $first: Int - $orderDirection: OrderDirection - $where: LItem_filter - $registryId: String + $offset: Int + $limit: Int + $order_by: [LItem_order_by!] + $where: LItem_bool_exp + $registryId: String! ) { - lregistry(id: $registryId) { + lregistry: LRegistry_by_pk(id: $registryId) { numberOfAbsent numberOfRegistered numberOfRegistrationRequested @@ -16,26 +16,23 @@ const LIGHT_ITEMS_QUERY = gql` numberOfChallengedRegistrations numberOfChallengedClearing } - litems( - skip: $skip - first: $first - orderDirection: $orderDirection - orderBy: latestRequestSubmissionTime + litems: LItem( + offset: $offset + limit: $limit + order_by: $order_by where: $where ) { itemID status data - metadata { - props { - value - type - label - description - isIdentifier - } + props { + value + type: itemType + label + description + isIdentifier } - requests(first: 1, orderBy: submissionTime, orderDirection: desc) { + requests(limit: 1, order_by: { submissionTime: desc }) { disputed disputeID submissionTime @@ -44,7 +41,7 @@ const LIGHT_ITEMS_QUERY = gql` challenger resolutionTime deposit - rounds(first: 1, orderBy: creationTime, orderDirection: desc) { + rounds(limit: 1, order_by: { creationTime: desc }) { appealPeriodStart appealPeriodEnd ruling diff --git a/src/utils/graphql/light-registry.js b/src/utils/graphql/light-registry.js index 59fbf83..226edf9 100644 --- a/src/utils/graphql/light-registry.js +++ b/src/utils/graphql/light-registry.js @@ -2,7 +2,7 @@ import { gql } from '@apollo/client' const LIGHT_REGISTRY_QUERY = gql` query lightRegistryQuery($lowerCaseTCRAddress: String!) { - lregistry(id: $lowerCaseTCRAddress) { + lregistry: LRegistry_by_pk(id: $lowerCaseTCRAddress) { numberOfAbsent numberOfRegistered numberOfRegistrationRequested diff --git a/src/utils/graphql/tcr-existence-test.js b/src/utils/graphql/tcr-existence-test.js index be4fc41..e356ae0 100644 --- a/src/utils/graphql/tcr-existence-test.js +++ b/src/utils/graphql/tcr-existence-test.js @@ -2,10 +2,10 @@ import { gql } from '@apollo/client' const TCR_EXISTENCE_TEST = gql` query TcrExistenceTest($tcrAddress: String!) { - lregistry(id: $tcrAddress) { + lregistry: LRegistry_by_pk(id: $tcrAddress) { id } - registry(id: $tcrAddress) { + registry: Registry_by_pk(id: $tcrAddress) { id } }