diff --git a/lib/core/network/matrix_client.dart b/lib/core/network/matrix_client.dart index a7f96f7..637aa9f 100644 --- a/lib/core/network/matrix_client.dart +++ b/lib/core/network/matrix_client.dart @@ -1,4 +1,4 @@ -// Version: 1.0.1 | Created: 2026-04-01 +// Version: 1.1.0 | Created: 2026-04-01 | Updated: 2026-04-03 // Matrix SDK client singleton provider. // The Matrix client is kept alive for the full app lifetime once initialised. @@ -14,9 +14,17 @@ part 'matrix_client.g.dart'; /// keepAlive: true — the Matrix client must never be disposed while the app /// is running; it holds the sync loop and all room state. /// -/// Phase 1: no databaseBuilder — uses in-memory store only (no persistence -/// across restarts). Phase 2 will wire in a drift-backed DatabaseApi. +/// Uses [MatrixSdkDatabase] for event storage — without a database, the SDK +/// doesn't store timeline events and room.getTimeline() returns empty. +/// On web this uses IndexedDB via Hive; on mobile it uses SQLite. @Riverpod(keepAlive: true) Client matrixClient(Ref ref) { - return Client(AppConfig.appName); + return Client( + AppConfig.appName, + databaseBuilder: (client) async { + final db = MatrixSdkDatabase('m8chat_matrix'); + await db.open(); + return db; + }, + ); }