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:
cogwheel0
2025-10-09 20:51:29 +05:30
parent b3e1184d8d
commit 778116e258
2 changed files with 8 additions and 1 deletions

View File

@@ -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 ||

View File

@@ -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)