diff --git a/packages/realtime_client/lib/src/realtime_client.dart b/packages/realtime_client/lib/src/realtime_client.dart index ff3ba10f7..46a4f7261 100644 --- a/packages/realtime_client/lib/src/realtime_client.dart +++ b/packages/realtime_client/lib/src/realtime_client.dart @@ -410,36 +410,18 @@ class RealtimeClient { final tokenToSend = token ?? (await customAccessToken?.call()) ?? accessToken; - if (tokenToSend != null) { - Map? parsed; - try { - final decoded = - base64.decode(base64.normalize(tokenToSend.split('.')[1])); - parsed = json.decode(utf8.decode(decoded)); - } catch (e) { - // ignore parsing errors - } - if (parsed != null && parsed['exp'] != null) { - final now = (DateTime.now().millisecondsSinceEpoch / 1000).floor(); - final valid = now - parsed['exp'] < 0; - if (!valid) { - log( - 'auth', - 'InvalidJWTToken: Invalid value for JWT claim "exp" with value ${parsed['exp']}', - null, - Level.FINE, - ); - throw FormatException( - 'InvalidJWTToken: Invalid value for JWT claim "exp" with value ${parsed['exp']}'); - } - } + if (accessToken == tokenToSend) { + return; } accessToken = tokenToSend; for (final channel in channels) { if (tokenToSend != null) { - channel.updateJoinPayload({'access_token': tokenToSend}); + channel.updateJoinPayload({ + 'access_token': tokenToSend, + 'version': Constants.defaultHeaders['X-Client-Info'], + }); } if (channel.joinedOnce && channel.isJoined) { channel.push(ChannelEvents.accessToken, {'access_token': tokenToSend}); diff --git a/packages/realtime_client/test/socket_test.dart b/packages/realtime_client/test/socket_test.dart index 793b158db..af746f696 100644 --- a/packages/realtime_client/test/socket_test.dart +++ b/packages/realtime_client/test/socket_test.dart @@ -453,7 +453,10 @@ void main() { group('setAuth', () { final token = generateJwt(); - final updateJoinPayload = {'access_token': token}; + final updateJoinPayload = { + 'access_token': token, + 'version': Constants.defaultHeaders['X-Client-Info'], + }; final pushPayload = {'access_token': token}; test( @@ -534,7 +537,10 @@ void main() { const token = 'sb-key'; final pushPayload = {'access_token': token}; - final updateJoinPayload = {'access_token': token}; + final updateJoinPayload = { + 'access_token': token, + 'version': Constants.defaultHeaders['X-Client-Info'], + }; await mockedSocket.setAuth(token);