import React, { useEffect, useState } from 'react'; import { storiesOf } from '@storybook/react'; import { AlgoliaSearchProvider, useAlgoliaSearch } from './AlgoliaSearchProvider'; import analyticsStream from '../../fixtures/analytics-actions/analytics-actions'; import { AlgoliaArticle, SearchRelatedArticlesResult } from './algoliaRelatedArticles'; import { InArticleRelatedArticles } from '../../components/in-article-related-articles/InArticleRelatedArticles'; import { RelatedArticleType } from '../../components/in-article-related-articles/RelatedArticle'; const App = () => { const { getRelatedArticles } = useAlgoliaSearch(); const [results, setResults] = useState(); useEffect( () => { // tslint:disable-next-line:no-console console.log('article.,getRelatedArticles', getRelatedArticles); if (getRelatedArticles) { getRelatedArticles().then(searchResults => setResults(searchResults)); } }, [getRelatedArticles] ); const relatedArticles: RelatedArticleType[] = results ? results.items.map(result => ({ label: result.article.label, headline: result.article.headline, link: result.article.url, image: result.article.leadAsset && result.article.leadAsset.crop169 && result.article.leadAsset.crop169.url })) : []; // tslint:disable-next-line:no-console console.log({ results }); // tslint:disable-next-line:no-console console.log({ relatedArticles }); return (
); }; const algoliaSearchKeys = { applicationId: process.env.STORYBOOK_ALGOLIA_ID || '', apiKey: process.env.STORYBOOK_ALGOLIA_KEY || '', indexName: process.env.STORYBOOK_ALGOLIA_INDEX || '' }; storiesOf('Typescript Component/Algolia/Helper', module).add( 'Related Articles', () => { const [id, setID] = useState(''); const [headline, setHeadline] = useState(''); const [section, setSection] = useState(''); const [label, setLabel] = useState(''); const [topics, setTopics] = useState(''); const [byline, setByline] = useState(''); const [article, setArticle] = useState(null); const handleSearchClick = () => { setArticle({ id, section, label, topics: topics.split(',').map(name => ({ name })), headline, bylines: [ { byline: [ { attributes: {}, children: [ { attributes: { value: byline }, children: [], name: 'text' } ], name: 'inline' } ] } ] }); }; const handleClearClick = () => { return; }; return (
id setID(evt.target.value)} />
Headline setHeadline(evt.target.value)} />
Section setSection(evt.target.value)} />
Label setLabel(evt.target.value)} />
Topics setTopics(evt.target.value)} />
Byline setByline(evt.target.value)} />
); } );