import type { SearchResult } from '../../graphql/schema/core.gen' import { Show, For, createSignal, onMount } from 'solid-js' import '../../styles/Search.scss' import { useLocalize } from '../../context/localize' import { useRouter } from '../../stores/router' import { loadShoutsSearch, useArticlesStore } from '../../stores/zine/articles' import { restoreScrollPosition, saveScrollPosition } from '../../utils/scroll' import { ArticleCard } from '../Feed/ArticleCard' type SearchPageSearchParams = { by: '' | 'relevance' | 'rating' } type Props = { query: string results: SearchResult[] } const LOAD_MORE_PAGE_SIZE = 50 export const SearchView = (props: Props) => { const { t } = useLocalize() const { sortedArticles } = useArticlesStore() const [isLoadMoreButtonVisible, setIsLoadMoreButtonVisible] = createSignal(false) const [query, setQuery] = createSignal(props.query) const [offset, setOffset] = createSignal(0) const { searchParams } = useRouter() let searchEl: HTMLInputElement const handleQueryChange = () => { setQuery(searchEl.value) } const loadMore = async () => { saveScrollPosition() if (query()) { console.log(query()) const { hasMore } = await loadShoutsSearch({ text: query(), offset: offset(), limit: LOAD_MORE_PAGE_SIZE, }) setIsLoadMoreButtonVisible(hasMore) setOffset(offset() + LOAD_MORE_PAGE_SIZE) } else { console.warn('[SaerchView] no query found') } restoreScrollPosition() } onMount(async () => { const q = window.location.pathname.replace('/search/', '') || props.query setQuery(q) searchEl.value = q }) // TODO: use score from the search results to sort by relevance return (
0}>

{t('Publications')}

{(article) => (
)}
) }