Construct a new Indexed Database store, which extends MemoryStore.
This store functions like a MemoryStore except it periodically persists the contents of the store to an IndexedDB backend.
All data is still kept in-memory but can be loaded from disk by calling
startup()
. This can make startup times quicker as a complete
sync from the server is not required. This does not reduce memory usage as all
the data is eagerly fetched when startup()
is called.
let opts = { indexedDB: window.indexedDB, localStorage: window.localStorage };
let store = new IndexedDBStore(opts);
await store.startup(); // load from indexed db
let client = sdk.createClient({
store: store,
});
client.startClient();
client.on("sync", function(state, prevState, data) {
if (state === "PREPARED") {
console.log("Started up, now with go faster stripes!");
}
});
Options object.
Readonly
backendThe backend instance. Call through to this API if you need to perform specific indexeddb actions like deleting the database.
Delete all data from this store.
Promise which resolves if the data was deleted from the database.
Private
emitterReturns the out-of-band membership events for this room that were previously loaded.
the events, potentially an empty array if OOB loading didn't yield any new members
in case the members for this room haven't been stored yet
Promise which resolves with a sync response to restore the client state to where it was at the last save, or null if there is no saved sync data.
If there is a saved sync, the nextBatch token for this sync, otherwise null.
whether or not the database was newly created in this session.
Protected
Optional
Readonly
localPrivate
reallyStores the out-of-band membership events for this room. Note that it still makes sense to store an empty array as the OOB status for the room is marked as fetched, and getOutOfBandMembers will return an empty array instead of null
the membership events to store
when all members have been stored
Private
startedPrivate
syncPrivate
userPrivate
degradableAll member functions of IndexedDBStore
that access the backend use this wrapper to
watch for failures after initial store startup, including QuotaExceededError
as
free disk space changes, etc.
When IndexedDB fails via any of these paths, we degrade this back to a MemoryStore
in place so that the current operation and all future ones are in-memory only.
A wrapped member function.
The degradable work to do.
Optional
fallback: keyof MemoryStoreThe method name for fallback.
Get account data event by event type
the user account_data event of given type, if any
The event type being queried
Fetches the oldest batch of to-device messages in the queue
Retrieve a summary of all the rooms.
A summary of each room.
Private
onStores batches of outgoing to-device messages
Retrieve scrollback for this room.
An array of objects which will be at most 'limit' length and at least 0. The objects are the raw event JSON.
The matrix room
The max number of old events to retrieve.
Store user-scoped account data events. N.B. that account data only allows a single event per type, so multiple events with the same type will replace each other.
The events to store.
Store events for a room. The events have already been added to the timeline
The room to store events for.
The events to store.
The token associated with these events.
True if these are paginated results.
Static
existsGenerated using TypeDoc
A store for most of the data js-sdk needs to store, apart from crypto data