Commit 7f2e8c0b authored by tom's avatar tom

metadata fixes

parent 787b1991
...@@ -93,14 +93,12 @@ const TokenInstanceDetails = ({ data, scrollRef }: Props) => { ...@@ -93,14 +93,12 @@ const TokenInstanceDetails = ({ data, scrollRef }: Props) => {
/> />
</Flex> </Flex>
<Grid <Grid
mt={ 8 } mt={ 5 }
columnGap={ 8 } columnGap={ 8 }
rowGap={{ base: 1, lg: 3 }} rowGap={{ base: 1, lg: 3 }}
templateColumns={{ base: 'minmax(0, 1fr)', lg: '200px minmax(0, 1fr)' }} templateColumns={{ base: 'minmax(0, 1fr)', lg: '200px minmax(0, 1fr)' }}
overflow="hidden" overflow="hidden"
> >
{ divider }
<DetailsSponsoredItem/>
{ hasMetadata && ( { hasMetadata && (
<> <>
{ divider } { divider }
...@@ -148,6 +146,8 @@ const TokenInstanceDetails = ({ data, scrollRef }: Props) => { ...@@ -148,6 +146,8 @@ const TokenInstanceDetails = ({ data, scrollRef }: Props) => {
) } ) }
</> </>
) } ) }
{ divider }
<DetailsSponsoredItem/>
</Grid> </Grid>
</> </>
); );
......
...@@ -4,6 +4,7 @@ import React from 'react'; ...@@ -4,6 +4,7 @@ import React from 'react';
import MetadataItemArray from './MetadataItemArray'; import MetadataItemArray from './MetadataItemArray';
import MetadataItemObject from './MetadataItemObject'; import MetadataItemObject from './MetadataItemObject';
import MetadataItemPrimitive from './MetadataItemPrimitive'; import MetadataItemPrimitive from './MetadataItemPrimitive';
import { sortFields } from './utils';
interface Props { interface Props {
data: Record<string, unknown>; data: Record<string, unknown>;
...@@ -30,32 +31,32 @@ const MetadataAccordion = ({ data, level = 0 }: Props) => { ...@@ -30,32 +31,32 @@ const MetadataAccordion = ({ data, level = 0 }: Props) => {
case 'string': case 'string':
case 'number': case 'number':
case 'boolean': { case 'boolean': {
return <MetadataItemPrimitive name={ name } value={ value } isFlat={ isFlat } level={ level }/>; return <MetadataItemPrimitive key={ name } name={ name } value={ value } isFlat={ isFlat } level={ level }/>;
} }
case 'object': { case 'object': {
if (value === null) { if (value === null) {
return <MetadataItemPrimitive name={ name } value={ value } isFlat={ isFlat } level={ level }/>; return <MetadataItemPrimitive key={ name } name={ name } value={ value } isFlat={ isFlat } level={ level }/>;
} }
if (Array.isArray(value) && value.length > 0) { if (Array.isArray(value) && value.length > 0) {
return <MetadataItemArray name={ name } value={ value } level={ level }/>; return <MetadataItemArray key={ name } name={ name } value={ value } level={ level }/>;
} }
if (Object.keys(value).length > 0) { if (Object.keys(value).length > 0) {
return <MetadataItemObject name={ name } value={ value as Record<string, unknown> } level={ level }/>; return <MetadataItemObject key={ name } name={ name } value={ value as Record<string, unknown> } level={ level }/>;
} }
} }
// eslint-disable-next-line no-fallthrough // eslint-disable-next-line no-fallthrough
default: { default: {
return <MetadataItemPrimitive name={ name } value={ String(value) } isFlat={ isFlat } level={ level }/>; return <MetadataItemPrimitive key={ name } name={ name } value={ String(value) } isFlat={ isFlat } level={ level }/>;
} }
} }
}, [ level, isFlat ]); }, [ level, isFlat ]);
return ( return (
<Accordion allowMultiple fontSize="sm" ml={{ base: level === 0 ? 0 : 6, lg: `${ ml }px` }} defaultIndex={ level === 0 ? [ 0 ] : undefined }> <Accordion allowMultiple fontSize="sm" ml={{ base: level === 0 ? 0 : 6, lg: `${ ml }px` }} defaultIndex={ level === 0 ? [ 0 ] : undefined }>
{ Object.entries(data).map(([ key, value ]) => renderItem(key, value)) } { Object.entries(data).sort(sortFields).map(([ key, value ]) => renderItem(key, value)) }
</Accordion> </Accordion>
); );
}; };
......
...@@ -7,3 +7,24 @@ export function formatName(_name: string) { ...@@ -7,3 +7,24 @@ export function formatName(_name: string) {
return _upperFirst(name.trim()); return _upperFirst(name.trim());
} }
const PINNED_FIELDS = [ 'name', 'description' ];
export function sortFields([ nameA ]: [string, unknown], [ nameB ]: [string, unknown]): number {
const pinnedIndexA = PINNED_FIELDS.indexOf(nameA.toLowerCase());
const pinnedIndexB = PINNED_FIELDS.indexOf(nameB.toLowerCase());
if (pinnedIndexA === -1 && pinnedIndexB === -1) {
return 0;
}
if (pinnedIndexB === -1) {
return -1;
}
if (pinnedIndexA === -1) {
return 1;
}
return pinnedIndexA > pinnedIndexB ? 1 : -1;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment