Export/Import open edition token metadata
This commit is contained in:
parent
3fbebbe03d
commit
71e539a0b4
@ -13,6 +13,8 @@ export interface MetadataInputProps {
|
|||||||
selectedAssetFile: File
|
selectedAssetFile: File
|
||||||
selectedMetadataFile: File
|
selectedMetadataFile: File
|
||||||
updateMetadataToUpload: (metadataFile: File) => void
|
updateMetadataToUpload: (metadataFile: File) => void
|
||||||
|
onChange?: (metadata: any) => void
|
||||||
|
importedMetadata?: any
|
||||||
}
|
}
|
||||||
|
|
||||||
export const MetadataInput = (props: MetadataInputProps) => {
|
export const MetadataInput = (props: MetadataInputProps) => {
|
||||||
@ -151,8 +153,11 @@ export const MetadataInput = (props: MetadataInputProps) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log(props.selectedMetadataFile?.name)
|
console.log(props.selectedMetadataFile?.name)
|
||||||
if (props.selectedMetadataFile) void parseMetadata(props.selectedMetadataFile)
|
if (props.selectedMetadataFile) {
|
||||||
else void parseMetadata(emptyMetadataFile)
|
void parseMetadata(props.selectedMetadataFile)
|
||||||
|
} else if (!props.importedMetadata) {
|
||||||
|
void parseMetadata(emptyMetadataFile)
|
||||||
|
}
|
||||||
}, [props.selectedMetadataFile?.name])
|
}, [props.selectedMetadataFile?.name])
|
||||||
|
|
||||||
const nameStateMemo = useMemo(() => nameState, [nameState.value])
|
const nameStateMemo = useMemo(() => nameState, [nameState.value])
|
||||||
@ -163,7 +168,10 @@ export const MetadataInput = (props: MetadataInputProps) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log('Update metadata')
|
console.log('Update metadata')
|
||||||
if (metadata) generateUpdatedMetadata()
|
if (metadata) {
|
||||||
|
generateUpdatedMetadata()
|
||||||
|
if (props.onChange) props.onChange(metadata)
|
||||||
|
}
|
||||||
console.log(metadata)
|
console.log(metadata)
|
||||||
}, [
|
}, [
|
||||||
nameStateMemo.value,
|
nameStateMemo.value,
|
||||||
@ -173,6 +181,31 @@ export const MetadataInput = (props: MetadataInputProps) => {
|
|||||||
attributesStateMemo.entries,
|
attributesStateMemo.entries,
|
||||||
])
|
])
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (props.importedMetadata) {
|
||||||
|
console.log('Imported metadata: ', props.importedMetadata)
|
||||||
|
nameState.onChange(props.importedMetadata.name || '')
|
||||||
|
descriptionState.onChange(props.importedMetadata.description || '')
|
||||||
|
externalUrlState.onChange(props.importedMetadata.external_url || '')
|
||||||
|
youtubeUrlState.onChange(props.importedMetadata.youtube_url || '')
|
||||||
|
if (props.importedMetadata?.attributes && props.importedMetadata?.attributes?.length > 0) {
|
||||||
|
attributesState.reset()
|
||||||
|
props.importedMetadata?.attributes?.forEach((attribute: { trait_type: string; value: string }) => {
|
||||||
|
attributesState.add({
|
||||||
|
trait_type: attribute.trait_type,
|
||||||
|
value: attribute.value,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
attributesState.reset()
|
||||||
|
attributesState.add({
|
||||||
|
trait_type: '',
|
||||||
|
value: '',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [props.importedMetadata])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className="grid grid-cols-2 mt-4 mr-4 ml-8 w-full max-w-6xl max-h-full no-scrollbar">
|
<div className="grid grid-cols-2 mt-4 mr-4 ml-8 w-full max-w-6xl max-h-full no-scrollbar">
|
||||||
|
@ -42,6 +42,7 @@ export interface OffChainMetadataUploadDetailsDataProps {
|
|||||||
tokenURI?: string
|
tokenURI?: string
|
||||||
imageUrl?: string
|
imageUrl?: string
|
||||||
openEditionMinterMetadataFile?: File
|
openEditionMinterMetadataFile?: File
|
||||||
|
exportedMetadata?: any
|
||||||
}
|
}
|
||||||
|
|
||||||
export const OffChainMetadataUploadDetails = ({
|
export const OffChainMetadataUploadDetails = ({
|
||||||
@ -55,6 +56,7 @@ export const OffChainMetadataUploadDetails = ({
|
|||||||
const [uploadService, setUploadService] = useState<UploadServiceType>('nft-storage')
|
const [uploadService, setUploadService] = useState<UploadServiceType>('nft-storage')
|
||||||
const [metadataFileArrayIndex, setMetadataFileArrayIndex] = useState(0)
|
const [metadataFileArrayIndex, setMetadataFileArrayIndex] = useState(0)
|
||||||
const [refreshMetadata, setRefreshMetadata] = useState(false)
|
const [refreshMetadata, setRefreshMetadata] = useState(false)
|
||||||
|
const [exportedMetadata, setExportedMetadata] = useState(undefined)
|
||||||
|
|
||||||
const [openEditionMinterMetadataFile, setOpenEditionMinterMetadataFile] = useState<File | undefined>()
|
const [openEditionMinterMetadataFile, setOpenEditionMinterMetadataFile] = useState<File | undefined>()
|
||||||
|
|
||||||
@ -206,6 +208,7 @@ export const OffChainMetadataUploadDetails = ({
|
|||||||
.replace(regex, '')
|
.replace(regex, '')
|
||||||
.trim(),
|
.trim(),
|
||||||
openEditionMinterMetadataFile,
|
openEditionMinterMetadataFile,
|
||||||
|
exportedMetadata,
|
||||||
}
|
}
|
||||||
onChange(data)
|
onChange(data)
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
@ -224,6 +227,7 @@ export const OffChainMetadataUploadDetails = ({
|
|||||||
coverImageUrlState.value,
|
coverImageUrlState.value,
|
||||||
refreshMetadata,
|
refreshMetadata,
|
||||||
openEditionMinterMetadataFile,
|
openEditionMinterMetadataFile,
|
||||||
|
exportedMetadata,
|
||||||
])
|
])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -246,7 +250,7 @@ export const OffChainMetadataUploadDetails = ({
|
|||||||
setUploadMethod(importedOffChainMetadataUploadDetails.uploadMethod)
|
setUploadMethod(importedOffChainMetadataUploadDetails.uploadMethod)
|
||||||
tokenUriState.onChange(importedOffChainMetadataUploadDetails.tokenURI || '')
|
tokenUriState.onChange(importedOffChainMetadataUploadDetails.tokenURI || '')
|
||||||
coverImageUrlState.onChange(importedOffChainMetadataUploadDetails.imageUrl || '')
|
coverImageUrlState.onChange(importedOffChainMetadataUploadDetails.imageUrl || '')
|
||||||
setOpenEditionMinterMetadataFile(importedOffChainMetadataUploadDetails.openEditionMinterMetadataFile)
|
//setOpenEditionMinterMetadataFile(importedOffChainMetadataUploadDetails.openEditionMinterMetadataFile)
|
||||||
}
|
}
|
||||||
}, [importedOffChainMetadataUploadDetails])
|
}, [importedOffChainMetadataUploadDetails])
|
||||||
|
|
||||||
@ -464,6 +468,8 @@ export const OffChainMetadataUploadDetails = ({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<MetadataInput
|
<MetadataInput
|
||||||
|
importedMetadata={importedOffChainMetadataUploadDetails?.exportedMetadata}
|
||||||
|
onChange={setExportedMetadata}
|
||||||
selectedAssetFile={assetFilesArray[0]}
|
selectedAssetFile={assetFilesArray[0]}
|
||||||
selectedMetadataFile={metadataFilesArray[0]}
|
selectedMetadataFile={metadataFilesArray[0]}
|
||||||
updateMetadataToUpload={updateOpenEditionMinterMetadataFile}
|
updateMetadataToUpload={updateOpenEditionMinterMetadataFile}
|
||||||
|
Loading…
Reference in New Issue
Block a user