import { createSignal, For, createEffect } from 'solid-js' import styles from './CreateModalContent.module.scss' import { t } from '../../utils/intl' import InviteUser from './InviteUser' import type { Author } from '../../graphql/types.gen' import { hideModal } from '../../stores/ui' import { useInbox } from '../../context/inbox' type InvitingUser = Author & { selected: boolean } type query = | { theme: string members: string[] } | undefined type Props = { users: Author[] } const CreateModalContent = (props: Props) => { const inviteUsers: InvitingUser[] = props.users.map((user) => ({ ...user, selected: false })) const [title, setTitle] = createSignal('') const [uids, setUids] = createSignal([]) const [collectionToInvite, setCollectionToInvite] = createSignal(inviteUsers) let textInput: HTMLInputElement const reset = () => { setTitle('') setUids([]) hideModal() } createEffect(() => { console.log(collectionToInvite()) setUids(() => { return collectionToInvite() .filter((user: InvitingUser) => { return user.selected === true }) .map((user: InvitingUser) => { return user.id }) }) if (uids().length > 1 && title().length === 0) { setTitle(t('group_chat')) } }) const handleSetTheme = () => { setTitle(textInput.value.length > 0 && textInput.value) } const handleClick = (user) => { setCollectionToInvite((userCollection: InvitingUser[]) => { return userCollection.map((clickedUser: InvitingUser) => user.slug === clickedUser.slug ? { ...clickedUser, selected: !clickedUser.selected } : clickedUser ) }) } const { chatEntities, actions } = useInbox() console.log('!!! chatEntities:', chatEntities) const handleCreate = async () => { try { const initChat = await actions.createChat(uids(), title()) console.debug('[initChat]', initChat) } catch (error) { console.error(error) } } return (

{t('create_chat')}

{uids().length > 1 && ( )}
{(author: InvitingUser) => ( handleClick(author)} author={author} selected={author.selected} /> )}
) } export default CreateModalContent