Open adummy832 opened 7 months ago
you need to listen to the request to execute it
and you can use the error link for single retries: https://pub.dev/packages/gql_error_link
@knaeckeKami, I updated my code by modifying the dioLink and removing the interceptor but sadly it still does not work. Am i missing something here? Really need your guidance. Thanks man.
/// dioLink
_dioLink = Link.from([
ErrorLink(
onException: (request, forward, exception) async* {
/// Still does not print ???
/// Need help !!!
print('VERIFY_PRINT: 1');
if (exception is DioLinkTimeoutException) {
print('VERIFY_PRINT: 2');
yield* forward(request);
return;
}
throw exception;
},
),
DioLink(
baseUrl,
client: _dio,
),
]);
/// Request onTimeout function body
final requestOptions = RequestOptions();
final error = DioLinkTimeoutException(
type: DioExceptionType.connectionTimeout,
originalException: DioException.connectionTimeout(
timeout: duration,
requestOptions: requestOptions,
),
originalStackTrace: null,
);
sink.addError(error);
sink.close();
/// Client
final req = OperationRequest(...);
final response = ferryClient.request(req).first;
/// TODO: Check response
please share a minimal reproducible example of what you're trying to do
Hello, @knaeckeKami I created a repository for this alongside with the configs that I have. Hoping you could check this one out. Thanks man.
Yeah, that's not going to work. Generally, don't extend the client class.
If you add the error in a subclass of the client after the request() method, the Dio links have no chance of handling it, they already ran at this point.
If you want to test timeout, you can replace the diolink with a custom link that just throws a timeout error for every request.
Hello, @knaeckeKami, i have this very basic app that uses dio and gql. My problem is that the interceptor for retry is not being triggered.
I just wanted to ask if you have any idea of what am i doing wrong? Also, would greatly appreciate if you could point me into some examples on how to properly implement this Retry? Thanks!
Please refer to the code below.