/* 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, }; })();