diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index b001d99e..9173d27a 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,3 +1,9 @@ +## Upcoming + +🔄 Changed + +- Updated `dio` dependency to `^5.2.0`. + ## 6.2.0 🐞 Fixed diff --git a/packages/stream_chat/lib/src/core/error/stream_chat_error.dart b/packages/stream_chat/lib/src/core/error/stream_chat_error.dart index 1df28558..333211f2 100644 --- a/packages/stream_chat/lib/src/core/error/stream_chat_error.dart +++ b/packages/stream_chat/lib/src/core/error/stream_chat_error.dart @@ -89,8 +89,13 @@ class StreamChatNetworkError extends StreamChatError { }) : super(message); /// - factory StreamChatNetworkError.fromDioError(DioError error) { - final response = error.response; + @Deprecated('Use `StreamChatNetworkError.fromDioException` instead') + factory StreamChatNetworkError.fromDioError(DioException error) = + StreamChatNetworkError.fromDioException; + + /// + factory StreamChatNetworkError.fromDioException(DioException exception) { + final response = exception.response; ErrorResponse? errorResponse; final data = response?.data; if (data != null) { @@ -100,12 +105,12 @@ class StreamChatNetworkError extends StreamChatError { code: errorResponse?.code ?? -1, message: errorResponse?.message ?? response?.statusMessage ?? - error.message ?? + exception.message ?? '', statusCode: errorResponse?.statusCode ?? response?.statusCode, data: errorResponse, - isRequestCancelledError: error.type == DioErrorType.cancel, - )..stackTrace = error.stackTrace; + isRequestCancelledError: exception.type == DioExceptionType.cancel, + )..stackTrace = exception.stackTrace; } /// Error code diff --git a/packages/stream_chat/lib/src/core/http/interceptor/auth_interceptor.dart b/packages/stream_chat/lib/src/core/http/interceptor/auth_interceptor.dart index 759e8e79..7bd9a957 100644 --- a/packages/stream_chat/lib/src/core/http/interceptor/auth_interceptor.dart +++ b/packages/stream_chat/lib/src/core/http/interceptor/auth_interceptor.dart @@ -46,26 +46,26 @@ class AuthInterceptor extends QueuedInterceptor { @override void onError( - DioError err, + DioException exception, ErrorInterceptorHandler handler, ) async { - final data = err.response?.data; + final data = exception.response?.data; if (data == null || data is! Map) { - return handler.next(err); + return handler.next(exception); } final error = ErrorResponse.fromJson(data); if (error.code == ChatErrorCode.tokenExpired.code) { - if (_tokenManager.isStatic) return handler.next(err); + if (_tokenManager.isStatic) return handler.next(exception); await _tokenManager.loadToken(refresh: true); try { - final options = err.requestOptions; + final options = exception.requestOptions; final response = await _client.fetch(options); return handler.resolve(response); - } on DioError catch (error) { - return handler.next(error); + } on DioException catch (exception) { + return handler.next(exception); } } - return handler.next(err); + return handler.next(exception); } } diff --git a/packages/stream_chat/lib/src/core/http/interceptor/logging_interceptor.dart b/packages/stream_chat/lib/src/core/http/interceptor/logging_interceptor.dart index 72fd70d0..6d6f74c3 100644 --- a/packages/stream_chat/lib/src/core/http/interceptor/logging_interceptor.dart +++ b/packages/stream_chat/lib/src/core/http/interceptor/logging_interceptor.dart @@ -119,32 +119,32 @@ class LoggingInterceptor extends Interceptor { } @override - void onError(DioError err, ErrorInterceptorHandler handler) { + void onError(DioException exception, ErrorInterceptorHandler handler) { if (error) { - if (err.type == DioErrorType.badResponse) { - final uri = err.response?.requestOptions.uri; + if (exception.type == DioExceptionType.badResponse) { + final uri = exception.response?.requestOptions.uri; _printBoxed( _logPrintError, header: - 'DioError ║ Status: ${err.response?.statusCode} ${err.response?.statusMessage}', + 'DioException ║ Status: ${exception.response?.statusCode} ${exception.response?.statusMessage}', text: uri.toString(), ); - if (err.response != null && err.response?.data != null) { - _logPrintError('╔ ${err.type.toString()}'); - _printResponse(_logPrintError, err.response!); + if (exception.response != null && exception.response?.data != null) { + _logPrintError('╔ ${exception.type.toString()}'); + _printResponse(_logPrintError, exception.response!); } _printLine(_logPrintError, '╚'); _logPrintError(''); } else { _printBoxed( _logPrintError, - header: 'DioError ║ ${err.type}', - text: err.message, + header: 'DioException ║ ${exception.type}', + text: exception.message, ); - _printRequestHeader(_logPrintError, err.requestOptions); + _printRequestHeader(_logPrintError, exception.requestOptions); } } - super.onError(err, handler); + super.onError(exception, handler); } @override diff --git a/packages/stream_chat/lib/src/core/http/stream_chat_dio_error.dart b/packages/stream_chat/lib/src/core/http/stream_chat_dio_error.dart index b494671c..5b6f91a0 100644 --- a/packages/stream_chat/lib/src/core/http/stream_chat_dio_error.dart +++ b/packages/stream_chat/lib/src/core/http/stream_chat_dio_error.dart @@ -2,7 +2,7 @@ import 'package:dio/dio.dart'; import 'package:stream_chat/src/core/error/error.dart'; /// Error class specific to StreamChat and Dio -class StreamChatDioError extends DioError { +class StreamChatDioError extends DioException { /// Initialize a stream chat dio error StreamChatDioError({ required this.error, diff --git a/packages/stream_chat/lib/src/core/http/stream_http_client.dart b/packages/stream_chat/lib/src/core/http/stream_http_client.dart index 99e72339..0d21f973 100644 --- a/packages/stream_chat/lib/src/core/http/stream_http_client.dart +++ b/packages/stream_chat/lib/src/core/http/stream_http_client.dart @@ -92,16 +92,16 @@ class StreamHttpClient { /// calling [close] will throw an exception. void close({bool force = false}) => httpClient.close(force: force); - StreamChatNetworkError _parseError(DioError err) { + StreamChatNetworkError _parseError(DioException exception) { StreamChatNetworkError error; // locally thrown dio error - if (err is StreamChatDioError) { - error = err.error; + if (exception is StreamChatDioError) { + error = exception.error; } else { // real network request dio error - error = StreamChatNetworkError.fromDioError(err); + error = StreamChatNetworkError.fromDioException(exception); } - return error..stackTrace = err.stackTrace; + return error..stackTrace = exception.stackTrace; } /// Handy method to make http GET request with error parsing. @@ -121,7 +121,7 @@ class StreamHttpClient { cancelToken: cancelToken, ); return response; - } on DioError catch (error) { + } on DioException catch (error) { throw _parseError(error); } } @@ -147,7 +147,7 @@ class StreamHttpClient { cancelToken: cancelToken, ); return response; - } on DioError catch (error) { + } on DioException catch (error) { throw _parseError(error); } } @@ -167,7 +167,7 @@ class StreamHttpClient { cancelToken: cancelToken, ); return response; - } on DioError catch (error) { + } on DioException catch (error) { throw _parseError(error); } } @@ -193,7 +193,7 @@ class StreamHttpClient { cancelToken: cancelToken, ); return response; - } on DioError catch (error) { + } on DioException catch (error) { throw _parseError(error); } } @@ -219,7 +219,7 @@ class StreamHttpClient { cancelToken: cancelToken, ); return response; - } on DioError catch (error) { + } on DioException catch (error) { throw _parseError(error); } } @@ -268,7 +268,7 @@ class StreamHttpClient { cancelToken: cancelToken, ); return response; - } on DioError catch (error) { + } on DioException catch (error) { throw _parseError(error); } } @@ -281,7 +281,7 @@ class StreamHttpClient { try { final response = await httpClient.fetch(requestOptions); return response; - } on DioError catch (error) { + } on DioException catch (error) { throw _parseError(error); } } diff --git a/packages/stream_chat/lib/stream_chat.dart b/packages/stream_chat/lib/stream_chat.dart index 1e0df28c..2dbf1afd 100644 --- a/packages/stream_chat/lib/stream_chat.dart +++ b/packages/stream_chat/lib/stream_chat.dart @@ -1,12 +1,17 @@ library stream_chat; export 'package:async/async.dart'; -export 'package:dio/src/cancel_token.dart'; -export 'package:dio/src/dio_error.dart'; -export 'package:dio/src/dio_mixin.dart' show Interceptor, InterceptorsWrapper; -export 'package:dio/src/multipart_file.dart'; -export 'package:dio/src/options.dart'; -export 'package:dio/src/options.dart' show ProgressCallback; +export 'package:dio/dio.dart' + show + DioException, + DioExceptionType, + RequestOptions, + CancelToken, + Interceptor, + InterceptorsWrapper, + MultipartFile, + Options, + ProgressCallback; export 'package:logging/logging.dart' show Logger, Level, LogRecord; export 'package:rate_limiter/rate_limiter.dart'; export 'package:uuid/uuid.dart'; @@ -17,7 +22,6 @@ export 'src/client/key_stroke_handler.dart'; export 'src/core/api/attachment_file_uploader.dart'; export 'src/core/api/requests.dart'; export 'src/core/api/responses.dart'; -export 'src/core/api/stream_chat_api.dart' show PushProvider; export 'src/core/api/stream_chat_api.dart'; export 'src/core/error/error.dart'; export 'src/core/http/interceptor/logging_interceptor.dart'; diff --git a/packages/stream_chat/pubspec.yaml b/packages/stream_chat/pubspec.yaml index 62bf7b52..cbd95b88 100644 --- a/packages/stream_chat/pubspec.yaml +++ b/packages/stream_chat/pubspec.yaml @@ -11,7 +11,7 @@ environment: dependencies: async: ^2.10.0 collection: ^1.17.0 - dio: ^5.1.1 + dio: ^5.2.0 equatable: ^2.0.5 freezed_annotation: ^2.2.0 http_parser: ^4.0.2 diff --git a/packages/stream_chat/test/src/core/error/stream_chat_error_test.dart b/packages/stream_chat/test/src/core/error/stream_chat_error_test.dart index a32e0d71..8d4e5465 100644 --- a/packages/stream_chat/test/src/core/error/stream_chat_error_test.dart +++ b/packages/stream_chat/test/src/core/error/stream_chat_error_test.dart @@ -60,7 +60,7 @@ void main() { expect(error.message, message); }); - test('.fromDioError', () { + test('.fromDioException', () { const code = 333; const statusCode = 666; const message = 'test-error-message'; @@ -69,7 +69,7 @@ void main() { ..code = code ..statusCode = statusCode ..message = message; - final dioError = DioError( + final dioError = DioException( requestOptions: options, response: Response( requestOptions: options, @@ -77,7 +77,7 @@ void main() { data: data.toJson(), ), ); - final error = StreamChatNetworkError.fromDioError(dioError); + final error = StreamChatNetworkError.fromDioException(dioError); expect(error, isNotNull); expect(error.code, code); expect(error.message, message); diff --git a/packages/stream_chat/test/src/core/http/interceptor/auth_interceptor_test.dart b/packages/stream_chat/test/src/core/http/interceptor/auth_interceptor_test.dart index 7bd81ff0..e5d06600 100644 --- a/packages/stream_chat/test/src/core/http/interceptor/auth_interceptor_test.dart +++ b/packages/stream_chat/test/src/core/http/interceptor/auth_interceptor_test.dart @@ -88,7 +88,7 @@ void main() { requestOptions: options, data: errorResponse.toJson(), ); - final err = DioError(requestOptions: options, response: response); + final err = DioException(requestOptions: options, response: response); final handler = ErrorInterceptorHandler(); when(() => tokenManager.isStatic).thenReturn(false); @@ -135,7 +135,7 @@ void main() { requestOptions: options, data: errorResponse.toJson(), ); - final err = DioError(requestOptions: options, response: response); + final err = DioException(requestOptions: options, response: response); final handler = ErrorInterceptorHandler(); when(() => tokenManager.isStatic).thenReturn(false); @@ -153,7 +153,7 @@ void main() { } catch (e) { // need to cast it as the type is private in dio final error = (e as dynamic).data; - expect(error, isA()); + expect(error, isA()); } verify(() => tokenManager.isStatic).called(1); @@ -179,7 +179,7 @@ void main() { requestOptions: options, data: errorResponse.toJson(), ); - final err = DioError(requestOptions: options, response: response); + final err = DioException(requestOptions: options, response: response); final handler = ErrorInterceptorHandler(); when(() => tokenManager.isStatic).thenReturn(true); @@ -191,8 +191,8 @@ void main() { } catch (e) { // need to cast it as the type is private in dio final error = (e as dynamic).data; - expect(error, isA()); - final response = StreamChatNetworkError.fromDioError(error); + expect(error, isA()); + final response = StreamChatNetworkError.fromDioException(error); expect(response.errorCode, code); } @@ -207,7 +207,7 @@ void main() { const path = 'test-request-path'; final options = RequestOptions(path: path); final response = Response(requestOptions: options); - final err = DioError(requestOptions: options, response: response); + final err = DioException(requestOptions: options, response: response); final handler = ErrorInterceptorHandler(); authInterceptor.onError(err, handler); @@ -217,7 +217,7 @@ void main() { } catch (e) { // need to cast it as the type is private in dio final error = (e as dynamic).data; - expect(error, isA()); + expect(error, isA()); } }, ); diff --git a/packages/stream_chat/test/src/core/http/stream_chat_dio_error_test.dart b/packages/stream_chat/test/src/core/http/stream_chat_dio_error_test.dart index f13cf50d..e29148bf 100644 --- a/packages/stream_chat/test/src/core/http/stream_chat_dio_error_test.dart +++ b/packages/stream_chat/test/src/core/http/stream_chat_dio_error_test.dart @@ -12,7 +12,7 @@ void main() { requestOptions: options, ); - expect(dioError, isA()); + expect(dioError, isA()); expect(dioError, isNotNull); expect(dioError.error, error); expect(dioError.requestOptions, options); diff --git a/packages/stream_chat/test/src/core/http/stream_http_client_test.dart b/packages/stream_chat/test/src/core/http/stream_http_client_test.dart index 51533b11..f63e08f1 100644 --- a/packages/stream_chat/test/src/core/http/stream_http_client_test.dart +++ b/packages/stream_chat/test/src/core/http/stream_http_client_test.dart @@ -21,7 +21,7 @@ void main() { statusCode: 200, ); - DioError throwableError( + DioException throwableError( String path, { StreamChatNetworkError? error, bool streamChatDioError = false, @@ -32,11 +32,11 @@ void main() { ..code = error?.code ..statusCode = error?.statusCode ..message = error?.message; - DioError? dioError; + DioException? dioError; if (streamChatDioError) { dioError = StreamChatDioError(error: error!, requestOptions: options); } else { - dioError = DioError( + dioError = DioException( error: error, requestOptions: options, response: Response( @@ -210,7 +210,7 @@ void main() { await client.get(path); } catch (e) { expect(e, isA()); - expect(e, StreamChatNetworkError.fromDioError(error)); + expect(e, StreamChatNetworkError.fromDioException(error)); } verify(() => dio.get( @@ -263,7 +263,7 @@ void main() { await client.post(path); } catch (e) { expect(e, isA()); - expect(e, StreamChatNetworkError.fromDioError(error)); + expect(e, StreamChatNetworkError.fromDioException(error)); } verify(() => dio.post( @@ -317,7 +317,7 @@ void main() { await client.delete(path); } catch (e) { expect(e, isA()); - expect(e, StreamChatNetworkError.fromDioError(error)); + expect(e, StreamChatNetworkError.fromDioException(error)); } verify(() => dio.delete( @@ -371,7 +371,7 @@ void main() { await client.patch(path); } catch (e) { expect(e, isA()); - expect(e, StreamChatNetworkError.fromDioError(error)); + expect(e, StreamChatNetworkError.fromDioException(error)); } verify(() => dio.patch( @@ -425,7 +425,7 @@ void main() { await client.put(path); } catch (e) { expect(e, isA()); - expect(e, StreamChatNetworkError.fromDioError(error)); + expect(e, StreamChatNetworkError.fromDioException(error)); } verify(() => dio.put( @@ -486,7 +486,7 @@ void main() { await client.postFile(path, file); } catch (e) { expect(e, isA()); - expect(e, StreamChatNetworkError.fromDioError(error)); + expect(e, StreamChatNetworkError.fromDioException(error)); } verify(() => dio.post( diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 0ea80c8f..2e1b875f 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,3 +1,9 @@ +## Upcoming + +🔄 Changed + +- Updated `dio` dependency to `^5.2.0`. + ## 6.2.0 🐞 Fixed diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index c360f1ec..03ee2b22 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -17,7 +17,7 @@ dependencies: dart_vlc: ^0.4.0 desktop_drop: ^0.4.0 diacritic: ^0.1.3 - dio: ^5.1.1 + dio: ^5.2.0 ezanimation: ^0.6.0 file_picker: ^5.2.4 file_selector: ^0.9.0 diff --git a/packages/stream_chat_flutter_core/CHANGELOG.md b/packages/stream_chat_flutter_core/CHANGELOG.md index c7869125..0c178fd4 100644 --- a/packages/stream_chat_flutter_core/CHANGELOG.md +++ b/packages/stream_chat_flutter_core/CHANGELOG.md @@ -1,3 +1,7 @@ +## Upcoming + +- Updated `stream_chat` dependency to [`Upcoming`](https://pub.dev/packages/stream_chat/changelog). + ## 6.2.0 - Fixed `StreamMessageInputController.textPatternStyle` not matching case-insensitive patterns. diff --git a/packages/stream_chat_flutter_core/lib/src/stream_channel.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel.dart index 9cfc3464..5bb8dee7 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_channel.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel.dart @@ -430,16 +430,15 @@ class StreamChannelState extends State { ], builder: (context, snapshot) { if (snapshot.hasError) { - var message = snapshot.error.toString(); - if (snapshot.error is DioError) { - final dioError = snapshot.error as DioError?; - if (dioError?.type == DioErrorType.badResponse) { - message = dioError!.message ?? 'Bad response'; - } else { - message = 'Check your connection and retry'; + final error = snapshot.error; + if (error is DioException) { + if (error.type == DioExceptionType.badResponse) { + return Center(child: Text(error.message ?? 'Bad response')); } + return const Center(child: Text('Check your connection and retry')); } - return Center(child: Text(message)); + + return Center(child: Text(error.toString())); } final dataLoaded = snapshot.data?.every((it) => it) == true; diff --git a/packages/stream_chat_flutter_core/test/stream_channel_test.dart b/packages/stream_chat_flutter_core/test/stream_channel_test.dart index f4acf3c9..5ba31042 100644 --- a/packages/stream_chat_flutter_core/test/stream_channel_test.dart +++ b/packages/stream_chat_flutter_core/test/stream_channel_test.dart @@ -91,8 +91,8 @@ void main() { ); const errorMessage = 'Error! Error! Error!'; - final error = DioError( - type: DioErrorType.badResponse, + final error = DioException( + type: DioExceptionType.badResponse, message: errorMessage, requestOptions: RequestOptions(), );