Add support for migrating old SessionRecords
Attempt to upgrade old SessionRecords based on their version. You only need this if you must support existing data.
This commit is contained in:
parent
7b21a4bed4
commit
5043fb5fb8
32
dist/libsignal-protocol.js
vendored
32
dist/libsignal-protocol.js
vendored
@ -35555,6 +35555,36 @@ Internal.SessionRecord = function() {
|
||||
return JSON.stringify(ensureStringed(thing)); //TODO: jquery???
|
||||
}
|
||||
|
||||
var migrations = [
|
||||
{
|
||||
version: 'v1',
|
||||
migrate: function migrateV1(data) {
|
||||
var sessions = data.sessions;
|
||||
if (data.registrationId) {
|
||||
for (var key in sessions) {
|
||||
if (!sessions[key].registrationId) {
|
||||
sessions[key].registrationId = data.registrationId;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
function migrate(data) {
|
||||
var run = (data.version === undefined);
|
||||
for (var i=0; i < migrations.length; ++i) {
|
||||
if (run) {
|
||||
migrations[i].migrate(data);
|
||||
} else if (migrations[i].version === data.version) {
|
||||
run = true;
|
||||
}
|
||||
}
|
||||
if (!run) {
|
||||
throw new Error("Error migrating SessionRecord");
|
||||
}
|
||||
}
|
||||
|
||||
var SessionRecord = function() {
|
||||
this._sessions = {};
|
||||
this.version = SESSION_RECORD_VERSION;
|
||||
@ -35562,6 +35592,8 @@ Internal.SessionRecord = function() {
|
||||
|
||||
SessionRecord.deserialize = function(serialized) {
|
||||
var data = JSON.parse(serialized);
|
||||
if (data.version !== SESSION_RECORD_VERSION) { migrate(data); }
|
||||
|
||||
var record = new SessionRecord();
|
||||
record._sessions = data.sessions;
|
||||
if (record._sessions === undefined || record._sessions === null || typeof record._sessions !== "object" || Array.isArray(record._sessions)) {
|
||||
|
||||
@ -56,6 +56,36 @@ Internal.SessionRecord = function() {
|
||||
return JSON.stringify(ensureStringed(thing)); //TODO: jquery???
|
||||
}
|
||||
|
||||
var migrations = [
|
||||
{
|
||||
version: 'v1',
|
||||
migrate: function migrateV1(data) {
|
||||
var sessions = data.sessions;
|
||||
if (data.registrationId) {
|
||||
for (var key in sessions) {
|
||||
if (!sessions[key].registrationId) {
|
||||
sessions[key].registrationId = data.registrationId;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
function migrate(data) {
|
||||
var run = (data.version === undefined);
|
||||
for (var i=0; i < migrations.length; ++i) {
|
||||
if (run) {
|
||||
migrations[i].migrate(data);
|
||||
} else if (migrations[i].version === data.version) {
|
||||
run = true;
|
||||
}
|
||||
}
|
||||
if (!run) {
|
||||
throw new Error("Error migrating SessionRecord");
|
||||
}
|
||||
}
|
||||
|
||||
var SessionRecord = function() {
|
||||
this._sessions = {};
|
||||
this.version = SESSION_RECORD_VERSION;
|
||||
@ -63,6 +93,8 @@ Internal.SessionRecord = function() {
|
||||
|
||||
SessionRecord.deserialize = function(serialized) {
|
||||
var data = JSON.parse(serialized);
|
||||
if (data.version !== SESSION_RECORD_VERSION) { migrate(data); }
|
||||
|
||||
var record = new SessionRecord();
|
||||
record._sessions = data.sessions;
|
||||
if (record._sessions === undefined || record._sessions === null || typeof record._sessions !== "object" || Array.isArray(record._sessions)) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user