Skip to content

IndexedDBStore

Defined in: src/store/indexeddb.ts:62

new IndexedDBStore(opts): IndexedDBStore

Defined in: src/store/indexeddb.ts:104

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

IOpts

Options object.

IndexedDBStore

MemoryStore.constructor

_backend: IIndexedDBBackend

Defined in: src/store/indexeddb.ts:67


accountData: Map<string, DigitalWorldEvent>

Defined in: src/store/memory.ts:60

MemoryStore.accountData


clearOutOfBandMembers: DegradableFn<[string], void>

Defined in: src/store/indexeddb.ts:300

MemoryStore.clearOutOfBandMembers


deleteAllData: DegradableFn<[], void>

Defined in: src/store/indexeddb.ts:211

Delete all data from this store.

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

MemoryStore.deleteAllData


getClientOptions: DegradableFn<[], IStoredClientOpts | undefined>

Defined in: src/store/indexeddb.ts:305

MemoryStore.getClientOptions


getOutOfBandMembers: DegradableFn<[string], IStateEventWithRoomId[] | null>

Defined in: src/store/indexeddb.ts:281

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

MemoryStore.getOutOfBandMembers


getSavedSync: DegradableFn<[], ISavedSync | null>

Defined in: src/store/indexeddb.ts:190

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.

MemoryStore.getSavedSync


getSavedSyncToken: DegradableFn<[], string | null>

Defined in: src/store/indexeddb.ts:203

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

MemoryStore.getSavedSyncToken


isNewlyCreated: DegradableFn<[], boolean>

Defined in: src/store/indexeddb.ts:195

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

MemoryStore.isNewlyCreated


setOutOfBandMembers: DegradableFn<[string, IStateEventWithRoomId[]], void>

Defined in: src/store/indexeddb.ts:292

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

membershipEvents

the membership events to store

when all members have been stored

MemoryStore.setOutOfBandMembers


setSyncData: DegradableFn<[ISyncResponse], void>

Defined in: src/store/indexeddb.ts:271

setSyncData does nothing as there is no backing data store.

syncData

The sync data

An immediately resolved promise.

MemoryStore.setSyncData


storeClientOptions: DegradableFn<[IStoredClientOpts], void>

Defined in: src/store/indexeddb.ts:309

MemoryStore.storeClientOptions


readonly userProfiles: Map<string, SyncUserProfile>

Defined in: src/store/memory.ts:68

MemoryStore.userProfiles

get backend(): IIndexedDBBackend

Defined in: src/store/indexeddb.ts:122

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

IIndexedDBBackend

destroy(): Promise<void>

Defined in: src/store/indexeddb.ts:177

Stop the store and perform any appropriate cleanup

Promise<void>

MemoryStore.destroy


getAccountData(eventType): DigitalWorldEvent | undefined

Defined in: src/store/memory.ts:306

Get account data event by event type

string

The event type being queried

DigitalWorldEvent | undefined

the user account_data event of given type, if any

MemoryStore.getAccountData


getFilter(userId, filterId): Filter | null

Defined in: src/store/memory.ts:238

Retrieve a filter.

string

string

Filter | null

A filter or null.

MemoryStore.getFilter


getFilterIdByName(filterName): string | null

Defined in: src/store/memory.ts:247

Retrieve a filter ID with the given name.

string

The filter name.

string | null

The filter ID or null.

MemoryStore.getFilterIdByName


getOldestToDeviceBatch(): Promise<IndexedToDeviceBatch | null>

Defined in: src/store/indexeddb.ts:393

Fetches the oldest batch of to-device messages in the queue

Promise<IndexedToDeviceBatch | null>

MemoryStore.getOldestToDeviceBatch


getPendingEvents(roomId): Promise<Partial<IEvent>[]>

Defined in: src/store/indexeddb.ts:365

string

Promise<Partial<IEvent>[]>

MemoryStore.getPendingEvents


getRoom(roomId): Room | null

Defined in: src/store/memory.ts:147

Retrieve a room by its’ room ID.

string

The room ID.

Room | null

The room or null.

MemoryStore.getRoom


getRooms(): Room[]

Defined in: src/store/memory.ts:155

Retrieve all known rooms.

Room[]

A list of rooms, which may be empty.

MemoryStore.getRooms


getRoomSummaries(): RoomSummary[]

Defined in: src/store/memory.ts:173

Retrieve a summary of all the rooms.

RoomSummary[]

A summary of each room.

MemoryStore.getRoomSummaries


getSyncToken(): string | null

Defined in: src/store/memory.ts:82

Retrieve the token to stream from.

string | null

The token or null.

MemoryStore.getSyncToken


getUser(userId): User | null

Defined in: src/store/memory.ts:192

Retrieve a User by its’ user ID.

string

The user ID.

