getImageByHash method

Future<ImageData<Object>?> getImageByHash(
  1. String hash, {
  2. bool compressed = false,
  3. Data? owner,
})

gets image specified by its hash

Implementation

Future<ImageData?> getImageByHash(String hash,
    {bool compressed = false, Data? owner}) async {
  // Scoped/local hashes (with folders or local prefix) must not trigger remote fetches
  final isLocalScoped =
      hash.contains('/') || hash.startsWith(LOCALLY_ADDED_PREFIX);
  if (isLocalScoped) {
    try {
      return await local.getImageByHash(hash,
          compressed: compressed, owner: owner);
    } catch (_) {
      // fallback to normal flow below if not found locally
    }
  }
  final requestType = Helper.SimulatedRequestType.GET;
  return _run(
    itPrefersCache:
        isLocalScoped, //! wir nehmen immer lieber lokale bilder, bandbreite und so
    offline: () =>
        local.getImageByHash(hash, compressed: compressed, owner: owner),
    online: () =>
        remote.getImageByHash(hash, compressed: compressed, owner: owner),
    requestType: requestType,
  ).last;
}