mirror of
https://github.com/status-im/discover-dapps.git
synced 2025-02-20 14:18:28 +00:00
Upload metadata on setMetadata
This commit is contained in:
parent
7042d99fa8
commit
d8359163c2
@ -8,13 +8,29 @@ const checkIPFSAvailability = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
export const uploadMetadata = async metadata => {
|
||||
const uploadImage = async base64Image => {
|
||||
const imageFile = [
|
||||
{
|
||||
files: [helpers.base64ToBlob(base64Image)],
|
||||
},
|
||||
]
|
||||
|
||||
return EmbarkJSService.Storage.uploadFile(imageFile)
|
||||
}
|
||||
|
||||
const uploadMetadata = async metadata => {
|
||||
const hash = await EmbarkJSService.Storage.saveText(metadata)
|
||||
return helpers.getBytes32FromIpfsHash(hash)
|
||||
}
|
||||
|
||||
export const uploadDAppMetadata = async metadata => {
|
||||
try {
|
||||
await checkIPFSAvailability()
|
||||
|
||||
const hash = await EmbarkJSService.Storage.saveText(metadata)
|
||||
const metadataInBytes = helpers.getBytes32FromIpfsHash(hash)
|
||||
return metadataInBytes
|
||||
metadata.image = await uploadImage(metadata.image)
|
||||
const uploadedMetadataHash = await uploadMetadata(JSON.stringify(metadata))
|
||||
|
||||
return uploadedMetadataHash
|
||||
} catch (error) {
|
||||
throw new Error(
|
||||
`Uploading DApp metadata to IPFS failed. Details: ${error.message}`,
|
||||
@ -22,31 +38,21 @@ export const uploadMetadata = async metadata => {
|
||||
}
|
||||
}
|
||||
|
||||
export const uploadImage = async base64Image => {
|
||||
try {
|
||||
await checkIPFSAvailability()
|
||||
|
||||
const imageFile = [
|
||||
{
|
||||
files: [helpers.base64ToBlob(base64Image)],
|
||||
},
|
||||
]
|
||||
|
||||
const hash = await EmbarkJSService.Storage.uploadFile(imageFile)
|
||||
return hash
|
||||
} catch (error) {
|
||||
throw new Error(
|
||||
`Uploading DApp image to IPFS failed. Details: ${error.message}`,
|
||||
)
|
||||
}
|
||||
const retrieveMetadata = async metadataBytes32 => {
|
||||
const metadataHash = helpers.getIpfsHashFromBytes32(metadataBytes32)
|
||||
return EmbarkJSService.Storage.get(metadataHash)
|
||||
}
|
||||
|
||||
export const retrieveMetadata = async metadataBytes32 => {
|
||||
const retrieveImageUrl = async imageHash => {
|
||||
return EmbarkJSService.Storage.getUrl(imageHash)
|
||||
}
|
||||
|
||||
export const retrieveDAppMetadataByHash = async metadataBytes32 => {
|
||||
try {
|
||||
await checkIPFSAvailability()
|
||||
|
||||
const metadataHash = helpers.getIpfsHashFromBytes32(metadataBytes32)
|
||||
const metadata = await EmbarkJSService.Storage.get(metadataHash)
|
||||
const metadata = JSON.parse(await retrieveMetadata(metadataBytes32))
|
||||
metadata.image = await retrieveImageUrl(metadata.image)
|
||||
|
||||
return metadata
|
||||
} catch (error) {
|
||||
@ -55,8 +61,3 @@ export const retrieveMetadata = async metadataBytes32 => {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export const retrieveImageUrl = async imageHash => {
|
||||
await checkIPFSAvailability()
|
||||
return EmbarkJSService.Storage.getUrl(imageHash)
|
||||
}
|
||||
|
@ -54,9 +54,7 @@ class DiscoverService extends BlockchainService {
|
||||
const dapp = await this.getDAppById(id)
|
||||
|
||||
try {
|
||||
dapp.metadata = JSON.parse(await ipfsSDK.retrieveMetadata(dapp.metadata))
|
||||
dapp.metadata.image = await ipfsSDK.retrieveImageUrl(dapp.metadata.image)
|
||||
|
||||
dapp.metadata = await ipfsSDK.retrieveDAppMetadataByHash(dapp.metadata)
|
||||
return dapp
|
||||
} catch (error) {
|
||||
throw new Error('Error fetching correct data from IPFS')
|
||||
@ -78,10 +76,7 @@ class DiscoverService extends BlockchainService {
|
||||
|
||||
await this.validator.validateDAppCreation(dappId, amount)
|
||||
|
||||
dappMetadata.image = await ipfsSDK.uploadImage(dappMetadata.image)
|
||||
const uploadedMetadata = await ipfsSDK.uploadMetadata(
|
||||
JSON.stringify(dappMetadata),
|
||||
)
|
||||
const uploadedMetadata = await ipfsSDK.uploadDAppMetadata(dappMetadata)
|
||||
|
||||
const callData = DiscoverContract.methods
|
||||
.createDApp(dappId, amount, uploadedMetadata)
|
||||
@ -132,14 +127,16 @@ class DiscoverService extends BlockchainService {
|
||||
}
|
||||
}
|
||||
|
||||
// Todo: Should we upload the metadata to IPFS
|
||||
async setMetadata(id, metadata) {
|
||||
await super.__unlockServiceAccount()
|
||||
await this.validator.validateMetadataSet(id)
|
||||
|
||||
const dappMetadata = JSON.parse(JSON.stringify(metadata))
|
||||
const uploadedMetadata = await ipfsSDK.uploadDAppMetadata(dappMetadata)
|
||||
|
||||
try {
|
||||
return broadcastContractFn(
|
||||
DiscoverContract.methods.setMetadata(id, metadata).send,
|
||||
DiscoverContract.methods.setMetadata(id, uploadedMetadata).send,
|
||||
this.sharedContext.account,
|
||||
)
|
||||
} catch (error) {
|
||||
|
@ -67,7 +67,7 @@ class DiscoverValidator {
|
||||
async validateMetadataSet(id) {
|
||||
const dapp = await this.service.getDAppById(id)
|
||||
|
||||
if (dapp.developer != this.service.sharedContext.account) {
|
||||
if (dapp.developer.toLowerCase() != this.service.sharedContext.account) {
|
||||
throw new Error('Only the developer can update the metadata')
|
||||
}
|
||||
}
|
||||
|
@ -58,8 +58,19 @@ class Example extends React.Component {
|
||||
return getResult('downVoteCost', [id])
|
||||
}
|
||||
|
||||
async setMetadata(id) {
|
||||
DAPP_DATA.category = 'updated'
|
||||
return getResult('setMetadata', [id, DAPP_DATA])
|
||||
}
|
||||
|
||||
async logDiscoverMethods() {
|
||||
const createdDApp = await this.createDApp()
|
||||
|
||||
const dappData = await this.getFullDApp(createdDApp.id)
|
||||
console.log(`Created DApp : ${JSON.stringify(dappData)}`)
|
||||
|
||||
document.getElementById('testImage').src = dappData.metadata.image
|
||||
|
||||
const downVote = await this.downVoteCost(createdDApp.id)
|
||||
console.log(
|
||||
`Downvote TX Hash : ${await this.downvote(createdDApp.id, downVote.c)}`,
|
||||
@ -72,8 +83,15 @@ class Example extends React.Component {
|
||||
console.log(
|
||||
`DownVoteCost Result : ${await this.downVoteCost(createdDApp.id)}`,
|
||||
)
|
||||
const dappData = await this.getFullDApp(createdDApp.id)
|
||||
document.getElementById('testImage').src = dappData.metadata.image
|
||||
|
||||
console.log(
|
||||
`Set metadata TX Hash : ${await this.setMetadata(createdDApp.id)}`,
|
||||
)
|
||||
console.log(
|
||||
`Updated DApp : ${JSON.stringify(
|
||||
await this.getFullDApp(createdDApp.id),
|
||||
)}`,
|
||||
)
|
||||
}
|
||||
|
||||
render() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user