User | null

The user or null.

MemoryStore.getUser


getUserProfile(userId): Promise<SyncUserProfile | undefined>

Defined in: src/store/indexeddb.ts:401

Retrieve a stored user profile for the given user ID, if it exists.

string

The user ID to retrieve the profile for.

Promise<SyncUserProfile | undefined>

The stored profile, or undefined if no profile is stored for this user ID.

MemoryStore.getUserProfile


getUsers(): User[]

Defined in: src/store/memory.ts:200

Retrieve all known users.

User[]

A list of users, which may be empty.

MemoryStore.getUsers


on(event, handler): void

Defined in: src/store/indexeddb.ts:127

Re-exports TypedEventEmitter.on

EventEmitterEvents | "degraded" | "closed"

(…args) => void

void


removeEventsFromRoom(roomId, eventIds): Promise<void>

Defined in: src/store/memory.ts:458

Remove all stored events matching the given IDs from the stored accumulated sync.

string

The target room.

string[]

IDs of events to remove.

Promise<void>

MemoryStore.removeEventsFromRoom


removeRoom(roomId): void

Defined in: src/store/memory.ts:162

Permanently delete a room.

string

void

MemoryStore.removeRoom


removeToDeviceBatch(id): Promise<void>

Defined in: src/store/indexeddb.ts:397

Removes a specific batch of to-device messages from the queue

number

Promise<void>

MemoryStore.removeToDeviceBatch


removeUserProfiles(userIds): Promise<void>

Defined in: src/store/indexeddb.ts:409

Delete stored profiles for the given users.

string[]

The user IDs whose profiles should be deleted.

Promise<void>

MemoryStore.removeUserProfiles


save(force?): Promise<void>

Defined in: src/store/indexeddb.ts:245

Possibly write data to the database.

boolean = false

True to force a save to happen

Promise<void>

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

MemoryStore.save


saveToDeviceBatches(batches): Promise<void>

Defined in: src/store/indexeddb.ts:389

Stores batches of outgoing to-device messages

ToDeviceBatchWithTxnId[]

Promise<void>

MemoryStore.saveToDeviceBatches


scrollback(room, limit): DigitalWorldEvent[]

Defined in: src/store/memory.ts:211

Retrieve scrollback for this room.

Room

The room

number

The max number of old events to retrieve.

DigitalWorldEvent[]

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

MemoryStore.scrollback


setFilterIdByName(filterName, filterId?): void

Defined in: src/store/memory.ts:269

Set a filter name to ID mapping.

string

string

void

MemoryStore.setFilterIdByName


setPendingEvents(roomId, events): Promise<void>

Defined in: src/store/indexeddb.ts:379

string

Partial<IEvent>[]

Promise<void>

MemoryStore.setPendingEvents


setSyncToken(token): void

Defined in: src/store/memory.ts:95

Set the token to stream from.

string

The token to stream from.

void

MemoryStore.setSyncToken


setUserCreator(creator): void

Defined in: src/store/memory.ts:114

Set the user creator which is used for creating User objects

UserCreator

A callback that accepts an user-id and returns an User object

void

MemoryStore.setUserCreator


startup(): Promise<void>

Defined in: src/store/indexeddb.ts:134

Promise<void>

Resolved when loaded from indexed db.

MemoryStore.startup


storeAccountDataEvents(events): void

Defined in: src/store/memory.ts:289

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.

DigitalWorldEvent[]

The events to store.

void

MemoryStore.storeAccountDataEvents


storeEvents(room, events, token, toStart): void

Defined in: src/store/memory.ts:222

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

Room

The room to store events for.

DigitalWorldEvent[]

The events to store.

string | null

The token associated with these events.

boolean

True if these are paginated results.

void

MemoryStore.storeEvents


storeFilter(filter): void

Defined in: src/store/memory.ts:229

Store a filter.

Filter

void

MemoryStore.storeFilter


storeRoom(room): void

Defined in: src/store/memory.ts:103

Store the given room.

Room

The room to be stored. All properties must be stored.

void

MemoryStore.storeRoom


storeUser(user): void

Defined in: src/store/memory.ts:183

Store a User.

User

The user to store.

void

MemoryStore.storeUser


storeUserProfiles(userProfiles): Promise<void>

Defined in: src/store/indexeddb.ts:405

Store user profile details from a sync. Existing profiles will be overwritten.

Map<string, SyncUserProfile>

A map of userIds to profiles.

Promise<void>

MemoryStore.storeUserProfiles


wantsSave(): boolean

Defined in: src/store/indexeddb.ts:233

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

boolean

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

MemoryStore.wantsSave


static exists(indexedDB, dbName): Promise<boolean>

Defined in: src/store/indexeddb.ts:63

IDBFactory

string

Promise<boolean>