const yo = require('yo-yo') const publishOnSwarm = require('./lib/publishOnSwarm') const publishOnIpfs = require('./lib/publishOnIpfs') const modalDialogCustom = require('./app/ui/modal-dialog-custom') export default function publish (storage, fileProvider, fileManager, contract) { if (contract) { if (contract.metadata === undefined || contract.metadata.length === 0) { modalDialogCustom.alert('This contract may be abstract, may not implement an abstract parent\'s methods completely or not invoke an inherited contract\'s constructor correctly.') } else { if (storage === 'swarm') { publishOnSwarm(contract, fileManager, function (err, uploaded) { if (err) { try { err = JSON.stringify(err) } catch (e) {} console.log(`Failed to publish metadata file to swarm, please check the Swarm gateways is available ( swarm-gateways.net ) ${err}`) } else { var result = yo`
${uploaded.map((value) => { return yo`
${value.filename} :
${value.output.url}
` })}
` modalDialogCustom.alert(yo`Metadata published successfully.
${result}
`) } }, (item) => { // triggered each time there's a new verified publish (means hash correspond) fileProvider.addExternal('swarm/' + item.hash, item.content) }) } else { publishOnIpfs(contract, fileManager, function (err, uploaded) { if (err) { try { err = JSON.stringify(err) } catch (e) {} modalDialogCustom.alert(yo`Failed to publish metadata file to ${storage}, please check the ${storage} gateways is available.
${err}
`) } else { var result = yo`
${uploaded.map((value) => { return yo`
${value.filename} :
${value.output.url}
` })}
` modalDialogCustom.alert(`Published ${contract.name}'s Metadata`, yo`Metadata of "${contract.name.toLowerCase()}" was published successfully.
${result}
`) } }, (item) => { // triggered each time there's a new verified publish (means hash correspond) fileProvider.addExternal('ipfs/' + item.hash, item.content) }) } } } }