import { clsx } from 'clsx' import { createEffect, createSignal, For, onMount, Show } from 'solid-js' import { useLocalize } from '../../../context/localize' import { useSession } from '../../../context/session' import { apiClient } from '../../../graphql/client/core' import { Author, Topic } from '../../../graphql/schema/core.gen' import { SubscriptionFilter } from '../../../pages/types' import { dummyFilter } from '../../../utils/dummyFilter' // TODO: refactor styles import { isAuthor } from '../../../utils/isAuthor' import { Loading } from '../../_shared/Loading' import { SearchField } from '../../_shared/SearchField' import { AuthorBadge } from '../../Author/AuthorBadge' import { ProfileSettingsNavigation } from '../../Nav/ProfileSettingsNavigation' import { TopicBadge } from '../../Topic/TopicBadge' import styles from '../../../pages/profile/Settings.module.scss' import stylesSettings from '../../../styles/FeedSettings.module.scss' export const ProfileSubscriptions = () => { const { t, lang } = useLocalize() const { author } = useSession() const [following, setFollowing] = createSignal>([]) const [filtered, setFiltered] = createSignal>([]) const [subscriptionFilter, setSubscriptionFilter] = createSignal('all') const [searchQuery, setSearchQuery] = createSignal('') const fetchSubscriptions = async () => { try { const slug = author()?.slug const [getAuthors, getTopics] = await Promise.all([ apiClient.getAuthorFollowingAuthors({ slug }), apiClient.getAuthorFollowingTopics({ slug }), ]) setFollowing([...getAuthors, ...getTopics]) setFiltered([...getAuthors, ...getTopics]) } catch (error) { console.error('[fetchSubscriptions] :', error) throw error } } createEffect(() => { if (following()) { if (subscriptionFilter() === 'authors') { setFiltered(following().filter((s) => 'name' in s)) } else if (subscriptionFilter() === 'topics') { setFiltered(following().filter((s) => 'title' in s)) } else { setFiltered(following()) } } if (searchQuery()) { setFiltered(dummyFilter(following(), searchQuery(), lang())) } }) onMount(async () => { await fetchSubscriptions() }) return (

{t('My subscriptions')}

{t('Here you can manage all your Discours subscriptions')}

}>
setSearchQuery(value)} class={styles.searchField} variant="bordered" />
{(followingItem) => (
{isAuthor(followingItem) ? ( ) : ( )}
)}
) }