From 1d0494dce19945b7547d137f0a8eb1ef4b6a8682 Mon Sep 17 00:00:00 2001 From: Plague Fox Date: Tue, 14 May 2024 12:54:06 +0400 Subject: [PATCH] Refactor SpinifyCommandMixin error handling and connection logic --- lib/src/model/command.dart | 3 +-- lib/src/spinify_impl.dart | 9 ++++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/src/model/command.dart b/lib/src/model/command.dart index 5bf8953..ee5885b 100644 --- a/lib/src/model/command.dart +++ b/lib/src/model/command.dart @@ -247,10 +247,9 @@ final class SpinifyPingRequest extends SpinifyCommand { final class SpinifySendRequest extends SpinifyCommand { /// {@macro command} const SpinifySendRequest({ - required super.id, required super.timestamp, required this.data, - }); + }) : super(id: 0); @override String get type => 'SendRequest'; diff --git a/lib/src/spinify_impl.dart b/lib/src/spinify_impl.dart index 099103b..4ce6f2f 100644 --- a/lib/src/spinify_impl.dart +++ b/lib/src/spinify_impl.dart @@ -157,7 +157,6 @@ base mixin SpinifyCommandMixin on SpinifyBase { @override Future send(List data) => _sendCommandAsync(SpinifySendRequest( - id: _getNextCommandId(), timestamp: DateTime.now(), data: data, )); @@ -311,7 +310,9 @@ base mixin SpinifyConnectionMixin Future connect(String url) async { if (state.url == url) return; final completer = _readyCompleter ??= Completer(); - await disconnect(); + try { + await disconnect(); + } on Object {/* ignore */} try { _setState(SpinifyState$Connecting(url: url)); _reconnectUrl = url; @@ -489,6 +490,8 @@ base mixin SpinifyConnectionMixin @override Future disconnect() async { _reconnectUrl = null; + // TODO(plugfox): tear down reconnect timer + // tearDownReconnectTimer(); if (state.isDisconnected) return Future.value(); await _transport?.disconnect(1000, 'Client disconnecting'); await _onDisconnected(); @@ -498,7 +501,7 @@ base mixin SpinifyConnectionMixin Future _onDisconnected() async { _refreshTimer?.cancel(); _transport = null; - // TODO(plugfox): reconnect + // TODO(plugfox): setup reconnect if reconnectUrl is not null await super._onDisconnected(); }