import type { Author, Topic } from '../../graphql/schema/core.gen' import { clsx } from 'clsx' import { Show, createEffect, createSignal } from 'solid-js' import { useFollowing } from '../../context/following' import { useLocalize } from '../../context/localize' import { useSession } from '../../context/session' import { FollowingEntity } from '../../graphql/schema/core.gen' import { Button } from '../_shared/Button' import { FollowingCounters } from '../_shared/FollowingCounters/FollowingCounters' import { Icon } from '../_shared/Icon' import styles from './Full.module.scss' type Props = { topic: Topic followers?: Author[] authors?: Author[] } export const FullTopic = (props: Props) => { const { t } = useLocalize() const { follows, changeFollowing } = useFollowing() const { requireAuthentication } = useSession() const [followed, setFollowed] = createSignal() createEffect(() => { if (follows?.topics.length !== 0) { const items = follows.topics || [] setFollowed(items.some((x: Topic) => x?.slug === props.topic?.slug)) } }) const handleFollowClick = (_ev) => { const really = !followed() setFollowed(really) requireAuthentication(() => { changeFollowing(FollowingEntity.Topic, props.topic.slug, really) }, 'follow') } return (