ImagePackContent.fromJson constructor

ImagePackContent.fromJson(
  1. Map<String, Object?> json
)

Implementation

ImagePackContent.fromJson(Map<String, Object?> json)
    : _json = Map.fromEntries(json.entries.where(
          (e) => !['images', 'pack', 'emoticons', 'short'].contains(e.key))),
      pack = ImagePackPackContent.fromJson(
          json.tryGetMap<String, Object?>('pack') ?? {}),
      images = json.tryGetMap<String, Object?>('images')?.catchMap((k, v) =>
              MapEntry(
                  k,
                  ImagePackImageContent.fromJson(
                      v as Map<String, Object?>))) ??
          // the "emoticons" key needs a small migration on the key, ":string:" --> "string"
          json.tryGetMap<String, Object?>('emoticons')?.catchMap((k, v) =>
              MapEntry(
                  k.startsWith(':') && k.endsWith(':')
                      ? k.substring(1, k.length - 1)
                      : k,
                  ImagePackImageContent.fromJson(
                      v as Map<String, Object?>))) ??
          // the "short" key was still just a map from shortcode to mxc uri
          json.tryGetMap<String, String>('short')?.catchMap((k, v) =>
              MapEntry(
                  k.startsWith(':') && k.endsWith(':')
                      ? k.substring(1, k.length - 1)
                      : k,
                  ImagePackImageContent(url: Uri.parse(v)))) ??
          {};