From 4c47145ba5ab9fd1753e7afcc75559e907077ea5 Mon Sep 17 00:00:00 2001 From: kanat <> Date: Thu, 18 May 2023 10:58:18 -0700 Subject: [PATCH 1/3] check whether persistent client is connected --- packages/stream_chat/lib/src/db/chat_persistence_client.dart | 3 +++ .../lib/src/stream_chat_persistence_client.dart | 3 +++ 2 files changed, 6 insertions(+) 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_persistence/lib/src/stream_chat_persistence_client.dart b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart index 3d5a5bdb..6b910585 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 @@ -79,6 +79,9 @@ class StreamChatPersistenceClient extends ChatPersistenceClient { webUseIndexedDbIfSupported: _webUseIndexedDbIfSupported, ); + @override + bool get isConnected => db != null; + @override Future connect( String userId, { From 96c538a4c1859571f412074078c421a324904f37 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 19 May 2023 01:36:35 +0530 Subject: [PATCH 2/3] chore: use `isConnected` flag instead of checking `db` value. Signed-off-by: xsahil03x --- .../test/src/db/chat_persistence_client_test.dart | 3 +++ .../lib/src/stream_chat_persistence_client.dart | 4 ++-- .../test/stream_chat_persistence_client_test.dart | 13 ++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) 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/lib/src/stream_chat_persistence_client.dart b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart index 6b910585..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. @@ -408,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', () { From 4efe30f43bb144aed751d8c36e9079fef8f924a7 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 19 May 2023 01:40:55 +0530 Subject: [PATCH 3/3] chore: update changelog. Signed-off-by: xsahil03x --- packages/stream_chat/CHANGELOG.md | 6 ++++++ packages/stream_chat_persistence/CHANGELOG.md | 4 ++++ 2 files changed, 10 insertions(+) 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_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`.