Allow topics to be optional when pubKey/privKey is used

This commit is contained in:
Richard Ramos 2018-07-16 12:18:31 -04:00 committed by Iuri Matias
parent f56fd9e264
commit aa806ce400
1 changed files with 22 additions and 16 deletions

View File

@ -32,33 +32,34 @@ __embarkWhisperNewWeb3.setProvider = function (options) {
__embarkWhisperNewWeb3.sendMessage = function (options) {
var topics, data, ttl, payload;
topics = options.topic || options.topics;
topics = options.topic;
data = options.data || options.payload;
ttl = options.ttl || 100;
var powTime = options.powTime || 3;
var powTarget = options.powTarget || 0.5;
if (topics === undefined) {
throw new Error("missing option: topic");
}
if (data === undefined) {
throw new Error("missing option: data");
}
if (topics) {
topics = this.web3.utils.toHex(topics).slice(0, 10);
}
payload = JSON.stringify(data);
let message = {
sig: this.sig, // signs the message using the keyPair ID
ttl: ttl,
topic: topics,
payload: EmbarkJS.Utils.fromAscii(payload),
powTime: powTime,
powTarget: powTarget
};
if (topics) {
message.topic = topics;
}
if (options.pubKey) {
message.pubKey = options.pubKey; // encrypt using a given pubKey
} else if(options.symKeyID) {
@ -67,24 +68,29 @@ __embarkWhisperNewWeb3.sendMessage = function (options) {
message.symKeyID = this.symKeyID; // encrypts using the sym key ID
}
if (topics === undefined && message.symKeyID && !message.pubKey) {
throw new Error("missing option: topic");
}
this.web3.shh.post(message, function () {
});
};
__embarkWhisperNewWeb3.listenTo = function (options, callback) {
var topics = options.topic || options.topics;
var topics = options.topic;
let promise = new __MessageEvents();
let subOptions = {};
if(topics){
if (typeof topics === 'string') {
topics = [this.web3.utils.toHex(topics).slice(0, 10)];
} else {
topics = topics.map((t) => this.web3.utils.toHex(t).slice(0, 10));
}
let subOptions = {
topics: topics
};
subOptions.topics = topics;
}
if (options.minPow) {
subOptions.minPow = options.minPow;