deleteImageByHash<DataT extends Data> method

Future<String?> deleteImageByHash<DataT extends Data>(
  1. DataT? data,
  2. String hash, {
  3. Data? caller,
  4. bool forceUpdate = false,
})

deletes an image specified by its hash and returns the response

Implementation

Future<String?> deleteImageByHash<DataT extends Data>(
  DataT? data,
  String hash, {
  Data? caller,
  bool forceUpdate = false,
}) async {
  final requestType = Helper.SimulatedRequestType.PUT;
  await _touchPrueferIfNeeded(
    requestType: requestType,
    data: data,
    caller: caller,
  );
  final requestedHash = hash.trim();
  final scope = local.scopeFor(data, caller: caller);
  var remoteHash = requestedHash;
  try {
    final mapped = await lookupHashForImageName(
      requestedHash,
      scope: scope,
    );
    if (mapped != null && mapped.trim().isNotEmpty) {
      remoteHash = mapped.trim();
    }
  } catch (_) {}

  if (data?.mainhash != null &&
      (data!.mainhash == requestedHash || data.mainhash == remoteHash)) {
    data.mainhash = null;
    debugPrint('deleted mainhash');
    await update(data, caller: caller, forceUpdate: forceUpdate);
  }

  final prefersCache = forceUpdate
      ? false
      : (_dataPrefersCache(data, type: requestType) ??
          _dataPrefersCache(caller, type: requestType) ??
          false);
  debugPrint(
    'deleteImageByHash: requested=$requestedHash remote=$remoteHash forceUpdate=$forceUpdate prefersCache=$prefersCache',
  );

  return _run(
    itPrefersCache: prefersCache,
    // offline: () => local.setMainImageByHash(
    //   data,
    //   hash,
    //   caller: caller,
    //   forceUpdate: forceUpdate,
    // ),
    offline: () => local.deleteImageByHash(
      data,
      requestedHash,
      canonicalHash: remoteHash,
      caller: caller,
      forceUpdate: forceUpdate,
    ),
    online: () => remote.deleteImageByHash(
      remoteHash,
      data: data,
    ),
    requestType: requestType,
  ).last;
}