You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-08-09 10:22:46 +03:00
Remove old (de)serialize stuff. Inline more things
This commit is contained in:
@@ -19,7 +19,6 @@ limitations under the License.
|
|||||||
*/
|
*/
|
||||||
const EventEmitter = require("events").EventEmitter;
|
const EventEmitter = require("events").EventEmitter;
|
||||||
const utils = require("../utils");
|
const utils = require("../utils");
|
||||||
const MatrixEvent = require("./event").MatrixEvent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new User. A User must have an ID and can optionally have extra
|
* Construct a new User. A User must have an ID and can optionally have extra
|
||||||
@@ -61,27 +60,6 @@ function User(userId) {
|
|||||||
}
|
}
|
||||||
utils.inherits(User, EventEmitter);
|
utils.inherits(User, EventEmitter);
|
||||||
|
|
||||||
/**
|
|
||||||
* Deserialize this user from a JSON object.
|
|
||||||
* @static
|
|
||||||
* @param {Object} obj The User object from User.serialize().
|
|
||||||
* @return {User} A user
|
|
||||||
*/
|
|
||||||
User.deserialize = function(obj) {
|
|
||||||
const user = new User(obj.userId);
|
|
||||||
if (obj.event) {
|
|
||||||
user.setPresenceEvent(new MatrixEvent(obj.event));
|
|
||||||
}
|
|
||||||
return user;
|
|
||||||
};
|
|
||||||
|
|
||||||
User.prototype.serialize = function() {
|
|
||||||
return {
|
|
||||||
userId: this.userId,
|
|
||||||
event: (this.events.presence ? this.events.presence.event : null),
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update this User with the given presence event. May fire "User.presence",
|
* Update this User with the given presence event. May fire "User.presence",
|
||||||
* "User.avatarUrl" and/or "User.displayName" if this event updates this user's
|
* "User.avatarUrl" and/or "User.displayName" if this event updates this user's
|
||||||
|
@@ -89,13 +89,17 @@ IndexedDBStoreBackend.prototype = {
|
|||||||
* @return {Promise} Resolves if the data was persisted.
|
* @return {Promise} Resolves if the data was persisted.
|
||||||
*/
|
*/
|
||||||
persistSyncData: function(nextBatch, roomsData) {
|
persistSyncData: function(nextBatch, roomsData) {
|
||||||
const obj = {
|
|
||||||
clobber: "-", // constant key so will always clobber
|
|
||||||
nextBatch: nextBatch,
|
|
||||||
roomsData: roomsData,
|
|
||||||
};
|
|
||||||
console.log("persisting sync data");
|
console.log("persisting sync data");
|
||||||
return this._upsert("sync", [obj]);
|
return q.try(() => {
|
||||||
|
const txn = this.db.transaction(["sync"], "readwrite");
|
||||||
|
const store = txn.objectStore("sync");
|
||||||
|
store.put({
|
||||||
|
clobber: "-", // constant key so will always clobber
|
||||||
|
nextBatch: nextBatch,
|
||||||
|
roomsData: roomsData,
|
||||||
|
}); // put == UPSERT
|
||||||
|
return promiseifyTxn(txn);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -122,7 +126,19 @@ IndexedDBStoreBackend.prototype = {
|
|||||||
* @return {Promise} Resolves if the users were persisted.
|
* @return {Promise} Resolves if the users were persisted.
|
||||||
*/
|
*/
|
||||||
persistUsers: function(users) {
|
persistUsers: function(users) {
|
||||||
return this._upsert("users", users);
|
return q.try(() => {
|
||||||
|
const txn = this.db.transaction(["users"], "readwrite");
|
||||||
|
const store = txn.objectStore("users");
|
||||||
|
for (let i = 0; i < users.length; i++) {
|
||||||
|
store.put({
|
||||||
|
userId: users[i].userId,
|
||||||
|
event: (users[i].events.presence ?
|
||||||
|
users[i].events.presence.event :
|
||||||
|
null),
|
||||||
|
}); // put == UPSERT
|
||||||
|
}
|
||||||
|
return promiseifyTxn(txn);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -130,7 +146,17 @@ IndexedDBStoreBackend.prototype = {
|
|||||||
* @return {Promise<User[]>} A list of users.
|
* @return {Promise<User[]>} A list of users.
|
||||||
*/
|
*/
|
||||||
loadUsers: function() {
|
loadUsers: function() {
|
||||||
return this._deserializeAll("users", User);
|
return q.try(() => {
|
||||||
|
const txn = this.db.transaction(["users"], "readonly");
|
||||||
|
const store = txn.objectStore("users");
|
||||||
|
return selectQuery(store, undefined, (cursor) => {
|
||||||
|
const user = new User(cursor.value.userId);
|
||||||
|
if (cursor.value.event) {
|
||||||
|
user.setPresenceEvent(new MatrixEvent(cursor.value.event));
|
||||||
|
}
|
||||||
|
return user;
|
||||||
|
});
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -165,31 +191,6 @@ IndexedDBStoreBackend.prototype = {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_upsert: function(storeName, rows) {
|
|
||||||
return q.try(() => {
|
|
||||||
const txn = this.db.transaction([storeName], "readwrite");
|
|
||||||
const store = txn.objectStore(storeName);
|
|
||||||
for (let i = 0; i < rows.length; i++) {
|
|
||||||
if (typeof rows[i].serialize === "function") {
|
|
||||||
store.put(rows[i].serialize()); // put == UPSERT
|
|
||||||
} else {
|
|
||||||
store.put(rows[i]); // put == UPSERT
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return promiseifyTxn(txn);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
_deserializeAll: function(storeName, Cls) {
|
|
||||||
return q.try(() => {
|
|
||||||
const txn = this.db.transaction([storeName], "readonly");
|
|
||||||
const store = txn.objectStore(storeName);
|
|
||||||
return selectQuery(store, undefined, (cursor) => {
|
|
||||||
return Cls.deserialize(cursor.value);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user