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.
		
		
		
		
		
			
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
/* global , Whisper, storage, ConversationController */
 | 
						|
/* 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 = {
 | 
						|
    getAll() {
 | 
						|
      try {
 | 
						|
        this.load();
 | 
						|
      } catch (e) {
 | 
						|
        window.log.warn(e);
 | 
						|
      }
 | 
						|
      return blockedNumbers;
 | 
						|
    },
 | 
						|
    reset() {
 | 
						|
      blockedNumbers.reset([]);
 | 
						|
    },
 | 
						|
    load() {
 | 
						|
      window.log.info('BlockedNumberController: starting initial fetch');
 | 
						|
 | 
						|
      if (blockedNumbers.length) {
 | 
						|
        throw new Error('BlockedNumberController: Already loaded!');
 | 
						|
      }
 | 
						|
 | 
						|
      if (!storage) {
 | 
						|
        throw new Error('BlockedNumberController: Could not load blocked numbers');
 | 
						|
      }
 | 
						|
 | 
						|
      // Add the numbers to the collection
 | 
						|
      const numbers = storage.getBlockedNumbers();
 | 
						|
      blockedNumbers.add(
 | 
						|
        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.getNumber(number))
 | 
						|
        return;
 | 
						|
 | 
						|
      blockedNumbers.add({ number });
 | 
						|
    },
 | 
						|
    unblock(number) {
 | 
						|
      storage.removeBlockedNumber(number);
 | 
						|
 | 
						|
      // Make sure we don't add duplicates
 | 
						|
      const model = blockedNumbers.getNumber(number);
 | 
						|
      if (model) {
 | 
						|
        blockedNumbers.remove(model);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    unblockAll() {
 | 
						|
      const all = blockedNumbers.models;
 | 
						|
      all.forEach(number => {
 | 
						|
        storage.removeBlockedNumber(number);
 | 
						|
        blockedNumbers.remove(number);
 | 
						|
      });
 | 
						|
    },
 | 
						|
    isBlocked(number) {
 | 
						|
      return storage.isBlocked(number);
 | 
						|
    },
 | 
						|
  };
 | 
						|
})();
 |