renderEventItem()

in src/views/inbox/inbox.tsx [317:400]


  renderEventItem(event: ChangeEvent) {
    const {issueLinkTypes} = this.props;

    const textChangeEventName = (e: ChangeEvent): string =>
      getEventTitle(
        {
          ...e,
          field: {
            id: e.category.toLowerCase(),
            presentation: e.name,
          },
        },
        true,
      );

    const renderEventName = (e: ChangeEvent) => (
      <Text style={styles.textSecondary}>{e.name}: </Text>
    );

    if (!this.hasAddedValues(event) && !this.hasRemovedValues(event)) {
      return null;
    }

    switch (true) {
      case event.category === Category.WORK:
        const work: ChangeValue = event.addedValues[0];
        const activityGroup: any = {
          work: {
            added: [
              {
                date: work.date,
                duration: {
                  presentation: work.duration,
                },
                text: work.description,
                type: {
                  name: work.workType,
                },
              },
            ],
          },
        };
        return <StreamWork activityGroup={activityGroup as any} />;

      case event.category === Category.COMMENT:
        //TODO(xi-eye): filter out text update events
        return (
          <View style={styles.change}>
            {this.hasRemovedValues(event) &&
              (this.getChangeValue(event.removedValues[0]).length ? (
                this.renderTextDiff(event, textChangeEventName(event))
              ) : (
                <View>
                  {renderEventName(event)}
                  {this.renderValues(event.addedValues, event.entityId)}
                </View>
              ))}
          </View>
        );

      case event.category === Category.SUMMARY ||
        event.category === Category.DESCRIPTION:
        return this.renderTextDiff(event, textChangeEventName(event));

      case event.category === Category.LINKS:
        return (
          <View style={styles.change}>
            {renderEventName({
              ...event,
              name: issueLinkTypes[event.name.toLowerCase()] || event.name,
            })}
            {this.renderLinks(event)}
          </View>
        );

      default:
        return (
          <View style={styles.change}>
            {renderEventName(event)}
            {this.renderCustomFieldChange(event)}
          </View>
        );
    }
  }