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),
|
appSettingsProvider.select((settings) => settings.socketTransportMode),
|
||||||
);
|
);
|
||||||
final websocketOnly = transportMode == 'ws';
|
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 =
|
final requiresNewService =
|
||||||
_service == null ||
|
_service == null ||
|
||||||
|
|||||||
@@ -222,7 +222,9 @@ class SocketService with WidgetsBindingObserver {
|
|||||||
if (socket == null) return;
|
if (socket == null) return;
|
||||||
|
|
||||||
socket
|
socket
|
||||||
|
..off('events', _handleChatEvent)
|
||||||
..off('chat-events', _handleChatEvent)
|
..off('chat-events', _handleChatEvent)
|
||||||
|
..off('events:channel', _handleChannelEvent)
|
||||||
..off('channel-events', _handleChannelEvent)
|
..off('channel-events', _handleChannelEvent)
|
||||||
..off('connect', _handleConnect)
|
..off('connect', _handleConnect)
|
||||||
..off('connect_error', _handleConnectError)
|
..off('connect_error', _handleConnectError)
|
||||||
@@ -232,7 +234,9 @@ class SocketService with WidgetsBindingObserver {
|
|||||||
..off('disconnect', _handleDisconnect);
|
..off('disconnect', _handleDisconnect);
|
||||||
|
|
||||||
socket
|
socket
|
||||||
|
..on('events', _handleChatEvent)
|
||||||
..on('chat-events', _handleChatEvent)
|
..on('chat-events', _handleChatEvent)
|
||||||
|
..on('events:channel', _handleChannelEvent)
|
||||||
..on('channel-events', _handleChannelEvent)
|
..on('channel-events', _handleChannelEvent)
|
||||||
..on('connect', _handleConnect)
|
..on('connect', _handleConnect)
|
||||||
..on('connect_error', _handleConnectError)
|
..on('connect_error', _handleConnectError)
|
||||||
|
|||||||
Reference in New Issue
Block a user