Publish metadata and contract sources

pull/1/head
Alex Beregszaszi 8 years ago
parent 922c533f14
commit bd0a6eac6d
  1. 47
      src/app.js

@ -1,6 +1,7 @@
/* global alert, confirm, prompt, FileReader, Option, Worker, chrome */
'use strict'
var async = require('async')
var $ = require('jquery')
var base64 = require('js-base64').Base64
var swarmgw = require('swarmgw')
@ -657,13 +658,53 @@ var run = function () {
})
}
function publishOnSwarm (contract, cb) {
// gather list of files to publish
var sources = []
sources.push({
content: contract.metadata,
hash: contract.metadataHash
})
var metadata
try {
metadata = JSON.parse(contract.metadata)
} catch (e) {
return cb(e)
}
if (metadata === undefined) {
return cb('No metadata')
}
Object.keys(metadata.sources).forEach(function (fileName) {
// find hash
var hash
try {
hash = metadata.sources[fileName].urls[0].match('bzzr://(.+)')[1]
} catch (e) {
return cb('Metadata inconsistency')
}
sources.push({
content: files.get(fileName),
hash: hash
})
})
// publish the list of sources in order, fail if any failed
async.eachSeries(sources, function (item, cb) {
swarmVerifiedPublish(item.content, item.hash, cb)
}, cb)
}
udapp.event.register('publishContract', this, function (contract) {
console.log('Publish contract...', contract)
swarmVerifiedPublish(contract.metadata, contract.metadataHash, function (err) {
publishOnSwarm(contract, function (err) {
if (err) {
alert('Failed to publish metadata: ' + err)
} else {
alert('Published metadata')
alert('Metadata published successfully')
}
})
})

Loading…
Cancel
Save