applyStrategy<R, T> method

  1. @override
Future<R?> applyStrategy<R, T>(
  1. AsyncBloc<T> asyncBloc,
  2. String key,
  3. SerializerBloc<R, T> serializerBloc,
  4. int ttlValue,
  5. Storage storage,
)
override

Implementation

@override
Future<R?> applyStrategy<R, T>(
  AsyncBloc<T> asyncBloc,
  String key,
  SerializerBloc<R, T> serializerBloc,
  int ttlValue,
  Storage storage,
) async {
  return await fetchCacheData<R, T>(
        key,
        serializerBloc,
        storage,
        ttlValue: ttlValue,
      ) ??
      serializerBloc(
        await invokeAsync<T>(asyncBloc, key, storage).onError(
          (RestException<T> restError, stackTrace) {
            if (restError.code == 403 || restError.code == 404) {
              storage.clear(prefix: key);
              return Future.error(restError);
            }
            return Future.value();
          },
        ),
      );
}