Merge branch 'feat/nullsafety-stream-chat' of git://github.com/felangel/stream-chat-flutter into felangel-feat/nullsafety-stream-chat

This commit is contained in:
Sahil Kumar
2021-04-02 18:59:52 +05:30
40 changed files with 1662 additions and 1190 deletions
@@ -352,7 +352,7 @@ class Channel {
state?.addMessage(response.message);
return response;
} catch (error) {
if (error is DioError && error.type != DioErrorType.RESPONSE) {
if (error is DioError && error.type != DioErrorType.response) {
state?.retryQueue?.add([message]);
}
rethrow;
@@ -405,7 +405,7 @@ class Channel {
));
return response;
} catch (error) {
if (error is DioError && error.type != DioErrorType.RESPONSE) {
if (error is DioError && error.type != DioErrorType.response) {
state?.retryQueue?.add([message]);
}
rethrow;
@@ -446,7 +446,7 @@ class Channel {
return response;
} catch (error) {
if (error is DioError && error.type != DioErrorType.RESPONSE) {
if (error is DioError && error.type != DioErrorType.response) {
state?.retryQueue?.add([message]);
}
rethrow;
@@ -74,7 +74,7 @@ class RetryQueue {
} catch (error) {
ApiError apiError;
if (error is DioError) {
if (error.type == DioErrorType.RESPONSE) {
if (error.type == DioErrorType.response) {
_messageQueue.remove(message);
return;
}
+35 -15
View File
@@ -252,7 +252,7 @@ class StreamChatClient {
this.httpClient.options.connectTimeout = connectTimeout.inMilliseconds;
this.httpClient.interceptors.add(
InterceptorsWrapper(
onRequest: (options) async {
onRequest: (options, handler) async {
options.queryParameters.addAll(_commonQueryParams);
options.headers.addAll(_httpHeaders);
@@ -280,15 +280,17 @@ class StreamChatClient {
data: $stringData
''');
return options;
handler.next(options);
},
onError: _tokenExpiredInterceptor,
),
);
}
Future<void> _tokenExpiredInterceptor(DioError err) async {
Future<void> _tokenExpiredInterceptor(
DioError err,
ErrorInterceptorHandler handler,
) async {
final apiError = ApiError(
err.response?.data,
err.response?.statusCode,
@@ -312,17 +314,35 @@ class StreamChatClient {
await connectUser(User(id: userId), newToken);
try {
return await httpClient.request(
err.request.path,
cancelToken: err.request.cancelToken,
data: err.request.data,
onReceiveProgress: err.request.onReceiveProgress,
onSendProgress: err.request.onSendProgress,
queryParameters: err.request.queryParameters,
options: err.request,
handler.resolve(
await httpClient.request(
err.requestOptions.path,
cancelToken: err.requestOptions.cancelToken,
data: err.requestOptions.data,
onReceiveProgress: err.requestOptions.onReceiveProgress,
onSendProgress: err.requestOptions.onSendProgress,
queryParameters: err.requestOptions.queryParameters,
options: Options(
method: err.requestOptions.method,
sendTimeout: err.requestOptions.sendTimeout,
receiveTimeout: err.requestOptions.receiveTimeout,
extra: err.requestOptions.extra,
headers: err.requestOptions.headers,
responseType: err.requestOptions.responseType,
contentType: err.requestOptions.contentType,
validateStatus: err.requestOptions.validateStatus,
receiveDataWhenStatusError:
err.requestOptions.receiveDataWhenStatusError,
followRedirects: err.requestOptions.followRedirects,
maxRedirects: err.requestOptions.maxRedirects,
requestEncoder: err.requestOptions.requestEncoder,
responseDecoder: err.requestOptions.responseDecoder,
listFormat: err.requestOptions.listFormat,
),
),
);
} catch (err) {
return err;
handler.reject(err);
}
}
}
@@ -784,7 +804,7 @@ class StreamChatClient {
}
Object _parseError(DioError error) {
if (error.type == DioErrorType.RESPONSE) {
if (error.type == DioErrorType.response) {
final apiError =
ApiError(error.response?.data, error.response?.statusCode);
logger.severe('apiError: ${apiError.toString()}');
@@ -931,7 +951,7 @@ class StreamChatClient {
_connectCompleter = Completer();
_anonymous = true;
final uuid = Uuid();
const uuid = Uuid();
state.user = OwnUser(id: uuid.v4());
return connect().then((event) {
@@ -35,7 +35,7 @@ class Attachment {
this.extraData,
this.file,
UploadState uploadState,
}) : id = id ?? Uuid().v4(),
}) : id = id ?? const Uuid().v4(),
title = title ?? file?.name,
localUri = file?.path != null ? Uri.parse(file.path) : null {
this.uploadState = uploadState ??
@@ -73,7 +73,7 @@ class Message {
this.deletedAt,
this.status = MessageSendingStatus.sent,
this.skipPush,
}) : id = id ?? Uuid().v4(),
}) : id = id ?? const Uuid().v4(),
pinExpires = pinExpires?.toUtc();
/// Create a new instance from a json