mirror of
https://github.com/status-im/embark-area-51.git
synced 2025-01-11 06:25:57 +00:00
add communicationFunctions that has listenTo and send
This commit is contained in:
parent
99492c3884
commit
1a787021d5
@ -85,6 +85,7 @@ class Whisper {
|
|||||||
code += "\n" + fs.readFileSync(utils.joinPath(__dirname, 'js', 'embarkjs_old_web3.js')).toString();
|
code += "\n" + fs.readFileSync(utils.joinPath(__dirname, 'js', 'embarkjs_old_web3.js')).toString();
|
||||||
code += "\nEmbarkJS.Messages.registerProvider('whisper', __embarkWhisperOld);";
|
code += "\nEmbarkJS.Messages.registerProvider('whisper', __embarkWhisperOld);";
|
||||||
} else {
|
} else {
|
||||||
|
code += "\n" + fs.readFileSync(utils.joinPath(__dirname, 'js', 'communicationFunctions.js')).toString();
|
||||||
code += "\n" + fs.readFileSync(utils.joinPath(__dirname, 'js', 'embarkjs.js')).toString();
|
code += "\n" + fs.readFileSync(utils.joinPath(__dirname, 'js', 'embarkjs.js')).toString();
|
||||||
code += "\nEmbarkJS.Messages.registerProvider('whisper', __embarkWhisperNewWeb3);";
|
code += "\nEmbarkJS.Messages.registerProvider('whisper', __embarkWhisperNewWeb3);";
|
||||||
}
|
}
|
||||||
|
112
lib/modules/whisper/js/communicationFunctions.js
Normal file
112
lib/modules/whisper/js/communicationFunctions.js
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
function sendMessage(options, callback) {
|
||||||
|
let topics, ttl, payload;
|
||||||
|
topics = options.topic;
|
||||||
|
const data = options.data;
|
||||||
|
ttl = options.ttl || 100;
|
||||||
|
const powTime = options.powTime || 3;
|
||||||
|
const powTarget = options.powTarget || 0.5;
|
||||||
|
const sig = options.sig;
|
||||||
|
const fromAscii = options.fromAscii;
|
||||||
|
const toHex = options.toHex;
|
||||||
|
const symKeyID = options.symKeyID;
|
||||||
|
const post = options.post;
|
||||||
|
|
||||||
|
if (topics) {
|
||||||
|
topics = toHex(topics).slice(0, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
payload = JSON.stringify(data);
|
||||||
|
|
||||||
|
let message = {
|
||||||
|
sig: sig, // signs the message using the keyPair ID
|
||||||
|
ttl: ttl,
|
||||||
|
payload: 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) {
|
||||||
|
message.symKeyID = options.symKeyID; // encrypts using given sym key ID
|
||||||
|
} else {
|
||||||
|
message.symKeyID = symKeyID; // encrypts using the sym key ID
|
||||||
|
}
|
||||||
|
|
||||||
|
if (topics === undefined && message.symKeyID && !message.pubKey) {
|
||||||
|
return callback("missing option: topic");
|
||||||
|
}
|
||||||
|
|
||||||
|
post(message, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
function listenTo(options, callback) {
|
||||||
|
let topics = options.topic;
|
||||||
|
const messageEvents = options.messageEvents;
|
||||||
|
const toHex = options.toHex;
|
||||||
|
const toAscii = options.toAscii;
|
||||||
|
const sig = options.sig;
|
||||||
|
const symKeyID = options.symKeyID;
|
||||||
|
const subscribe = options.subscribe;
|
||||||
|
|
||||||
|
let promise = new messageEvents();
|
||||||
|
|
||||||
|
let subOptions = {};
|
||||||
|
|
||||||
|
if(topics){
|
||||||
|
if (typeof topics === 'string') {
|
||||||
|
topics = [toHex(topics).slice(0, 10)];
|
||||||
|
} else {
|
||||||
|
topics = topics.map((t) => toHex(t).slice(0, 10));
|
||||||
|
}
|
||||||
|
subOptions.topics = topics;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.minPow) {
|
||||||
|
subOptions.minPow = options.minPow;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.usePrivateKey === true) {
|
||||||
|
if (options.privateKeyID) {
|
||||||
|
subOptions.privateKeyID = options.privateKeyID;
|
||||||
|
} else {
|
||||||
|
subOptions.privateKeyID = sig;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (options.symKeyID) {
|
||||||
|
subOptions.symKeyID = options.symKeyID;
|
||||||
|
} else {
|
||||||
|
subOptions.symKeyID = symKeyID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
promise.filter = subscribe("messages", subOptions)
|
||||||
|
.on('data', function (result) {
|
||||||
|
var payload = JSON.parse(toAscii(result.payload));
|
||||||
|
var data;
|
||||||
|
data = {
|
||||||
|
topic: toAscii(result.topic),
|
||||||
|
data: payload,
|
||||||
|
//from: result.from,
|
||||||
|
time: result.timestamp
|
||||||
|
};
|
||||||
|
|
||||||
|
if (callback) {
|
||||||
|
return callback(null, data);
|
||||||
|
}
|
||||||
|
promise.cb(payload, data, result);
|
||||||
|
});
|
||||||
|
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof module !== 'undefined' && module.exports) {
|
||||||
|
module.exports = {
|
||||||
|
sendMessage,
|
||||||
|
listenTo
|
||||||
|
};
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
/*global EmbarkJS, Web3, __MessageEvents */
|
/*global EmbarkJS, Web3, __MessageEvents, sendMessage, listenTo*/
|
||||||
|
|
||||||
// for the whisper v5 and web3.js 1.0
|
// for the whisper v5 and web3.js 1.0
|
||||||
let __embarkWhisperNewWeb3 = {};
|
let __embarkWhisperNewWeb3 = {};
|
||||||
@ -36,105 +36,36 @@ __embarkWhisperNewWeb3.setProvider = function(options) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
__embarkWhisperNewWeb3.sendMessage = function(options) {
|
__embarkWhisperNewWeb3.sendMessage = function(options) {
|
||||||
var topics, data, ttl, payload;
|
const data = options.data || options.payload;
|
||||||
topics = options.topic;
|
if (!data) {
|
||||||
data = options.data || options.payload;
|
|
||||||
ttl = options.ttl || 100;
|
|
||||||
var powTime = options.powTime || 3;
|
|
||||||
var powTarget = options.powTarget || 0.5;
|
|
||||||
|
|
||||||
if (data === undefined) {
|
|
||||||
throw new Error("missing option: data");
|
throw new Error("missing option: data");
|
||||||
}
|
}
|
||||||
|
Object.assign(options, {
|
||||||
|
sig: this.sig,
|
||||||
|
fromAscii: EmbarkJS.Utils.fromAscii,
|
||||||
|
toHex: this.web3.utils.toHex,
|
||||||
|
symKeyID: options.symKeyID || this.symKeyID,
|
||||||
|
post: this.web3.shh.post,
|
||||||
|
data
|
||||||
|
});
|
||||||
|
|
||||||
if (topics) {
|
sendMessage(options, (err) => {
|
||||||
topics = this.web3.utils.toHex(topics).slice(0, 10);
|
if (err) {
|
||||||
}
|
throw new Error(err);
|
||||||
|
}
|
||||||
payload = JSON.stringify(data);
|
|
||||||
|
|
||||||
let message = {
|
|
||||||
sig: this.sig, // signs the message using the keyPair ID
|
|
||||||
ttl: ttl,
|
|
||||||
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) {
|
|
||||||
message.symKeyID = options.symKeyID; // encrypts using given sym key ID
|
|
||||||
} else {
|
|
||||||
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) {
|
__embarkWhisperNewWeb3.listenTo = function (options, callback) {
|
||||||
var topics = options.topic;
|
Object.assign(options, {
|
||||||
|
sig: this.sig,
|
||||||
let promise = new __MessageEvents();
|
toAscii: EmbarkJS.Utils.toAscii,
|
||||||
|
toHex: this.web3.utils.toHex,
|
||||||
let subOptions = {};
|
symKeyID: options.symKeyID || this.symKeyID,
|
||||||
|
messageEvents: __MessageEvents,
|
||||||
if (topics) {
|
subscribe: this.web3.shh.subscribe
|
||||||
if (typeof topics === 'string') {
|
});
|
||||||
topics = [this.web3.utils.toHex(topics).slice(0, 10)];
|
listenTo(options, callback);
|
||||||
} else {
|
|
||||||
topics = topics.map((t) => this.web3.utils.toHex(t).slice(0, 10));
|
|
||||||
}
|
|
||||||
subOptions.topics = topics;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.minPow) {
|
|
||||||
subOptions.minPow = options.minPow;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.usePrivateKey === true) {
|
|
||||||
if (options.privateKeyID) {
|
|
||||||
subOptions.privateKeyID = options.privateKeyID;
|
|
||||||
} else {
|
|
||||||
subOptions.privateKeyID = this.sig;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (options.symKeyID) {
|
|
||||||
subOptions.symKeyID = options.symKeyID;
|
|
||||||
} else {
|
|
||||||
subOptions.symKeyID = this.symKeyID;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let filter = this.web3.shh.subscribe("messages", subOptions)
|
|
||||||
.on('data', function(result) {
|
|
||||||
var payload = JSON.parse(EmbarkJS.Utils.toAscii(result.payload));
|
|
||||||
var data;
|
|
||||||
data = {
|
|
||||||
topic: EmbarkJS.Utils.toAscii(result.topic),
|
|
||||||
data: payload,
|
|
||||||
//from: result.from,
|
|
||||||
time: result.timestamp
|
|
||||||
};
|
|
||||||
|
|
||||||
if (callback) {
|
|
||||||
return callback(null, data);
|
|
||||||
}
|
|
||||||
promise.cb(payload, data, result);
|
|
||||||
});
|
|
||||||
|
|
||||||
promise.filter = filter;
|
|
||||||
|
|
||||||
return promise;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
__embarkWhisperNewWeb3.getWhisperVersion = function(cb) {
|
__embarkWhisperNewWeb3.getWhisperVersion = function(cb) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user