From 81b2bc15318903a0a5d1e8fcb061fc1403c4e98b Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 11 Apr 2022 14:30:08 +0200 Subject: [PATCH 1/7] fix(llc): send only `user_id` while reconnecting --- packages/stream_chat/lib/src/ws/websocket.dart | 12 +++++++++--- .../example/android/app/build.gradle | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat/lib/src/ws/websocket.dart b/packages/stream_chat/lib/src/ws/websocket.dart index 888ba08b..3c6ddccc 100644 --- a/packages/stream_chat/lib/src/ws/websocket.dart +++ b/packages/stream_chat/lib/src/ws/websocket.dart @@ -147,12 +147,15 @@ class WebSocket with TimerHelper { } } - Future _buildUri({bool refreshToken = false}) async { + Future _buildUri({ + bool refreshToken = false, + bool includeUserDetails = true, + }) async { final user = _user!; final token = await tokenManager.loadToken(refresh: refreshToken); final params = { 'user_id': user.id, - 'user_details': user, + if (includeUserDetails) 'user_details': user, 'user_token': token.rawValue, 'server_determines_connection_id': true, }; @@ -219,7 +222,10 @@ class WebSocket with TimerHelper { setTimer( Duration(milliseconds: delay), () async { - final uri = await _buildUri(refreshToken: refreshToken); + final uri = await _buildUri( + refreshToken: refreshToken, + includeUserDetails: false, + ); try { _initWebSocketChannel(uri); } catch (e, stk) { diff --git a/packages/stream_chat_flutter/example/android/app/build.gradle b/packages/stream_chat_flutter/example/android/app/build.gradle index 3974f949..6576512a 100644 --- a/packages/stream_chat_flutter/example/android/app/build.gradle +++ b/packages/stream_chat_flutter/example/android/app/build.gradle @@ -40,7 +40,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.example" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 31 versionCode flutterVersionCode.toInteger() versionName flutterVersionName From 691644dc83d1f1e76dedeffda470118ccda5be3d Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 11 Apr 2022 14:30:32 +0200 Subject: [PATCH 2/7] chore(llc): update changelog --- packages/stream_chat/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index 347b3491..e2e280bd 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -9,6 +9,7 @@ channel update. - [[#1054]](https://github.com/GetStream/stream-chat-flutter/issues/1054) Fix `Unsupported operation: Cannot remove from an unmodifiable list`. - [[#1033]](https://github.com/GetStream/stream-chat-flutter/issues/1033) Hard delete from dashboard does not delete message from client. +- Send only `user_id` while reconnecting. ✅ Added From 6f50ea514e6639080b91d270a55109a875a92ca4 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 11 Apr 2022 16:13:19 +0200 Subject: [PATCH 3/7] fix(llc): send only `user_id` while manually reconnecting --- packages/stream_chat/lib/src/client/client.dart | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index c3605ac5..4bc44322 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -341,7 +341,9 @@ class StreamChatClient { } /// Creates a new WebSocket connection with the current user. - Future openConnection() async { + Future openConnection({ + bool includeUserDetailsInConnectCall = true, + }) async { assert( state.currentUser != null, 'User is not set on client, ' @@ -371,7 +373,11 @@ class StreamChatClient { _ws.connectionStatusStream.skip(1).listen(_connectionStatusHandler); try { - final event = await _ws.connect(user); + final event = await _ws.connect(includeUserDetailsInConnectCall + ? user + : User( + id: user.id, + )); return user.merge(event.me); } catch (e, stk) { logger.severe('error connecting ws', e, stk); From 136d5be43a917da4413463ca9f0760b3c56836b1 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 11 Apr 2022 17:30:42 +0200 Subject: [PATCH 4/7] fix(llc): fix llc --- packages/stream_chat/lib/src/client/client.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index 4bc44322..8d326aa9 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -328,7 +328,9 @@ class StreamChatClient { _chatPersistenceClient = _originalChatPersistenceClient; await _chatPersistenceClient!.connect(ownUser.id); } - final connectedUser = await openConnection(); + final connectedUser = await openConnection( + includeUserDetailsInConnectCall: true, + ); return state.currentUser = connectedUser; } catch (e, stk) { if (e is StreamWebSocketError && e.isRetriable) { @@ -342,7 +344,7 @@ class StreamChatClient { /// Creates a new WebSocket connection with the current user. Future openConnection({ - bool includeUserDetailsInConnectCall = true, + bool includeUserDetailsInConnectCall = false, }) async { assert( state.currentUser != null, From 748f4bd1b6544b7ee12eb47a4969b7f1ec24733f Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 11 Apr 2022 17:31:38 +0200 Subject: [PATCH 5/7] fix(llc): add doc --- packages/stream_chat/lib/src/client/client.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index 8d326aa9..7755f8f4 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -343,6 +343,8 @@ class StreamChatClient { } /// Creates a new WebSocket connection with the current user. + /// If [includeUserDetailsInConnectCall] is true it will include the current + /// user details in the connect call. Future openConnection({ bool includeUserDetailsInConnectCall = false, }) async { From d7ee768a83a1c990b27285020583a9a4d6cc0262 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 12 Apr 2022 15:24:17 +0200 Subject: [PATCH 6/7] fix(llc): pass includeUserDetailsInConnectCall to WS --- packages/stream_chat/lib/src/client/client.dart | 9 ++++----- packages/stream_chat/lib/src/ws/websocket.dart | 9 +++++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index 7755f8f4..d1b68058 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -377,11 +377,10 @@ class StreamChatClient { _ws.connectionStatusStream.skip(1).listen(_connectionStatusHandler); try { - final event = await _ws.connect(includeUserDetailsInConnectCall - ? user - : User( - id: user.id, - )); + final event = await _ws.connect( + user, + includeUserDetails: includeUserDetailsInConnectCall, + ); return user.merge(event.me); } catch (e, stk) { logger.severe('error connecting ws', e, stk); diff --git a/packages/stream_chat/lib/src/ws/websocket.dart b/packages/stream_chat/lib/src/ws/websocket.dart index 3c6ddccc..de5475ce 100644 --- a/packages/stream_chat/lib/src/ws/websocket.dart +++ b/packages/stream_chat/lib/src/ws/websocket.dart @@ -179,7 +179,10 @@ class WebSocket with TimerHelper { bool _connectRequestInProgress = false; /// Connect the WS using the parameters passed in the constructor - Future connect(User user) async { + Future connect( + User user, { + bool includeUserDetails = false, + }) async { if (_connectRequestInProgress) { throw const StreamWebSocketError(''' You've called connect twice, @@ -194,7 +197,9 @@ class WebSocket with TimerHelper { connectionCompleter = Completer(); try { - final uri = await _buildUri(); + final uri = await _buildUri( + includeUserDetails: includeUserDetails, + ); _initWebSocketChannel(uri); } catch (e, stk) { _onConnectionError(e, stk); From 8a4f80c04d0701c8609465829b0d3c4cddf9996a Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 12 Apr 2022 16:10:35 +0200 Subject: [PATCH 7/7] fix(llc): fix tests --- packages/stream_chat/test/src/fakes.dart | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat/test/src/fakes.dart b/packages/stream_chat/test/src/fakes.dart index b4089512..409418cd 100644 --- a/packages/stream_chat/test/src/fakes.dart +++ b/packages/stream_chat/test/src/fakes.dart @@ -124,7 +124,10 @@ class FakeWebSocket extends Fake implements WebSocket { Completer? connectionCompleter; @override - Future connect(User user) async { + Future connect( + User user, { + bool? includeUserDetails = true, + }) async { connectionStatus = ConnectionStatus.connecting; final event = Event( type: EventType.healthCheck, @@ -167,7 +170,10 @@ class FakeWebSocketWithConnectionError extends Fake implements WebSocket { Completer? connectionCompleter; @override - Future connect(User user) async { + Future connect( + User user, { + bool? includeUserDetails = true, + }) async { connectionStatus = ConnectionStatus.connecting; const error = StreamWebSocketError('Error Connecting'); connectionCompleter = Completer()..completeError(error);