import React from 'react'; import styled, { css } from 'styled-components'; import media from '@kiwicom/orbit-components/lib/utils/mediaQuery'; import dynamic from 'next/dynamic'; // components import BlackText from '@components/text/BlackText'; import { Grid } from '@kiwicom/orbit-components/lib'; import { InstantSearch, Configure, connectInfiniteHits } from 'react-instantsearch-dom'; import { WishesHitWrapper } from './components'; import { MaxWidthContainer } from '@components/containers'; // constants and utils import { WISHES_BATCH_SIZE } from '@api/constants'; import { getNpoWishes } from '@utils/algolia/filteringRules'; import { wishesSortByRule } from '@utils/algolia/sortByRules'; import { searchClient } from '@utils/algolia'; // hooks import useUser from '@components/session/modules/useUser'; const WishesSortFilterPanel = dynamic(() => import('./components/OrgWishesSortFilterPanel'), { ssr: false, }); const WishesInfiniteHit = connectInfiniteHits(WishesHitWrapper); const ViewAllWishesContainer = styled(MaxWidthContainer)` margin-top: 25px; margin-bottom: 40px; `; const GridSectionContainer = styled.div` margin-top: 20px; `; const WishesContainer = styled.div` width: fit-content; margin: 0 auto; ${media.largeMobile(css` margin: 0; width: 100%; `)}; `; const OrganizationWishes = ({ organization }) => { const user = useUser(); const category = { id: '', name: 'All wishes', }; return ( <InstantSearch searchClient={searchClient} indexName="wishes"> <ViewAllWishesContainer> <Grid columnGap="20px" desktop={{ columns: '1fr 6fr', }} rows="1fr auto" > <GridSectionContainer> <WishesSortFilterPanel category={null} /> </GridSectionContainer> <GridSectionContainer> <BlackText style={{ marginBottom: '10px' }} size="large"> All Wishes </BlackText> {/* Algolia */} <Configure filters={getNpoWishes(organization.id)} hitsPerPage={WISHES_BATCH_SIZE} aroundRadius={10000} enablePersonalization={true} userToken={user?.userId} clickAnalytics={true} /> <WishesContainer> {/* Desktop,Tablet,Mobile has infinite scrolling */} <WishesInfiniteHit category={category} minHitsPerPage={WISHES_BATCH_SIZE} /> </WishesContainer> </GridSectionContainer> </Grid> </ViewAllWishesContainer> </InstantSearch> ); }; export default OrganizationWishes;