getDataFrom method

Either<List<Content>, String?>? getDataFrom({
  1. required Content content,
  2. Includes? includes,
})

Implementation

Either<List<Content>, String?>? getDataFrom({
  required Content content,
  Includes? includes,
}) {
  final modifiedContent = content.copyWith(
    parentNodeType: content.parentNodeType,
    subContent: content.subContent
            ?.map((e) => e.copyWith(parentNodeType: content.nodeType))
            .toList() ??
        [],
  );
  final nodeType = modifiedContent.nodeType;
  final subContent = modifiedContent.subContent;

  if ((nodeType.isEmbeddedAssetBlock) && includes != null) {
    // Returns String
    return right(
      getAssetUrlFrom(
        assetId: modifiedContent.data!.target!.sys!.idOrNull,
        includes: includes,
      ),
    );
  } else if (nodeType.isHorizontalDivider) {
    // Returns String
    return const Right(ContentfulAPIConstants.horizontalDivider);
  } else {
    // Returns Content but we make it List<Content> to match the return type
    return left([modifiedContent.copyWith(subContent: subContent)]);
  }
}