MatrixSdkDatabase class

Database based on SQlite3 on native and IndexedDB on web. For native you have to pass a Database object, which can be created with the sqflite package like this:

final database = await openDatabase('path/to/your/database');

WARNING: For android it seems like that the CursorWindow is too small for large amounts of data if you are using SQFlite. Consider using a different package to open the database like sqflite_sqlcipher or sqflite_common_ffi. Learn more at: https://github.com/famedly/matrix-dart-sdk/issues/1642#issuecomment-1865827227

Inheritance

Constructors

MatrixSdkDatabase.buildWithoutOpen(String name, {Database? database, dynamic idbFactory, DatabaseFactory? sqfliteFactory, int maxFileSize = 0, Uri? fileStorageLocation, Duration? deleteFilesAfterDuration})
Creates a new instance but does not open the database so you need to call await MatrixSdkDatabase.open(); afterwards. Should only used to extend the class or for tests.

Properties

database ↔ Database?
getter/setter pair
deleteFilesAfterDuration ↔ Duration?
latefinalinherited
fileStorageLocation ↔ Uri?
latefinalinherited
fileStoragePath → Object?
no setter
hashCode → int
The hash code for this object.
no setterinherited
idbFactory → dynamic
Custom IDBFactory used to create the indexedDB. On IO platforms it would lead to an error to import "package:web/web.dart" so this is dynamically typed.
final
maxFileSize → int
final
name → String
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
sqfliteFactory → DatabaseFactory?
Custom SQFlite Database Factory used for high level operations on IO like delete. Set it if you want to use sqlite FFI.
final
supportsFileStoring → bool
no setterinherited

Methods

