diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index 3abd5f22..5cb869e1 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,3 +1,9 @@ +## Upcoming + +✅ Added + +- Added support for `ChatPersistenceClient.isConnected` for checking if the client is connected to the database. + ## 6.1.0 🐞 Fixed diff --git a/packages/stream_chat/lib/src/db/chat_persistence_client.dart b/packages/stream_chat/lib/src/db/chat_persistence_client.dart index 1826c4b5..4710190e 100644 --- a/packages/stream_chat/lib/src/db/chat_persistence_client.dart +++ b/packages/stream_chat/lib/src/db/chat_persistence_client.dart @@ -14,6 +14,9 @@ import 'package:stream_chat/src/core/util/extension.dart'; /// A simple client used for persisting chat data locally. abstract class ChatPersistenceClient { + /// Whether the connection is established. + bool get isConnected; + /// Creates a new connection to the client Future connect(String userId); diff --git a/packages/stream_chat/test/src/db/chat_persistence_client_test.dart b/packages/stream_chat/test/src/db/chat_persistence_client_test.dart index 33e9b52b..62a7cf25 100644 --- a/packages/stream_chat/test/src/db/chat_persistence_client_test.dart +++ b/packages/stream_chat/test/src/db/chat_persistence_client_test.dart @@ -12,6 +12,9 @@ import 'package:stream_chat/src/db/chat_persistence_client.dart'; import 'package:test/test.dart'; class TestPersistenceClient extends ChatPersistenceClient { + @override + bool get isConnected => throw UnimplementedError(); + @override Future connect(String userId) => throw UnimplementedError(); diff --git a/packages/stream_chat_persistence/CHANGELOG.md b/packages/stream_chat_persistence/CHANGELOG.md index 3e56f2ec..0729e865 100644 --- a/packages/stream_chat_persistence/CHANGELOG.md +++ b/packages/stream_chat_persistence/CHANGELOG.md @@ -1,3 +1,7 @@ +## Upcoming + +- Added support for `StreamChatPersistenceClient.isConnected` for checking if the client is connected to the database. + ## 6.1.0 - Updated `dart` sdk environment range to support `3.0.0`. diff --git a/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart index 3d5a5bdb..374bfa59 100644 --- a/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart +++ b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart @@ -58,7 +58,7 @@ class StreamChatPersistenceClient extends ChatPersistenceClient { bool get _debugIsConnected { assert(() { - if (db == null) { + if (!isConnected) { throw StateError(''' $runtimeType hasn't been connected yet or used after `disconnect` was called. Consider calling `connect` to create a connection. @@ -79,6 +79,9 @@ class StreamChatPersistenceClient extends ChatPersistenceClient { webUseIndexedDbIfSupported: _webUseIndexedDbIfSupported, ); + @override + bool get isConnected => db != null; + @override Future connect( String userId, { @@ -405,7 +408,7 @@ class StreamChatPersistenceClient extends ChatPersistenceClient { @override Future disconnect({bool flush = false}) async { _logger.info('disconnect'); - if (db != null) { + if (isConnected) { _logger.info('Disconnecting'); if (flush) { _logger.info('Flushing'); diff --git a/packages/stream_chat_persistence/test/stream_chat_persistence_client_test.dart b/packages/stream_chat_persistence/test/stream_chat_persistence_client_test.dart index c99668fd..6791e07c 100644 --- a/packages/stream_chat_persistence/test/stream_chat_persistence_client_test.dart +++ b/packages/stream_chat_persistence/test/stream_chat_persistence_client_test.dart @@ -16,9 +16,9 @@ void main() { const userId = 'testUserId'; test('successfully connects with the Database', () async { final client = StreamChatPersistenceClient(logLevel: Level.ALL); - expect(client.db, isNull); + expect(client.isConnected, false); await client.connect(userId, databaseProvider: testDatabaseProvider); - expect(client.db, isNotNull); + expect(client.isConnected, true); expect(client.db, isA()); expect(client.db!.userId, userId); @@ -29,10 +29,9 @@ void main() { test('throws if already connected', () async { final client = StreamChatPersistenceClient(logLevel: Level.ALL); - expect(client.db, isNull); + expect(client.isConnected, false); await client.connect(userId, databaseProvider: testDatabaseProvider); - expect(client.db, isNotNull); - expect(client.db, isNotNull); + expect(client.isConnected, true); expect(client.db, isA()); expect(client.db!.userId, userId); expect( @@ -50,9 +49,9 @@ void main() { const userId = 'testUserId'; final client = StreamChatPersistenceClient(logLevel: Level.ALL); await client.connect(userId, databaseProvider: testDatabaseProvider); - expect(client.db, isNotNull); + expect(client.isConnected, true); await client.disconnect(flush: true); - expect(client.db, isNull); + expect(client.isConnected, false); }); test('client function throws stateError if db is not yet connected', () {