mirror of https://github.com/embarklabs/embark.git
55 lines
1.9 KiB
JavaScript
55 lines
1.9 KiB
JavaScript
const _ = require('underscore');
|
|
|
|
const IpfsModule = require('../ipfs');
|
|
const SwarmModule = require('../swarm');
|
|
|
|
class Storage {
|
|
constructor(embark, options){
|
|
const self = this;
|
|
this.embark = embark;
|
|
this.storageConfig = embark.config.storageConfig;
|
|
|
|
if (!this.storageConfig.enabled) return;
|
|
|
|
this.addSetProviders();
|
|
|
|
new IpfsModule(embark, options); /*eslint no-new: "off"*/
|
|
new SwarmModule(embark, options); /*eslint no-new: "off"*/
|
|
|
|
embark.events.setCommandHandler('storage:upload', (cb) => {
|
|
let platform = options.storageConfig.upload.provider;
|
|
|
|
if (['swarm', 'ipfs'].indexOf(platform) === -1) {
|
|
return cb({message: __('platform "{{platform}}" is specified as the upload provider, however no plugins have registered an upload command for "{{platform}}".', {platform: platform})});
|
|
}
|
|
|
|
embark.events.request("storage:upload:" + platform, cb);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Adds the code to call setProviders in embarkjs after embark is ready
|
|
*
|
|
* @returns {void}
|
|
*/
|
|
addSetProviders() {
|
|
const self = this;
|
|
// filter list of dapp connections based on available_providers set in config
|
|
let hasSwarm = _.contains(this.storageConfig.available_providers, 'swarm'); // don't need to eval this in every loop iteration
|
|
// contains valid dapp storage providers
|
|
this._validDappProviders = _.filter(this.storageConfig.dappConnection, (conn) => {
|
|
return _.contains(self.storageConfig.available_providers, conn.provider) || (conn === '$BZZ' && hasSwarm);
|
|
});
|
|
|
|
let code = `\nEmbarkJS.Storage.setProviders(${JSON.stringify(this._validDappProviders)});`;
|
|
let shouldInit = (storageConfig) => {
|
|
return (this._validDappProviders !== undefined && this._validDappProviders.length > 0 && storageConfig.enabled === true);
|
|
};
|
|
|
|
this.embark.addProviderInit('storage', code, shouldInit);
|
|
}
|
|
|
|
}
|
|
|
|
module.exports = Storage;
|