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>
);
}
}