import { createEffect, createSignal, For, Show } from 'solid-js' import type { Topic } from '../../graphql/types.gen' import { byFirstChar, sortBy } from '../../utils/sortby' import Icon from '../Nav/Icon' import { t } from '../../utils/intl' import { useTopicsStore } from '../../stores/zine/topics' import { params as paramstore, handleClientRouteLinkClick, router } from '../../stores/router' import { TopicCard } from '../Topic/Card' import { session } from '../../stores/auth' import { useStore } from '@nanostores/solid' import '../../styles/AllTopics.scss' import { groupByTitle } from '../../utils/groupby' export const AllTopicsPage = (props: { topics?: Topic[] }) => { const [, setSortedTopics] = createSignal[]>([]) const [, setSortedKeys] = createSignal() const [abc, setAbc] = createSignal([]) const { getSortedTopics } = useTopicsStore({ topics: props.topics || [] }) const auth = useStore(session) const subscribed = (s) => Boolean(auth()?.info?.topics && auth()?.info?.topics?.includes(s || '')) const params = useStore(paramstore) createEffect(() => { if (abc().length === 0 && (!params()['by'] || params()['by'] === 'abc')) { console.log('[topics] default grouping by abc') const grouped = { ...groupByTitle(getSortedTopics()) } grouped['A-Z'] = sortBy(grouped['A-Z'], byFirstChar) setAbc(grouped) const keys = Object.keys(abc) keys.sort() setSortedKeys(keys as string[]) } else { console.log('[topics] sorting by ' + params()['by']) setSortedTopics(sortBy(getSortedTopics(), params()['by'])) } }, [getSortedTopics(), params()]) return (
0}>
{(topic) => ( )}
{/*FIXME*/} {/* (*/} {/*
*/} {/* */} {/* {(topic: Topic) => (*/} {/* */} {/* )}*/} {/* */} {/*
*/} {/* )}*/} {/*>*/} {/* */} {/* {(letter: string) => (*/} {/*
*/} {/*

{letter}

*/} {/*
*/} {/*
*/} {/* */} {/* {(topic: Partial) => (*/} {/*
*/} {/*
*/} {/* {topic.title}*/} {/*
*/} {/*
*/} {/* )}*/} {/*
*/} {/*
*/} {/*
*/} {/*
*/} {/* )}*/} {/*
*/} {/**/}
) }