use-following-data

This commit is contained in:
Untone 2024-04-08 16:14:19 +03:00
parent 79961b7f47
commit aeb42de908
2 changed files with 12 additions and 14 deletions

View File

@ -29,18 +29,16 @@ export const ProfileSubscriptions = () => {
const [searchQuery, setSearchQuery] = createSignal('') const [searchQuery, setSearchQuery] = createSignal('')
createEffect(() => { createEffect(() => {
if (subscriptions()) { const { authors, topics } = subscriptions
const { authors, topics } = subscriptions() if (authors || topics) {
const fdata = [...authors, ...topics] const fdata = [...(authors || []), ...(topics || [])]
if (fdata) { setFollowing(fdata)
setFollowing(fdata) if (subscriptionFilter() === 'authors') {
if (subscriptionFilter() === 'authors') { setFiltered(fdata.filter((s) => 'name' in s))
setFiltered(fdata.filter((s) => 'name' in s)) } else if (subscriptionFilter() === 'topics') {
} else if (subscriptionFilter() === 'topics') { setFiltered(fdata.filter((s) => 'title' in s))
setFiltered(fdata.filter((s) => 'title' in s)) } else {
} else { setFiltered(fdata)
setFiltered(fdata)
}
} }
} }
}) })

View File

@ -10,7 +10,7 @@ interface FollowingContextType {
loading: Accessor<boolean> loading: Accessor<boolean>
followers: Accessor<Array<Author>> followers: Accessor<Array<Author>>
subscriptions: AuthorFollowsResult subscriptions: AuthorFollowsResult
setSubscriptions: (subscriptions: AuthorFollows) => void setSubscriptions: (subscriptions: AuthorFollowsResult) => void
setFollowing: (what: FollowingEntity, slug: string, value: boolean) => void setFollowing: (what: FollowingEntity, slug: string, value: boolean) => void
loadSubscriptions: () => void loadSubscriptions: () => void
follow: (what: FollowingEntity, slug: string) => Promise<void> follow: (what: FollowingEntity, slug: string) => Promise<void>
@ -33,7 +33,7 @@ const EMPTY_SUBSCRIPTIONS: AuthorFollowsResult = {
export const FollowingProvider = (props: { children: JSX.Element }) => { export const FollowingProvider = (props: { children: JSX.Element }) => {
const [loading, setLoading] = createSignal<boolean>(false) const [loading, setLoading] = createSignal<boolean>(false)
const [followers, setFollowers] = createSignal<Array<Author>>([]) const [followers, setFollowers] = createSignal<Array<Author>>([])
const [subscriptions, setSubscriptions] = createStore<AuthorFollows>(EMPTY_SUBSCRIPTIONS) const [subscriptions, setSubscriptions] = createStore<AuthorFollowsResult>(EMPTY_SUBSCRIPTIONS)
const { author, session } = useSession() const { author, session } = useSession()
const fetchData = async () => { const fetchData = async () => {