30 lines
844 B
TypeScript
30 lines
844 B
TypeScript
import type { TenantEmotion } from '../api';
|
|
|
|
export function filterEmotionsByEventType(
|
|
emotions: TenantEmotion[],
|
|
eventTypeId: number | null,
|
|
): TenantEmotion[] {
|
|
if (!Array.isArray(emotions) || emotions.length === 0) {
|
|
return [];
|
|
}
|
|
|
|
const filtered = emotions.filter((emotion) => {
|
|
if (!emotion.is_active) {
|
|
return false;
|
|
}
|
|
if (!eventTypeId) {
|
|
return true;
|
|
}
|
|
if (!Array.isArray(emotion.event_types) || emotion.event_types.length === 0) {
|
|
return true;
|
|
}
|
|
return emotion.event_types.some((type) => type?.id === eventTypeId);
|
|
});
|
|
|
|
return filtered.sort((a, b) => {
|
|
const left = typeof a.sort_order === 'number' ? a.sort_order : Number.MAX_SAFE_INTEGER;
|
|
const right = typeof b.sort_order === 'number' ? b.sort_order : Number.MAX_SAFE_INTEGER;
|
|
return left - right;
|
|
});
|
|
}
|