Support for Contact Discovery Service

This commit is contained in:
Ken Powers 2020-09-03 21:25:19 -04:00 committed by Scott Nonnenberg
parent f6dcf91dbf
commit 8290881bd8
21 changed files with 961 additions and 79 deletions

View file

@ -230,10 +230,14 @@
});
let messageReceiver;
let preMessageReceiverStatus;
window.getSocketStatus = () => {
if (messageReceiver) {
return messageReceiver.getStatus();
}
if (_.isNumber(preMessageReceiverStatus)) {
return preMessageReceiverStatus;
}
return -1;
};
Whisper.events = _.clone(Backbone.Events);
@ -1633,6 +1637,8 @@
return;
}
preMessageReceiverStatus = WebSocket.CONNECTING;
if (messageReceiver) {
await messageReceiver.stopProcessing();
@ -1647,6 +1653,52 @@
const PASSWORD = storage.get('password');
const mySignalingKey = storage.get('signaling_key');
window.textsecure.messaging = new textsecure.MessageSender(
USERNAME || OLD_USERNAME,
PASSWORD
);
try {
if (connectCount === 0) {
const lonelyE164s = window
.getConversations()
.filter(
c =>
c.isPrivate() &&
c.get('e164') &&
!c.get('uuid') &&
!c.isEverUnregistered()
)
.map(c => c.get('e164'));
if (lonelyE164s.length > 0) {
const lookup = await textsecure.messaging.getUuidsForE164s(
lonelyE164s
);
const e164s = Object.keys(lookup);
e164s.forEach(e164 => {
const uuid = lookup[e164];
if (!uuid) {
const byE164 = window.ConversationController.get(e164);
if (byE164) {
byE164.setUnregistered();
}
}
window.ConversationController.ensureContactIds({
e164,
uuid,
highTrust: true,
});
});
}
}
} catch (error) {
window.log.error(
'Error fetching UUIDs for lonely e164s:',
error && error.stack ? error.stack : error
);
}
connectCount += 1;
const options = {
retryCached: connectCount === 1,
@ -1667,6 +1719,8 @@
);
window.textsecure.messageReceiver = messageReceiver;
preMessageReceiverStatus = null;
function addQueuedEventListener(name, handler) {
messageReceiver.addEventListener(name, (...args) =>
eventHandlerQueue.add(async () => {
@ -1709,11 +1763,6 @@
logger: window.log,
});
window.textsecure.messaging = new textsecure.MessageSender(
USERNAME || OLD_USERNAME,
PASSWORD
);
if (connectCount === 1) {
window.Signal.Stickers.downloadQueuedPacks();
await window.textsecure.messaging.sendRequestKeySyncMessage();