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.
		
		
		
		
		
			
		
			
				
	
	
		
			140 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			140 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
| /*
 | |
|  * vim: ts=4:sw=4:expandtab
 | |
|  */
 | |
| 
 | |
| (function () {
 | |
|     'use strict';
 | |
|     window.Whisper             = window.Whisper             || {};
 | |
|     window.Whisper.Database    = window.Whisper.Database    || {};
 | |
|     window.Whisper.Database.id = window.Whisper.Database.id || 'signal';
 | |
|     window.Whisper.Database.nolog = true;
 | |
| 
 | |
|     Whisper.Database.migrations = [
 | |
|         {
 | |
|             version: "1.0",
 | |
|             migrate: function(transaction, next) {
 | |
|                 console.log('migration 1.0');
 | |
|                 console.log('creating object stores');
 | |
|                 var messages = transaction.db.createObjectStore("messages");
 | |
|                 messages.createIndex("conversation", ["conversationId", "received_at"], { unique: false });
 | |
|                 messages.createIndex("receipt", "sent_at", { unique: false });
 | |
| 
 | |
|                 var conversations = transaction.db.createObjectStore("conversations");
 | |
|                 conversations.createIndex("inbox", "active_at", { unique: false });
 | |
|                 conversations.createIndex("group", "members", { unique: false, multiEntry: true });
 | |
|                 conversations.createIndex("type", "type", { unique: false });
 | |
| 
 | |
|                 var groups = transaction.db.createObjectStore('groups');
 | |
| 
 | |
|                 var sessions = transaction.db.createObjectStore('sessions');
 | |
|                 var identityKeys = transaction.db.createObjectStore('identityKeys');
 | |
| 
 | |
|                 var preKeys = transaction.db.createObjectStore("preKeys");
 | |
|                 var signedPreKeys = transaction.db.createObjectStore("signedPreKeys");
 | |
| 
 | |
|                 var items = transaction.db.createObjectStore("items");
 | |
|                 next();
 | |
|             }
 | |
|         },
 | |
|         {
 | |
|             version: "2.0",
 | |
|             migrate: function(transaction, next) {
 | |
|                 console.log('migration 2.0');
 | |
|                 var conversations = transaction.objectStore("conversations");
 | |
|                 conversations.createIndex("search", "tokens", { unique: false, multiEntry: true });
 | |
| 
 | |
|                 window.addEventListener('storage_ready', function() {
 | |
|                     console.log('migrating search tokens');
 | |
|                     var all = new Whisper.ConversationCollection();
 | |
|                     all.fetch().then(function() {
 | |
|                         all.each(function(model) {
 | |
|                             model.updateTokens();
 | |
|                             model.save();
 | |
|                         });
 | |
|                     });
 | |
|                 });
 | |
|                 next();
 | |
|             }
 | |
|         },
 | |
|         {
 | |
|             version: "3.0",
 | |
|             migrate: function(transaction, next) {
 | |
|                 console.log('migration 3.0');
 | |
|                 var conversations = transaction.objectStore("items");
 | |
| 
 | |
|                 window.addEventListener('storage_ready', function() {
 | |
|                     console.log('migrating unread count');
 | |
|                     var all = new Whisper.ConversationCollection();
 | |
|                     all.fetch().then(function() {
 | |
|                         var unreadCount = all.reduce(function(total, model) {
 | |
|                             var count = model.get('unreadCount');
 | |
|                             if (count === undefined) {
 | |
|                                 count = 0;
 | |
|                             }
 | |
|                             return total + count;
 | |
|                         }, 0);
 | |
|                         storage.remove('unreadCount');
 | |
|                         storage.put('unreadCount', unreadCount);
 | |
|                     });
 | |
|                 });
 | |
|                 next();
 | |
|             }
 | |
|         },
 | |
|         {
 | |
|             version: "4.0",
 | |
|             migrate: function(transaction, next) {
 | |
|                 console.log('migration 4.0');
 | |
|                 window.addEventListener('storage_ready', function() {
 | |
|                     console.log('migrating search tokens');
 | |
|                     var all = new Whisper.ConversationCollection();
 | |
|                     all.fetch().then(function() {
 | |
|                         all.each(function(c) {
 | |
|                             c.updateTokens();
 | |
|                             c.save();
 | |
|                         });
 | |
|                     });
 | |
|                 });
 | |
|                 next();
 | |
|             }
 | |
|         },
 | |
|         {
 | |
|             version: "5.0",
 | |
|             migrate: function(transaction, next) {
 | |
|                 console.log('migration 5.0');
 | |
|                 window.addEventListener('storage_ready', function() {
 | |
|                     console.log('migrating registration flags');
 | |
|                     if (storage.get("chromiumRegistrationDone") === "") {
 | |
|                         storage.put("chromiumRegistrationDoneEver", "");
 | |
|                     }
 | |
|                 });
 | |
|                 next();
 | |
|             }
 | |
|         },
 | |
|         {
 | |
|             version: "6.0",
 | |
|             migrate: function(transaction, next) {
 | |
|                 console.log('migration 6.0');
 | |
|                 window.addEventListener('storage_ready', function() {
 | |
|                     console.log('migrating registration flags');
 | |
|                     storage.onready(function() {
 | |
|                         if (storage.get("chromiumRegistrationDone") === "") {
 | |
|                             storage.put("chromiumRegistrationDoneEver", "");
 | |
|                             next();
 | |
|                         }
 | |
|                     });
 | |
|                 });
 | |
|                 next();
 | |
|             }
 | |
|         },
 | |
|         {
 | |
|             version: "7.0",
 | |
|             migrate: function(transaction, next) {
 | |
|                 console.log('migration 7.0');
 | |
|                 console.log('creating debug log');
 | |
|                 transaction.db.createObjectStore("debug");
 | |
|                 next();
 | |
|             }
 | |
|         }
 | |
|     ];
 | |
| }());
 |