import type { ChatMessage } from '@/app/room/_components/types'
import { canViewModeratorOnlySystemMessage } from '@/app/room/_components/chat/banChatHelpers'

export function filterVisibleChatMessages(
    messages: ChatMessage[],
    options: {
        hideSystemMessages?: boolean
        showGiftMessages?: boolean
        currentUserId?: string | null
        isModerator?: boolean
    }
): ChatMessage[] {
    const { hideSystemMessages = false, showGiftMessages = true, currentUserId, isModerator = false } = options

    return messages
        .filter((m) => (hideSystemMessages ? !m.isSystem : true))
        .filter((m) => (showGiftMessages ? true : !m.gift))
        .filter((m) => canViewModeratorOnlySystemMessage(m, currentUserId, isModerator))
}
