You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.6 KiB
JavaScript
89 lines
2.6 KiB
JavaScript
/* global Event, textsecure, window, libsession */
|
|
|
|
/* eslint-disable more/no-then */
|
|
|
|
// eslint-disable-next-line func-names
|
|
(function() {
|
|
window.textsecure = window.textsecure || {};
|
|
|
|
async function SyncRequest() {
|
|
// this.receiver = receiver;
|
|
|
|
window.log.info('SyncRequest created. Sending config sync request...');
|
|
const { CONFIGURATION } = textsecure.protobuf.SyncMessage.Request.Type;
|
|
const { RequestSyncMessage } = window.libsession.Messages.Outgoing;
|
|
|
|
const requestConfigurationSyncMessage = new RequestSyncMessage({
|
|
timestamp: Date.now(),
|
|
reqestType: CONFIGURATION,
|
|
});
|
|
|
|
await libsession
|
|
.getMessageQueue()
|
|
.sendSyncMessage(requestConfigurationSyncMessage);
|
|
|
|
window.log.info('SyncRequest now sending contact sync message...');
|
|
const { CONTACTS } = textsecure.protobuf.SyncMessage.Request.Type;
|
|
const requestContactSyncMessage = new RequestSyncMessage({
|
|
timestamp: Date.now(),
|
|
reqestType: CONTACTS,
|
|
});
|
|
await libsession
|
|
.getMessageQueue()
|
|
.sendSyncMessage(requestContactSyncMessage);
|
|
|
|
window.log.info('SyncRequest now sending group sync messsage...');
|
|
const { GROUPS } = textsecure.protobuf.SyncMessage.Request.Type;
|
|
const requestGroupSyncMessage = new RequestSyncMessage({
|
|
timestamp: Date.now(),
|
|
reqestType: GROUPS,
|
|
});
|
|
await libsession.getMessageQueue().sendSyncMessage(requestGroupSyncMessage);
|
|
|
|
this.timeout = setTimeout(this.onTimeout.bind(this), 60000);
|
|
}
|
|
|
|
SyncRequest.prototype = new textsecure.EventTarget();
|
|
SyncRequest.prototype.extend({
|
|
constructor: SyncRequest,
|
|
onContactSyncComplete() {
|
|
this.contactSync = true;
|
|
this.update();
|
|
},
|
|
onGroupSyncComplete() {
|
|
this.groupSync = true;
|
|
this.update();
|
|
},
|
|
update() {
|
|
if (this.contactSync && this.groupSync) {
|
|
this.dispatchEvent(new Event('success'));
|
|
this.cleanup();
|
|
}
|
|
},
|
|
onTimeout() {
|
|
if (this.contactSync || this.groupSync) {
|
|
this.dispatchEvent(new Event('success'));
|
|
} else {
|
|
this.dispatchEvent(new Event('timeout'));
|
|
}
|
|
this.cleanup();
|
|
},
|
|
cleanup() {
|
|
clearTimeout(this.timeout);
|
|
delete this.listeners;
|
|
},
|
|
});
|
|
|
|
textsecure.SyncRequest = function SyncRequestWrapper() {
|
|
const syncRequest = new SyncRequest();
|
|
this.addEventListener = syncRequest.addEventListener.bind(syncRequest);
|
|
this.removeEventListener = syncRequest.removeEventListener.bind(
|
|
syncRequest
|
|
);
|
|
};
|
|
|
|
textsecure.SyncRequest.prototype = {
|
|
constructor: textsecure.SyncRequest,
|
|
};
|
|
})();
|