Merge pull request #1172 from GetStream/feat/remove-dio-deprecations
refactor(llc): remove dio deprecated methods
This commit is contained in:
@@ -8,7 +8,7 @@ import 'package:stream_chat/src/core/http/token_manager.dart';
|
|||||||
|
|
||||||
/// Authentication interceptor that refreshes the token if
|
/// Authentication interceptor that refreshes the token if
|
||||||
/// an auth error is received
|
/// an auth error is received
|
||||||
class AuthInterceptor extends Interceptor {
|
class AuthInterceptor extends QueuedInterceptor {
|
||||||
/// Initialize a new auth interceptor
|
/// Initialize a new auth interceptor
|
||||||
AuthInterceptor(this._client, this._tokenManager);
|
AuthInterceptor(this._client, this._tokenManager);
|
||||||
|
|
||||||
@@ -57,35 +57,10 @@ class AuthInterceptor extends Interceptor {
|
|||||||
final error = ErrorResponse.fromJson(data);
|
final error = ErrorResponse.fromJson(data);
|
||||||
if (error.code == ChatErrorCode.tokenExpired.code) {
|
if (error.code == ChatErrorCode.tokenExpired.code) {
|
||||||
if (_tokenManager.isStatic) return handler.next(err);
|
if (_tokenManager.isStatic) return handler.next(err);
|
||||||
_client.lock();
|
|
||||||
await _tokenManager.loadToken(refresh: true);
|
await _tokenManager.loadToken(refresh: true);
|
||||||
_client.unlock();
|
|
||||||
try {
|
try {
|
||||||
final options = err.requestOptions;
|
final options = err.requestOptions;
|
||||||
final response = await _client.request(
|
final response = await _client.fetch(options);
|
||||||
options.path,
|
|
||||||
cancelToken: options.cancelToken,
|
|
||||||
data: options.data,
|
|
||||||
onReceiveProgress: options.onReceiveProgress,
|
|
||||||
onSendProgress: options.onSendProgress,
|
|
||||||
queryParameters: options.queryParameters,
|
|
||||||
options: Options(
|
|
||||||
method: options.method,
|
|
||||||
sendTimeout: options.sendTimeout,
|
|
||||||
receiveTimeout: options.receiveTimeout,
|
|
||||||
extra: options.extra,
|
|
||||||
headers: options.headers,
|
|
||||||
responseType: options.responseType,
|
|
||||||
contentType: options.contentType,
|
|
||||||
validateStatus: options.validateStatus,
|
|
||||||
receiveDataWhenStatusError: options.receiveDataWhenStatusError,
|
|
||||||
followRedirects: options.followRedirects,
|
|
||||||
maxRedirects: options.maxRedirects,
|
|
||||||
requestEncoder: options.requestEncoder,
|
|
||||||
responseDecoder: options.responseDecoder,
|
|
||||||
listFormat: options.listFormat,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
return handler.resolve(response);
|
return handler.resolve(response);
|
||||||
} on DioError catch (error) {
|
} on DioError catch (error) {
|
||||||
return handler.next(error);
|
return handler.next(error);
|
||||||
|
|||||||
@@ -76,20 +76,6 @@ class StreamHttpClient {
|
|||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
final Dio httpClient;
|
final Dio httpClient;
|
||||||
|
|
||||||
/// Lock the current [StreamHttpClient] instance.
|
|
||||||
///
|
|
||||||
/// [StreamHttpClient] will enqueue the incoming request tasks instead
|
|
||||||
/// send them directly when [interceptor.requestOptions] is locked.
|
|
||||||
void lock() => httpClient.lock();
|
|
||||||
|
|
||||||
/// Unlock the current [StreamHttpClient] instance.
|
|
||||||
///
|
|
||||||
/// [StreamHttpClient] instance dequeue the request task。
|
|
||||||
void unlock() => httpClient.unlock();
|
|
||||||
|
|
||||||
/// Clear the current [StreamHttpClient] instance waiting queue.
|
|
||||||
void clear() => httpClient.clear();
|
|
||||||
|
|
||||||
/// Shuts down the [StreamHttpClient].
|
/// Shuts down the [StreamHttpClient].
|
||||||
///
|
///
|
||||||
/// If [force] is `false` the [StreamHttpClient] will be kept alive
|
/// If [force] is `false` the [StreamHttpClient] will be kept alive
|
||||||
@@ -280,4 +266,17 @@ class StreamHttpClient {
|
|||||||
throw _parseError(error);
|
throw _parseError(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Handy method to make http requests from [RequestOptions]
|
||||||
|
/// with error parsing.
|
||||||
|
Future<Response<T>> fetch<T>(
|
||||||
|
RequestOptions requestOptions,
|
||||||
|
) async {
|
||||||
|
try {
|
||||||
|
final response = await httpClient.fetch<T>(requestOptions);
|
||||||
|
return response;
|
||||||
|
} on DioError catch (error) {
|
||||||
|
throw _parseError(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2513,7 +2513,7 @@ void main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test(
|
test(
|
||||||
'setting the `currentUser` should also compute and update the unreadCounts',
|
'''setting the `currentUser` should also compute and update the unreadCounts''',
|
||||||
() {
|
() {
|
||||||
final state = client.state;
|
final state = client.state;
|
||||||
final initialUser = OwnUser.fromUser(user);
|
final initialUser = OwnUser.fromUser(user);
|
||||||
|
|||||||
@@ -93,23 +93,11 @@ void main() {
|
|||||||
|
|
||||||
when(() => tokenManager.isStatic).thenReturn(false);
|
when(() => tokenManager.isStatic).thenReturn(false);
|
||||||
|
|
||||||
when(() => client.lock()).thenReturn(() {});
|
|
||||||
|
|
||||||
final token = Token.development('test-user-id');
|
final token = Token.development('test-user-id');
|
||||||
when(() => tokenManager.loadToken(refresh: true))
|
when(() => tokenManager.loadToken(refresh: true))
|
||||||
.thenAnswer((_) async => token);
|
.thenAnswer((_) async => token);
|
||||||
|
|
||||||
when(() => client.unlock()).thenReturn(() {});
|
when(() => client.fetch(options)).thenAnswer((_) async => Response(
|
||||||
|
|
||||||
when(() => client.request(
|
|
||||||
path,
|
|
||||||
data: options.data,
|
|
||||||
onReceiveProgress: options.onReceiveProgress,
|
|
||||||
onSendProgress: options.onSendProgress,
|
|
||||||
queryParameters: options.queryParameters,
|
|
||||||
cancelToken: options.cancelToken,
|
|
||||||
options: any(named: 'options'),
|
|
||||||
)).thenAnswer((_) async => Response(
|
|
||||||
requestOptions: options,
|
requestOptions: options,
|
||||||
statusCode: 200,
|
statusCode: 200,
|
||||||
));
|
));
|
||||||
@@ -127,21 +115,10 @@ void main() {
|
|||||||
|
|
||||||
verify(() => tokenManager.isStatic).called(1);
|
verify(() => tokenManager.isStatic).called(1);
|
||||||
|
|
||||||
verify(() => client.lock()).called(1);
|
|
||||||
|
|
||||||
verify(() => tokenManager.loadToken(refresh: true)).called(1);
|
verify(() => tokenManager.loadToken(refresh: true)).called(1);
|
||||||
verifyNoMoreInteractions(tokenManager);
|
verifyNoMoreInteractions(tokenManager);
|
||||||
|
|
||||||
verify(() => client.unlock()).called(1);
|
verify(() => client.fetch(options)).called(1);
|
||||||
verify(() => client.request(
|
|
||||||
path,
|
|
||||||
data: options.data,
|
|
||||||
onReceiveProgress: options.onReceiveProgress,
|
|
||||||
onSendProgress: options.onSendProgress,
|
|
||||||
queryParameters: options.queryParameters,
|
|
||||||
cancelToken: options.cancelToken,
|
|
||||||
options: any(named: 'options'),
|
|
||||||
)).called(1);
|
|
||||||
verifyNoMoreInteractions(client);
|
verifyNoMoreInteractions(client);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -163,23 +140,11 @@ void main() {
|
|||||||
|
|
||||||
when(() => tokenManager.isStatic).thenReturn(false);
|
when(() => tokenManager.isStatic).thenReturn(false);
|
||||||
|
|
||||||
when(() => client.lock()).thenReturn(() {});
|
|
||||||
|
|
||||||
final token = Token.development('test-user-id');
|
final token = Token.development('test-user-id');
|
||||||
when(() => tokenManager.loadToken(refresh: true))
|
when(() => tokenManager.loadToken(refresh: true))
|
||||||
.thenAnswer((_) async => token);
|
.thenAnswer((_) async => token);
|
||||||
|
|
||||||
when(() => client.unlock()).thenReturn(() {});
|
when(() => client.fetch(options)).thenThrow(err);
|
||||||
|
|
||||||
when(() => client.request(
|
|
||||||
path,
|
|
||||||
data: options.data,
|
|
||||||
onReceiveProgress: options.onReceiveProgress,
|
|
||||||
onSendProgress: options.onSendProgress,
|
|
||||||
queryParameters: options.queryParameters,
|
|
||||||
cancelToken: options.cancelToken,
|
|
||||||
options: any(named: 'options'),
|
|
||||||
)).thenThrow(err);
|
|
||||||
|
|
||||||
authInterceptor.onError(err, handler);
|
authInterceptor.onError(err, handler);
|
||||||
|
|
||||||
@@ -193,21 +158,10 @@ void main() {
|
|||||||
|
|
||||||
verify(() => tokenManager.isStatic).called(1);
|
verify(() => tokenManager.isStatic).called(1);
|
||||||
|
|
||||||
verify(() => client.lock()).called(1);
|
|
||||||
|
|
||||||
verify(() => tokenManager.loadToken(refresh: true)).called(1);
|
verify(() => tokenManager.loadToken(refresh: true)).called(1);
|
||||||
verifyNoMoreInteractions(tokenManager);
|
verifyNoMoreInteractions(tokenManager);
|
||||||
|
|
||||||
verify(() => client.unlock()).called(1);
|
verify(() => client.fetch(options)).called(1);
|
||||||
verify(() => client.request(
|
|
||||||
path,
|
|
||||||
data: options.data,
|
|
||||||
onReceiveProgress: options.onReceiveProgress,
|
|
||||||
onSendProgress: options.onSendProgress,
|
|
||||||
queryParameters: options.queryParameters,
|
|
||||||
cancelToken: options.cancelToken,
|
|
||||||
options: any(named: 'options'),
|
|
||||||
)).called(1);
|
|
||||||
verifyNoMoreInteractions(client);
|
verifyNoMoreInteractions(client);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user