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);
let client = sdk.createClient({
store: store,
});
await store.startup(); // load from indexed db, must be called after createClient
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.
Protected
Optional
createDelete 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
localAdds the listener
function to the end of the listeners array for the
event named event
.
No checks are made to see if the listener
has already been added. Multiple calls
passing the same combination of event
and listener
will result in the listener
being added, and called, multiple times.
By default, event listeners are invoked in the order they are added. The TypedEventEmitter#prependListener method can be used as an alternative to add the event listener to the beginning of the listeners array.
The name of the event.
The callback function
a reference to the EventEmitter
, so that calls can be chained.
Private
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.
The degradable work to do.
Optional
fallback: keyof MemoryStoreThe method name for fallback.
A wrapped member function.
Get account data event by event type
The event type being queried
the user account_data event of given type, if any
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.
The matrix room
The max number of old events to retrieve.
An array of objects which will be at most 'limit' length and at least 0. The objects are the raw event JSON.
Set the user creator which is used for creating User objects
A callback that accepts an user-id and returns an User object
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.
Store a filter.
Store the given room.
The room to be stored. All properties must be stored.
Store a User.
The user to store.
Static
existsGenerated using TypeDoc
A store for most of the data js-sdk needs to store, apart from crypto data