--- import Avatar from './Avatar.astro' import chats from '@data/chats.json' import people from '@data/people.json' import { requireIndex } from '@shared/lib/array' interface Person { full_name?: string photo?: string [key: string]: unknown } interface Message { 'timestamp'?: string 'person-id': number 'message'?: string 'loading'?: boolean 'gif'?: string } interface Props { wide?: boolean } const { wide } = Astro.props const messages = chats as Message[] const peopleList = people as Person[] ---
{ messages.map((message) => { const person = requireIndex(peopleList, message['person-id']) const me = message['person-id'] === 0 const messageColClass = message.loading ? 'col-auto' : `col${wide ? ' col-lg-6' : ''}` const avatar = (
) const messageBlock = (
{!message.loading && (
{person.full_name}
{message.timestamp}
)}
{message.loading ? (

typing

) : (

)} {message.gif && (

)}
) return (
{me ? ( {messageBlock} {avatar} ) : ( {avatar} {messageBlock} )}
) }) }