Description.fromRuns constructor

Description.fromRuns(
  1. List<JsonMap> descriptionRuns
)

Create Description from descriptionRuns List.

Implementation

factory Description.fromRuns(List<JsonMap> descriptionRuns) {
  final elements = <DescriptionElement>[];

  for (final run in descriptionRuns) {
    final navigationEndpoint = nav(run, [
      'navigationEndpoint',
    ], nullIfAbsent: true);
    DescriptionElement element;

    if (navigationEndpoint != null) {
      element = DescriptionElement(text: '');
      if ((navigationEndpoint as Map).containsKey('urlEndpoint')) {
        element = Link(
          text: run['text'] as String,
          url:
              (navigationEndpoint['urlEndpoint'] as JsonMap)['url'] as String,
        );
      } else if (navigationEndpoint.containsKey('watchEndpoint')) {
        element = Timestamp(
          text: run['text'] as String,
          seconds:
              nav(navigationEndpoint, ['watchEndpoint', 'startTimeSeconds'])
                  as int,
        );
      }
    } else {
      element = DescriptionElement(
        text: (nav(run, ['text'], nullIfAbsent: true) ?? '') as String,
      );
    }

    elements.add(element);
  }

  return Description(elements);
}