123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /*
- * vim: ts=4:sw=4:expandtab
- */
- ;(function () {
- 'use strict';
- window.textsecure = window.textsecure || {};
- function SyncRequest(sender, receiver) {
- if (!(sender instanceof textsecure.MessageSender) || !(receiver instanceof textsecure.MessageReceiver)) {
- throw new Error('Tried to construct a SyncRequest without MessageSender and MessageReceiver');
- }
- this.receiver = receiver;
- this.oncontact = this.onContactSyncComplete.bind(this);
- receiver.addEventListener('contactsync', this.oncontact);
- this.ongroup = this.onGroupSyncComplete.bind(this);
- receiver.addEventListener('groupsync', this.ongroup);
- sender.sendRequestContactSyncMessage().then(function() {
- sender.sendRequestGroupSyncMessage();
- });
- this.timeout = setTimeout(this.onTimeout.bind(this), 60000);
- }
- SyncRequest.prototype = new textsecure.EventTarget();
- SyncRequest.prototype.extend({
- constructor: SyncRequest,
- onContactSyncComplete: function() {
- this.contactSync = true;
- this.update();
- },
- onGroupSyncComplete: function() {
- this.groupSync = true;
- this.update();
- },
- update: function() {
- if (this.contactSync && this.groupSync) {
- this.dispatchEvent(new Event('success'));
- this.cleanup();
- }
- },
- onTimeout: function() {
- if (this.contactSync || this.groupSync) {
- this.dispatchEvent(new Event('success'));
- } else {
- this.dispatchEvent(new Event('timeout'));
- }
- this.cleanup();
- },
- cleanup: function() {
- clearTimeout(this.timeout);
- this.receiver.removeEventListener('contactsync', this.oncontact);
- this.receiver.removeEventListener('groupSync', this.ongroup);
- delete this.listeners;
- }
- });
- textsecure.SyncRequest = function(sender, receiver) {
- var syncRequest = new SyncRequest(sender, receiver);
- this.addEventListener = syncRequest.addEventListener.bind(syncRequest);
- this.removeEventListener = syncRequest.removeEventListener.bind(syncRequest);
- };
- textsecure.SyncRequest.prototype = {
- constructor: textsecure.SyncRequest
- };
- }());
|