Merge remote-tracking branch 'origin/develop' into feat/offline-connect

This commit is contained in:
xsahil03x
2023-06-06 15:38:24 +05:30
23 changed files with 120 additions and 88 deletions
@@ -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
@@ -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<String, dynamic>) {
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);
}
}
@@ -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
@@ -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,
@@ -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<T>(requestOptions);
return response;
} on DioError catch (error) {
} on DioException catch (error) {
throw _parseError(error);
}
}