A store for most of the data js-sdk needs to store, apart from crypto data

Hierarchy (View Summary)

Constructors

  • 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!");
    }
    });

    Parameters

    • opts: IOpts

      Options object.

    Returns IndexedDBStore

Properties

accountData: Map<string, MatrixEvent> = ...

The backend instance. Call through to this API if you need to perform specific indexeddb actions like deleting the database.

clearOutOfBandMembers: DegradableFn<[roomId: string], void> = ...
createUser?: UserCreator
deleteAllData: DegradableFn<[], void> = ...

Delete all data from this store.

Promise which resolves if the data was deleted from the database.

getClientOptions: DegradableFn<[], undefined | IStoredClientOpts> = ...
getOutOfBandMembers: DegradableFn<
    [roomId: string],
    null | IStateEventWithRoomId[],
> = ...

Returns 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

getSavedSync: DegradableFn<[], null | ISavedSync> = ...

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.

getSavedSyncToken: DegradableFn<[], null | string> = ...

If there is a saved sync, the nextBatch token for this sync, otherwise null.

isNewlyCreated: DegradableFn<[], boolean> = ...

whether or not the database was newly created in this session.

localStorage?: Storage
setOutOfBandMembers: DegradableFn<
    [roomId: string, membershipEvents: IStateEventWithRoomId[]],
    void,
> = ...

Stores 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

setSyncData: DegradableFn<[syncData: ISyncResponse], void> = ...

setSyncData does nothing as there is no backing data store.

The sync data

An immediately resolved promise.

storeClientOptions: DegradableFn<[options: IStoredClientOpts], void> = ...

Methods

  • Retrieve a filter ID with the given name.

    Parameters

    • filterName: string

      The filter name.

    Returns null | string

    The filter ID or null.

  • Possibly write data to the database.

    Parameters

    • force: boolean = false

      True to force a save to happen

    Returns Promise<void>

    Promise resolves after the write completes (or immediately if no write is performed)

  • Retrieve scrollback for this room.

    Parameters

    • room: Room

      The matrix room

    • limit: number

      The max number of old events to retrieve.

    Returns MatrixEvent[]

    An array of objects which will be at most 'limit' length and at least 0. The objects are the raw event JSON.

  • Store events for a room. The events have already been added to the timeline

    Parameters

    • room: Room

      The room to store events for.

    • events: MatrixEvent[]

      The events to store.

    • token: null | string

      The token associated with these events.

    • toStart: boolean

      True if these are paginated results.

    Returns void

  • Whether this store would like to save its data Note that obviously whether the store wants to save or not could change between calling this function and calling save().

    Returns boolean

    True if calling save() will actually save (at the time this function is called).