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.
		
		
		
		
		
			
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
/* global , Whisper, storage */
 | 
						|
/* global textsecure: false */
 | 
						|
 | 
						|
/* eslint-disable more/no-then */
 | 
						|
 | 
						|
// eslint-disable-next-line func-names
 | 
						|
(function() {
 | 
						|
  'use strict';
 | 
						|
 | 
						|
  window.Whisper = window.Whisper || {};
 | 
						|
 | 
						|
  const blockedNumbers = new Whisper.BlockedNumberCollection();
 | 
						|
  window.getBlockedNumbers = () => blockedNumbers;
 | 
						|
 | 
						|
  window.BlockedNumberController = {
 | 
						|
    reset() {
 | 
						|
      this.unblockAll();
 | 
						|
      blockedNumbers.reset([]);
 | 
						|
    },
 | 
						|
    refresh() {
 | 
						|
      window.log.info('BlockedNumberController: starting initial fetch');
 | 
						|
 | 
						|
      if (!storage) {
 | 
						|
        throw new Error(
 | 
						|
          'BlockedNumberController: Could not load blocked numbers'
 | 
						|
        );
 | 
						|
      }
 | 
						|
 | 
						|
      // Add the numbers to the collection
 | 
						|
      const numbers = storage.getBlockedNumbers();
 | 
						|
      blockedNumbers.reset(numbers.map(number => ({ number })));
 | 
						|
    },
 | 
						|
    block(number) {
 | 
						|
      const ourNumber = textsecure.storage.user.getNumber();
 | 
						|
 | 
						|
      // Make sure we don't block ourselves
 | 
						|
      if (ourNumber === number) {
 | 
						|
        window.log.info('BlockedNumberController: Cannot block yourself!');
 | 
						|
        return;
 | 
						|
      }
 | 
						|
 | 
						|
      storage.addBlockedNumber(number);
 | 
						|
 | 
						|
      // Make sure we don't add duplicates
 | 
						|
      if (blockedNumbers.getModel(number)) return;
 | 
						|
 | 
						|
      blockedNumbers.add({ number });
 | 
						|
    },
 | 
						|
    unblock(number) {
 | 
						|
      storage.removeBlockedNumber(number);
 | 
						|
 | 
						|
      // Remove the model from our collection
 | 
						|
      const model = blockedNumbers.getModel(number);
 | 
						|
      if (model) {
 | 
						|
        blockedNumbers.remove(model);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    unblockAll() {
 | 
						|
      const numbers = blockedNumbers.map(m => m.get('number'));
 | 
						|
      numbers.forEach(n => this.unblock(n));
 | 
						|
    },
 | 
						|
    isBlocked(number) {
 | 
						|
      return storage.isBlocked(number);
 | 
						|
    },
 | 
						|
  };
 | 
						|
})();
 |