Merge pull request #215 from cogwheel0/socket-connection-reliability-improvements

socket-connection-reliability-improvements
This commit is contained in:
cogwheel
2025-12-03 14:09:08 +05:30
committed by GitHub
2 changed files with 70 additions and 25 deletions

View File

@@ -329,6 +329,7 @@ final apiServiceProvider = Provider<ApiService?>((ref) {
class SocketServiceManager extends _$SocketServiceManager {
SocketService? _service;
ProviderSubscription<String?>? _tokenSubscription;
int _connectToken = 0;
@override
FutureOr<SocketService?> build() async {
@@ -390,9 +391,11 @@ class SocketServiceManager extends _$SocketServiceManager {
}
void _scheduleConnect(SocketService service) {
final token = ++_connectToken;
WidgetsBinding.instance.addPostFrameCallback((_) async {
await Future.delayed(const Duration(milliseconds: 150));
if (!ref.mounted) return;
if (_connectToken != token) return;
if (!identical(_service, service)) return;
try {
unawaited(service.connect());
} catch (_) {}
@@ -400,6 +403,7 @@ class SocketServiceManager extends _$SocketServiceManager {
}
void _disposeService() {
_connectToken++;
if (_service == null) return;
try {
_service!.dispose();