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

Hierarchy (view full)

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

  • Re-exports TypedEventEmitter.on

    Parameters

    • event: "closed" | EventEmitterEvents | "degraded"
    • handler: ((...args: any[]) => void)
        • (...args): void
        • Parameters

          • Rest...args: any[]

          Returns void

    Returns void

  • 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 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.

    Parameters

    Returns void

  • 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).