addSeenDeviceId(String userId, String deviceId, String publicKeys) → Future<void>
override
addSeenPublicKey(String publicKey, String deviceId) → Future<void>
override
cacheCustomObject(String cacheKey, Map<String, Object?> object) → Future<void>
override
clear() → Future<void>
override
clearCache() → Future<void>
override
clearCustomCacheObjects() → Future<void>
clearSSSSCache() → Future<void>
override
close() → Future<void>
override
delete() → Future<void>
Deletes the whole database. The database needs to be created again after this.
override
deleteFile(Uri mxcUri) → Future<bool>
inherited
deleteFromToDeviceQueue(int id) → Future<void>
override
deleteOldFiles(int savedAt) → Future<void>
inherited
deleteTimelineForRoom(String roomId) → Future<void>
override
deviceIdSeen(String userId, String deviceId) → Future<String?>
override
exportDump() → Future<String>
override
forgetRoom(String roomId) → Future<void>
override
getAccountData() → Future<Map<String, BasicEvent>>
override
getAllInboundGroupSessions() → Future<List<StoredInboundGroupSession>>
override
getAllOlmSessions() → Future<Map<String, Map>>
override
getClient(String name) → Future<Map<String, dynamic>?>
override
getCustomCacheObject(String cacheKey) → Future<({Map<String, Object?> content, DateTime savedAt})?>
override
getEventById(String eventId, Room room) → Future<Event?>
override
getEventIdList(Room room, {int start = 0, bool includeSending = false, int? limit}) → Future<List<String>>
override
getEventList(Room room, {int start = 0, bool onlySending = false, int? limit}) → Future<List<Event>>
override
getFile(Uri mxcUri) → Future<Uint8List?>
inherited
getInboundGroupSession(String roomId, String sessionId) → Future<StoredInboundGroupSession?>
override
getInboundGroupSessionsToUpload() → Future<List<StoredInboundGroupSession>>
override
getLastSentMessageUserDeviceKey(String userId, String deviceId) → Future<List<String>>
override
getOlmSessions(String identityKey, String userId) → Future<List<OlmSession>>
override
getOlmSessionsForDevices(List<String> identityKeys, String userId) → Future<List<OlmSession>>
override
getOutboundGroupSession(String roomId, String userId) → Future<OutboundGroupSession?>
override
getPresence(String userId) → Future<CachedPresence?>
override
getRoomList(Client client) → Future<List<Room>>
override
getSingleRoom(Client client, String roomId, {bool loadImportantStates = true}) → Future<Room?>
override
getSSSSCache(String type) → Future<SSSSCache?>
override
getToDeviceEventQueue() → Future<List<QueuedToDeviceEvent>>
override
getUnimportantRoomEventStatesForRoom(List<String> events, Room room) → Future<List<Event>>
override
getUser(String userId, Room room) → Future<User?>
override
getUserDeviceKeys(Client client) → Future<Map<String, DeviceKeysList>>
override
getUserProfile(String userId) → Future<CachedProfileInformation?>
override
getUsers(Room room) → Future<List<User>>
override
importDump(String export) → Future<bool>
override
insertClient(String name, String homeserverUrl, String token, DateTime? tokenExpiresAt, String? refreshToken, String userId, String? deviceId, String? deviceName, String? prevBatch, String? olmAccount, String? oidcClientId) → Future<int>
override
insertIntoToDeviceQueue(String type, String txnId, String content) → Future<int>
Please do jsonEncode(content) in your code to stay compatible with auto generated methods here.
override
markInboundGroupSessionAsUploaded(String roomId, String sessionId) → Future<void>
override
markInboundGroupSessionsAsNeedingUpload() → Future<void>
override
markUserProfileAsOutdated(String userId) → Future<void>
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
open() → Future<void>
publicKeySeen(String publicKey) → Future<String?>
override
removeEvent(String eventId, String roomId) → Future<void>
override
removeOutboundGroupSession(String roomId) → Future<void>
override
removeUserCrossSigningKey(String userId, String publicKey) → Future<void>
override
removeUserDeviceKey(String userId, String deviceId) → Future<void>
override
setBlockedUserCrossSigningKey(bool blocked, String userId, String publicKey) → Future<void>
override
setBlockedUserDeviceKey(bool blocked, String userId, String deviceId) → Future<void>
override
setLastActiveUserDeviceKey(int lastActive, String userId, String deviceId) → Future<void>
override
setLastSentMessageUserDeviceKey(String lastSentMessage, String userId, String deviceId) → Future<void>
override
setRoomPrevBatch(String? prevBatch, String roomId, Client client) → Future<void>
override
setVerifiedUserCrossSigningKey(bool verified, String userId, String publicKey, {DateTime? trustOnFirstUseSince}) → Future<void>
override
setVerifiedUserDeviceKey(bool verified, String userId, String deviceId) → Future<void>
override
storeAccountData(String type, Map<String, Object?> content) → Future<void>
override
storeEventUpdate(String roomId, StrippedStateEvent event, EventUpdateType type, Client client) → Future<void>
Stores an EventUpdate object in the database. Must be called inside of transaction.
override
storeFile(Uri mxcUri, Uint8List bytes, int time) → Future<void>
inherited
storeInboundGroupSession(String roomId, String sessionId, String pickle, String content, String indexes, String allowedAtIndex, String senderKey, String senderClaimedKey) → Future<void>
override
storeLatestReceiptState(String roomId, LatestReceiptState receiptState) → Future<void>
override
storeOlmSession(String identityKey, String sessionId, String pickle, int lastReceived) → Future<void>
override
storeOutboundGroupSession(String roomId, String pickle, String deviceIds, int creationTime) → Future<void>
override
storePresence(String userId, CachedPresence presence) → Future<void>
override
storePrevBatch(String prevBatch) → Future<void>
override
storeRoomAccountData(String roomId, BasicEvent event) → Future<void>
override
storeRoomUpdate(String roomId, SyncRoomUpdate roomUpdate, Event? lastEvent, Client client) → Future<void>
Stores a RoomUpdate object in the database. Must be called inside of transaction.
override
storeSSSSCache(String type, String keyId, String ciphertext, String content) → Future<void>
override
storeSyncFilterId(String syncFilterId) → Future<void>
override
storeUserCrossSigningKey(String userId, String publicKey, String content, bool verified, bool blocked, {DateTime? trustOnFirstUseSince}) → Future<void>
override
storeUserDeviceKey(String userId, String deviceId, String content, bool verified, bool blocked, int lastActive) → Future<void>
override
storeUserDeviceKeysInfo(String userId, bool outdated) → Future<void>
override
storeUserProfile(String userId, CachedProfileInformation profile) → Future<void>
override
toString() → String
A string representation of this object.
inherited
transaction(Future<void> action()) → Future<void>
override
updateClient(String homeserverUrl, String token, DateTime? tokenExpiresAt, String? refreshToken, String userId, String? deviceId, String? deviceName, String? prevBatch, String? olmAccount, String? oidcClientId) → Future<void>
override
updateClientKeys(String olmAccount) → Future<void>
override
updateInboundGroupSessionAllowedAtIndex(String allowedAtIndex, String roomId, String sessionId) → Future<void>
override
updateInboundGroupSessionIndexes(String indexes, String roomId, String sessionId) → Future<void>
override

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

init(String name, {Database? database, dynamic idbFactory, DatabaseFactory? sqfliteFactory, int maxFileSize = 0, Uri? fileStorageLocation, Duration? deleteFilesAfterDuration}) → Future<MatrixSdkDatabase>

Constants

version → const int