import { PageLayout } from '../../components/_shared/PageLayout' import styles from './Settings.module.scss' import stylesSettings from '../../styles/FeedSettings.module.scss' import { clsx } from 'clsx' import { ProfileSettingsNavigation } from '../../components/Nav/ProfileSettingsNavigation' import { SearchField } from '../../components/_shared/SearchField' import { createEffect, createSignal, For, onMount, Show } from 'solid-js' import { Author, Topic } from '../../graphql/types.gen' import { apiClient } from '../../utils/apiClient' import { useSession } from '../../context/session' import { isAuthor } from '../../utils/isAuthor' import { useLocalize } from '../../context/localize' import { SubscriptionFilter } from '../types' import { Loading } from '../../components/_shared/Loading' import { TopicCard } from '../../components/Topic/Card' import { AuthorCard } from '../../components/Author/AuthorCard' import { dummyFilter } from '../../utils/dummyFilter' export const ProfileSubscriptionsPage = () => { const { t, lang } = useLocalize() const { user, isAuthenticated } = useSession() const [following, setFollowing] = createSignal>([]) const [filtered, setFiltered] = createSignal>([]) const [subscriptionFilter, setSubscriptionFilter] = createSignal('all') const [searchQuery, setSearchQuery] = createSignal('') const fetchSubscriptions = async () => { try { const [getAuthors, getTopics] = await Promise.all([ apiClient.getAuthorFollowingUsers({ slug: user().slug }), apiClient.getAuthorFollowingTopics({ slug: user().slug }) ]) setFollowing([...getAuthors, ...getTopics]) setFiltered([...getAuthors, ...getTopics]) } catch (error) { console.error('[fetchSubscriptions] :', error) throw error } } onMount(async () => { if (isAuthenticated()) { await fetchSubscriptions() } }) createEffect(() => { if (following()) { if (subscriptionFilter() === 'users') { setFiltered(following().filter((s) => 'name' in s)) } else if (subscriptionFilter() === 'topics') { setFiltered(following().filter((s) => 'title' in s)) } else { setFiltered(following()) } } setFiltered(dummyFilter(following(), searchQuery(), lang())) }) return (

{t('My subscriptions')}

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

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