diff --git a/lib/providers/websocket.dart b/lib/providers/websocket.dart index 676b097..a31e18e 100644 --- a/lib/providers/websocket.dart +++ b/lib/providers/websocket.dart @@ -33,7 +33,16 @@ class WebSocketProvider extends ChangeNotifier { await connect(); } + Completer? _connectCompleter; + Future connect({noRetry = false}) async { + if(_connectCompleter != null) { + await _connectCompleter!.future; + _connectCompleter = null; + } + + _connectCompleter = Completer(); + if (!_ua.isAuthorized) return; if (isConnected || conn != null) { disconnect(); @@ -64,12 +73,13 @@ class WebSocketProvider extends ChangeNotifier { log('Retry connecting to websocket in 3 seconds...'); return Future.delayed( const Duration(seconds: 3), - () => connect(noRetry: true), + () => connect(noRetry: true), ); } } finally { isBusy = false; notifyListeners(); + _connectCompleter!.complete(); } }