deleteImageByHash<DataT extends Data> method
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;
}