Refactor sendMessageToDevices
Leverage map and Promise.all for more concise and linear code flow.
This commit is contained in:
parent
9ff95c7e61
commit
bafc61600c
2 changed files with 44 additions and 44 deletions
|
@ -39688,46 +39688,46 @@ window.textsecure.messaging = function() {
|
||||||
|
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
// message == PushMessageContentProto (NOT STRING)
|
// message == DataMessage or ContentMessage proto
|
||||||
function sendMessageToDevices(timestamp, number, deviceObjectList, message) {
|
function sendMessageToDevices(timestamp, number, deviceObjectList, message) {
|
||||||
var jsonData = [];
|
|
||||||
var relay = undefined;
|
var relay = undefined;
|
||||||
var promises = [];
|
return Promise.all(deviceObjectList.map(function(device) {
|
||||||
|
if (device.relay !== undefined) {
|
||||||
var addEncryptionFor = function(i) {
|
|
||||||
if (deviceObjectList[i].relay !== undefined) {
|
|
||||||
if (relay === undefined)
|
if (relay === undefined)
|
||||||
relay = deviceObjectList[i].relay;
|
relay = device.relay;
|
||||||
else if (relay != deviceObjectList[i].relay)
|
else if (relay != device.relay)
|
||||||
return new Promise(function() { throw new Error("Mismatched relays for number " + number); });
|
return new Promise(function() {
|
||||||
|
throw new Error("Mismatched relays for number " + number);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
if (relay === undefined)
|
if (relay === undefined)
|
||||||
relay = "";
|
relay = "";
|
||||||
else if (relay != "")
|
else if (relay != "")
|
||||||
return new Promise(function() { throw new Error("Mismatched relays for number " + number); });
|
return new Promise(function() {
|
||||||
|
throw new Error("Mismatched relays for number " + number);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return textsecure.protocol_wrapper.encryptMessageFor(deviceObjectList[i], message).then(function(encryptedMsg) {
|
return textsecure.protocol_wrapper.encryptMessageFor(device, message).then(function(encryptedMsg) {
|
||||||
return textsecure.protocol_wrapper.getRegistrationId(deviceObjectList[i].encodedNumber).then(function(registrationId) {
|
return textsecure.protocol_wrapper.getRegistrationId(device.encodedNumber).then(function(registrationId) {
|
||||||
return textsecure.storage.devices.removeTempKeysFromDevice(deviceObjectList[i].encodedNumber).then(function() {
|
return textsecure.storage.devices.removeTempKeysFromDevice(device.encodedNumber).then(function() {
|
||||||
jsonData[i] = {
|
var json = {
|
||||||
type: encryptedMsg.type,
|
type: encryptedMsg.type,
|
||||||
destinationDeviceId: textsecure.utils.unencodeNumber(deviceObjectList[i].encodedNumber)[1],
|
destinationDeviceId: textsecure.utils.unencodeNumber(device.encodedNumber)[1],
|
||||||
destinationRegistrationId: registrationId,
|
destinationRegistrationId: registrationId,
|
||||||
content: encryptedMsg.body,
|
content: encryptedMsg.body,
|
||||||
timestamp: timestamp
|
timestamp: timestamp
|
||||||
};
|
};
|
||||||
|
|
||||||
if (deviceObjectList[i].relay !== undefined)
|
if (device.relay !== undefined) {
|
||||||
jsonData[i].relay = deviceObjectList[i].relay;
|
json.relay = device.relay;
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < deviceObjectList.length; i++)
|
return json;
|
||||||
promises[i] = addEncryptionFor(i);
|
});
|
||||||
return Promise.all(promises).then(function() {
|
});
|
||||||
|
});
|
||||||
|
})).then(function(jsonData) {
|
||||||
var legacy = (message instanceof textsecure.protobuf.DataMessage);
|
var legacy = (message instanceof textsecure.protobuf.DataMessage);
|
||||||
return TextSecureServer.sendMessages(number, jsonData, legacy);
|
return TextSecureServer.sendMessages(number, jsonData, legacy);
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,46 +7,46 @@ window.textsecure.messaging = function() {
|
||||||
|
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
// message == PushMessageContentProto (NOT STRING)
|
// message == DataMessage or ContentMessage proto
|
||||||
function sendMessageToDevices(timestamp, number, deviceObjectList, message) {
|
function sendMessageToDevices(timestamp, number, deviceObjectList, message) {
|
||||||
var jsonData = [];
|
|
||||||
var relay = undefined;
|
var relay = undefined;
|
||||||
var promises = [];
|
return Promise.all(deviceObjectList.map(function(device) {
|
||||||
|
if (device.relay !== undefined) {
|
||||||
var addEncryptionFor = function(i) {
|
|
||||||
if (deviceObjectList[i].relay !== undefined) {
|
|
||||||
if (relay === undefined)
|
if (relay === undefined)
|
||||||
relay = deviceObjectList[i].relay;
|
relay = device.relay;
|
||||||
else if (relay != deviceObjectList[i].relay)
|
else if (relay != device.relay)
|
||||||
return new Promise(function() { throw new Error("Mismatched relays for number " + number); });
|
return new Promise(function() {
|
||||||
|
throw new Error("Mismatched relays for number " + number);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
if (relay === undefined)
|
if (relay === undefined)
|
||||||
relay = "";
|
relay = "";
|
||||||
else if (relay != "")
|
else if (relay != "")
|
||||||
return new Promise(function() { throw new Error("Mismatched relays for number " + number); });
|
return new Promise(function() {
|
||||||
|
throw new Error("Mismatched relays for number " + number);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return textsecure.protocol_wrapper.encryptMessageFor(deviceObjectList[i], message).then(function(encryptedMsg) {
|
return textsecure.protocol_wrapper.encryptMessageFor(device, message).then(function(encryptedMsg) {
|
||||||
return textsecure.protocol_wrapper.getRegistrationId(deviceObjectList[i].encodedNumber).then(function(registrationId) {
|
return textsecure.protocol_wrapper.getRegistrationId(device.encodedNumber).then(function(registrationId) {
|
||||||
return textsecure.storage.devices.removeTempKeysFromDevice(deviceObjectList[i].encodedNumber).then(function() {
|
return textsecure.storage.devices.removeTempKeysFromDevice(device.encodedNumber).then(function() {
|
||||||
jsonData[i] = {
|
var json = {
|
||||||
type: encryptedMsg.type,
|
type: encryptedMsg.type,
|
||||||
destinationDeviceId: textsecure.utils.unencodeNumber(deviceObjectList[i].encodedNumber)[1],
|
destinationDeviceId: textsecure.utils.unencodeNumber(device.encodedNumber)[1],
|
||||||
destinationRegistrationId: registrationId,
|
destinationRegistrationId: registrationId,
|
||||||
content: encryptedMsg.body,
|
content: encryptedMsg.body,
|
||||||
timestamp: timestamp
|
timestamp: timestamp
|
||||||
};
|
};
|
||||||
|
|
||||||
if (deviceObjectList[i].relay !== undefined)
|
if (device.relay !== undefined) {
|
||||||
jsonData[i].relay = deviceObjectList[i].relay;
|
json.relay = device.relay;
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < deviceObjectList.length; i++)
|
return json;
|
||||||
promises[i] = addEncryptionFor(i);
|
});
|
||||||
return Promise.all(promises).then(function() {
|
});
|
||||||
|
});
|
||||||
|
})).then(function(jsonData) {
|
||||||
var legacy = (message instanceof textsecure.protobuf.DataMessage);
|
var legacy = (message instanceof textsecure.protobuf.DataMessage);
|
||||||
return TextSecureServer.sendMessages(number, jsonData, legacy);
|
return TextSecureServer.sendMessages(number, jsonData, legacy);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue