import React from 'react';
import MessageBox from '@/components/MessageBox';
import { useStoreState } from 'easy-peasy';
import tw from 'twin.macro';

type Props = Readonly<{
    byKey?: string;
    className?: string;
}>;

const FlashMessageRender = ({ byKey, className }: Props) => {
    const flashes = useStoreState(state => state.flashes.items.filter(
        flash => byKey ? flash.key === byKey : true,
    ));

    return (
        flashes.length ?
            <div className={className}>
                {
                    flashes.map((flash, index) => (
                        <React.Fragment key={flash.id || flash.type + flash.message}>
                            {index > 0 && <div css={tw`mt-2`}></div>}
                            <MessageBox type={flash.type} title={flash.title}>
                                {flash.message}
                            </MessageBox>
                        </React.Fragment>
                    ))
                }
            </div>
            :
            null
    );
};

export default FlashMessageRender;