wrap WebSocketChannelError errors into StreamWebSocketError.

Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
Sahil Kumar
2021-06-21 16:05:33 +05:30
parent 675bffe7b9
commit ae3a7e9904
2 changed files with 25 additions and 0 deletions
@@ -1,6 +1,10 @@
import 'dart:io';
import 'package:equatable/equatable.dart';
import 'package:stream_chat/src/core/error/chat_error_code.dart';
import 'package:stream_chat/src/ws/websocket.dart';
import 'package:stream_chat/stream_chat.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
///
class StreamChatError with EquatableMixin implements Exception {
@@ -32,6 +36,13 @@ class StreamWebSocketError extends StreamChatError {
return StreamWebSocketError(message, data: data);
}
///
factory StreamWebSocketError.fromWebSocketChannelError(
WebSocketChannelException error) {
final message = error.message ?? '';
return StreamWebSocketError(message);
}
///
int? get code => data?.code;
@@ -325,6 +325,20 @@ class WebSocket with TimerHelper {
void _onConnectionError(error, [stacktrace]) {
_logger?.warning('Error occurred', error, stacktrace);
StreamWebSocketError wsError;
if (error is WebSocketChannelException) {
wsError = StreamWebSocketError.fromWebSocketChannelError(error);
} else {
wsError = StreamWebSocketError(error.toString());
}
final completer = connectionCompleter;
// complete with error if not yet completed
if (completer != null && !completer.isCompleted) {
// complete the connection with error
completer.completeError(wsError);
}
// resetting connect, reconnect request flag
_resetRequestFlags();