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.
		
		
		
		
		
			
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
| /*
 | |
|  * vim: ts=4:sw=4:expandtab
 | |
|  */
 | |
| ;(function() {
 | |
|     'use strict';
 | |
|     window.Whisper = window.Whisper || {};
 | |
|     var Item = Backbone.Model.extend({
 | |
|       database: Whisper.Database,
 | |
|       storeName: 'items'
 | |
|     });
 | |
|     var ItemCollection = Backbone.Collection.extend({
 | |
|         model: Item,
 | |
|         storeName: 'items',
 | |
|         database: Whisper.Database,
 | |
|     });
 | |
| 
 | |
|     var ready = false;
 | |
|     var items = new ItemCollection();
 | |
|     items.on('reset', function() { ready = true; });
 | |
|     window.storage = {
 | |
|         /*****************************
 | |
|         *** Base Storage Routines ***
 | |
|         *****************************/
 | |
|         put: function(key, value) {
 | |
|             if (value === undefined)
 | |
|                 throw new Error("Tried to store undefined");
 | |
|             var item = items.add({id: key, value: value});
 | |
|             item.save();
 | |
|         },
 | |
| 
 | |
|         get: function(key, defaultValue) {
 | |
|             var item = items.get("" + key);
 | |
|             if (!item)
 | |
|                 return defaultValue;
 | |
|             return item.get('value');
 | |
|         },
 | |
| 
 | |
|         remove: function(key) {
 | |
|             var item = items.get("" + key);
 | |
|             if (item) {
 | |
|                 items.remove(item);
 | |
|                 item.destroy();
 | |
|             }
 | |
|         },
 | |
| 
 | |
|         onready: function(callback) {
 | |
|             if (ready) {
 | |
|                 callback();
 | |
|             } else {
 | |
|                 items.on('reset', callback);
 | |
|             }
 | |
|         },
 | |
| 
 | |
|         fetch: function() {
 | |
|             return new Promise(function(resolve) {
 | |
|                 items.fetch({reset: true}).always(resolve);
 | |
|             });
 | |
|         }
 | |
|     };
 | |
|     window.textsecure = window.textsecure || {};
 | |
|     window.textsecure.storage = window.textsecure.storage || {};
 | |
|     window.textsecure.storage.impl = window.storage;
 | |
| })();
 |