import { capitalize, plural } from '../../utils' import { Show } from 'solid-js/web' import './Card.scss' import { createMemo } from 'solid-js' import type { Topic } from '../../graphql/types.gen' import { FollowingEntity } from '../../graphql/types.gen' import { t } from '../../utils/intl' import { locale } from '../../stores/ui' import { useAuthStore } from '../../stores/auth' import { follow, unfollow } from '../../stores/zine/common' import { getLogger } from '../../utils/logger' const log = getLogger('TopicCard') interface TopicProps { topic: Topic compact?: boolean subscribed?: boolean shortDescription?: boolean subscribeButtonBottom?: boolean } export const TopicCard = (props: TopicProps) => { const { session } = useAuthStore() const subscribed = createMemo(() => { if (!session()?.user?.slug || !session()?.info?.topics) { return false } return props.topic.slug in session().info.topics }) // FIXME use store actions const subscribe = async (really = true) => { if (really) { follow({ what: FollowingEntity.Topic, slug: props.topic.slug }) } else { unfollow({ what: FollowingEntity.Topic, slug: props.topic.slug }) } } return (
{props.topic.body}
{props.topic.stat?.shouts + ' ' + t('post') + plural( props.topic.stat?.shouts || 0, locale() === 'ru' ? ['ов', '', 'а'] : ['s', '', 's'] )} {props.topic.stat?.authors + ' ' + t('author') + plural( props.topic.stat?.authors || 0, locale() === 'ru' ? ['ов', '', 'а'] : ['s', '', 's'] )} {props.topic.stat?.followers + ' ' + t('follower') + plural( props.topic.stat?.followers || 0, locale() === 'ru' ? ['ов', '', 'а'] : ['s', '', 's'] )} {/*FIXME*/} {/**/} {/* */} {/* {topic().stat?.viewed +*/} {/* ' ' +*/} {/* t('view') +*/} {/* plural(*/} {/* topic().stat?.viewed || 0,*/} {/* locale() === 'ru' ? ['ов', '', 'а'] : ['s', '', 's']*/} {/* )}*/} {/* */} {/**/} {/* {subscribers().toString() + ' ' + t('follower') + plural( subscribers(), locale() === 'ru' ? ['ов', '', 'а'] : ['s', '', 's'] )} */}
subscribe(true)} class="button--light"> + {t('Follow')} } >
) }