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