refactor: optimize socket service event handling and token management
- Updated SocketServiceManager to read the authTokenProvider3 without watching it, preventing unnecessary rebuilds on token changes. - Enhanced SocketService to manage event listeners more effectively by adding and removing event handlers for 'events' and 'events:channel', improving overall socket management.
This commit is contained in:
@@ -239,7 +239,10 @@ class SocketServiceManager extends _$SocketServiceManager {
|
||||
appSettingsProvider.select((settings) => settings.socketTransportMode),
|
||||
);
|
||||
final websocketOnly = transportMode == 'ws';
|
||||
final token = ref.watch(authTokenProvider3);
|
||||
|
||||
// Don't watch authTokenProvider3 here to avoid rebuilding on token changes
|
||||
// Token updates are handled via the subscription below
|
||||
final token = ref.read(authTokenProvider3);
|
||||
|
||||
final requiresNewService =
|
||||
_service == null ||
|
||||
|
||||
@@ -222,7 +222,9 @@ class SocketService with WidgetsBindingObserver {
|
||||
if (socket == null) return;
|
||||
|
||||
socket
|
||||
..off('events', _handleChatEvent)
|
||||
..off('chat-events', _handleChatEvent)
|
||||
..off('events:channel', _handleChannelEvent)
|
||||
..off('channel-events', _handleChannelEvent)
|
||||
..off('connect', _handleConnect)
|
||||
..off('connect_error', _handleConnectError)
|
||||
@@ -232,7 +234,9 @@ class SocketService with WidgetsBindingObserver {
|
||||
..off('disconnect', _handleDisconnect);
|
||||
|
||||
socket
|
||||
..on('events', _handleChatEvent)
|
||||
..on('chat-events', _handleChatEvent)
|
||||
..on('events:channel', _handleChannelEvent)
|
||||
..on('channel-events', _handleChannelEvent)
|
||||
..on('connect', _handleConnect)
|
||||
..on('connect_error', _handleConnectError)
|
||||
|
||||
Reference in New Issue
Block a user