1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-12-01 04:43:29 +03:00

update indexeddb store to store member events, not profile information

This commit is contained in:
Bruno Windels
2018-07-30 15:24:43 +02:00
parent c618ce4625
commit 0364af7337

View File

@@ -34,8 +34,8 @@ function createDatabase(db) {
} }
function upgradeSchemaV2(db) { function upgradeSchemaV2(db) {
const llMembersStore = db.createObjectStore("lazy_loaded_members", { keyPath: ["roomId", "userId"]}); const oobMembersStore = db.createObjectStore("oob_membership_events", { keyPath: ["room_id", "state_key"]});
llMembersStore.createIndex("room", "roomId"); oobMembersStore.createIndex("room", "room_id");
} }
/** /**
@@ -197,25 +197,20 @@ LocalIndexedDBStoreBackend.prototype = {
getOutOfBandMembers: function(roomId) { getOutOfBandMembers: function(roomId) {
return new Promise((resolve, reject) =>{ return new Promise((resolve, reject) =>{
const tx = this.db.transaction(["lazy_loaded_members"], "readonly"); const tx = this.db.transaction(["oob_membership_events"], "readonly");
const store = tx.objectStore("lazy_loaded_members"); const store = tx.objectStore("oob_membership_events");
const roomIndex = store.index("room"); const roomIndex = store.index("room");
const range = IDBKeyRange.only(roomId); const range = IDBKeyRange.only(roomId);
const request = roomIndex.openCursor(range); const request = roomIndex.openCursor(range);
const members = []; const membershipEvents = [];
request.onsuccess = (event) => { request.onsuccess = (event) => {
const cursor = event.target.result; const cursor = event.target.result;
if (!cursor) { if (!cursor) {
return resolve(members); return resolve(membershipEvents);
} }
const record = cursor.value; const record = cursor.value;
members.push({ membershipEvents.push(record);
userId: record.userId,
displayName: record.displayName,
membership: record.membership,
avatarUrl: record.avatarUrl,
});
cursor.continue(); cursor.continue();
}; };
request.onerror = (err) => { request.onerror = (err) => {
@@ -224,21 +219,14 @@ LocalIndexedDBStoreBackend.prototype = {
}); });
}, },
setOutOfBandMembers: function(roomId, members) { setOutOfBandMembers: function(roomId, membershipEvents) {
function ignoreResult() {}; function ignoreResult() {};
// run everything in a promise so anything that throws will reject // run everything in a promise so anything that throws will reject
return new Promise((resolve) =>{ return new Promise((resolve) =>{
const tx = this.db.transaction(["lazy_loaded_members"], "readwrite"); const tx = this.db.transaction(["oob_membership_events"], "readwrite");
const store = tx.objectStore("lazy_loaded_members"); const store = tx.objectStore("oob_membership_events");
const puts = members.map((m) => { const puts = membershipEvents.map((e) => {
const record = { let putPromise = promiseifyRequest(store.put(e));
roomId: roomId,
userId: m.userId,
displayName: m.displayName,
avatarUrl: m.avatarUrl,
membership: m.membership
};
let putPromise = promiseifyRequest(store.put(record));
return putPromise.then(ignoreResult); return putPromise.then(ignoreResult);
}); });
resolve(Promise.all(puts).then(ignoreResult)); resolve(Promise.all(puts).then(ignoreResult));