From dece6e8c47b17b94f51c7cbe9b8bcc6e7a22f909 Mon Sep 17 00:00:00 2001 From: Alfred Melch Date: Sat, 1 Feb 2020 09:24:31 +0100 Subject: [PATCH] Remove old search --- src/App.js | 4 +- src/components/GutenbergSearch.js | 83 ------------------------------- 2 files changed, 2 insertions(+), 85 deletions(-) delete mode 100644 src/components/GutenbergSearch.js diff --git a/src/App.js b/src/App.js index ad6d926..2796bc7 100644 --- a/src/App.js +++ b/src/App.js @@ -2,7 +2,7 @@ import React from 'react' import { useTranslation } from 'react-i18next' import { RsvpReader } from './components/RsvpReader' -import { GutenbergSearch } from './components/GutenbergSearch' +import { SearchBar } from './components/SearchBar' import './App.css' import { LangSelect } from './components/LangSelect' @@ -13,11 +13,11 @@ export const App = () => { <>

{t('title')}

+
-
diff --git a/src/components/GutenbergSearch.js b/src/components/GutenbergSearch.js deleted file mode 100644 index da79aa3..0000000 --- a/src/components/GutenbergSearch.js +++ /dev/null @@ -1,83 +0,0 @@ -import React, { useState, useEffect, useCallback } from 'react' -import axios from 'axios' -import { useDispatch } from 'react-redux' -import { debounce } from 'debounce' - -import { setText, setLang } from '../store/actions.js' - -async function search(searchTerm) { - const regex = new RegExp(searchTerm, 'i') - const result = [] - const data = await import('../../data/gutenberg.json').then( - module => module.default - ) - for (let entry of data) { - if (regex.test(entry.title[0]) || regex.test(entry.author[0])) { - result.push(entry) - } - - if (result.length >= 20) break - } - return result -} - -const Book = ({ entry }) => { - const dispatch = useDispatch() - const { author, language, rights, subject, title, id } = entry - - const handleClick = async () => { - const url = `https://gutenberg.muperfredi.de/texts/${id}/stripped-body` - const text = await axios.get(url).then(res => res.data.body) - dispatch(setText(text)) - dispatch(setLang(language[0])) - } - return ( -
-
- {id} {title.join(' – ')} -
-
{author[0]}
-
{language.join(' – ')}
-
- -
-

-
- ) -} - -export const GutenbergSearch = () => { - const [searchTerm, setSearchTerm] = useState('') - const [result, setResult] = useState([]) - const [loading, setLoading] = useState(false) - - const debouncedSearch = useCallback( - debounce(async term => { - setLoading(true) - await search(term).then(setResult) - setLoading(false) - }, 500), - [] - ) - - useEffect(() => { - if (searchTerm.length > 0) { - debouncedSearch(searchTerm) - } - }, [searchTerm, debouncedSearch]) - - return ( -
-

Search for books in the Gutenberg Project

- setSearchTerm(e.target.value)} - > - {loading && 'loading...'} - {result.map(entry => ( - - ))} - {result.length === 0 &&
'no results to display'
} -
- ) -}