package taskboard

func taskTimelineDiscussionEntries(page GetTaskTimelineResponse) []TaskDiscussionEntry {
	entries := make([]TaskDiscussionEntry, 0, len(page.Entries))
	for _, entry := range page.Entries {
		if entry.Kind != TaskTimelineEntryKindDiscussion || entry.Discussion == nil {
			continue
		}
		entries = append(entries, *entry.Discussion)
	}
	return entries
}

func taskTimelineActivityEvents(page GetTaskTimelineResponse) []TaskActivityEvent {
	events := make([]TaskActivityEvent, 0, len(page.Entries))
	for _, entry := range page.Entries {
		if entry.Kind != TaskTimelineEntryKindActivity || entry.Activity == nil {
			continue
		}
		events = append(events, *entry.Activity)
	}
	return events
}

func taskDetailDiscussionEntries(detail TaskDetail) []TaskDiscussionEntry {
	entries := make([]TaskDiscussionEntry, 0, len(detail.Timeline))
	for _, entry := range detail.Timeline {
		if entry.Kind != TaskTimelineEntryKindDiscussion || entry.Discussion == nil {
			continue
		}
		entries = append(entries, *entry.Discussion)
	}
	return entries
}

func taskDetailActivityEvents(detail TaskDetail) []TaskActivityEvent {
	events := make([]TaskActivityEvent, 0, len(detail.Timeline))
	for _, entry := range detail.Timeline {
		if entry.Kind != TaskTimelineEntryKindActivity || entry.Activity == nil {
			continue
		}
		events = append(events, *entry.Activity)
	}
	return events
}
