diff --git a/src/Pages/Search.js b/src/Pages/Search.js index df73156155fd5ba1405a6601bd900df4448c7efa..5e5fcbd8c572eff3e3439dce20827644de52ce1d 100644 --- a/src/Pages/Search.js +++ b/src/Pages/Search.js @@ -50,11 +50,11 @@ export default function Search(props) { const [resultsCollection, setResultsCollection] = useState([]); const [resultsUser, setResultsUser] = useState([]); const [currOrder, setCurrOrder] = useState(order); - const [page] = useState(0); + const [page, setPage] = useState(0); const [isloading, setIsLoading] = useState(false); const [loadingMoreData, setLoadingMoreData] = useState(false); const [isFiltering, setIsFiltering] = useState(false); - const [resultsPerPage, setResultsPerPage] = useState(12); + const [resultsPerPage] = useState(12); const [showingResults, setShowingResults] = useState(0); const [totalResults, setTotalResults] = useState(0); const [options] = React.useState([ @@ -78,9 +78,15 @@ export default function Search(props) { currOption = option; function handleSuccessfulGet(data, headers) { - if (currOption === "LearningObject") setResultsResource(data); - else if (currOption === "Collection") setResultsCollection(data); - else if (currOption === "User") setResultsUser(data); + if (currOption === "LearningObject") { + setResultsResource((previousData) => previousData.concat(data)); + } + else if (currOption === "Collection") { + setResultsCollection((previousData) => previousData.concat(data)); + } + else if (currOption === "User") { + setResultsUser((previousData) => previousData.concat(data)); + } dispatch({ type: "SAVE_SEARCH", newSearch: { @@ -91,7 +97,7 @@ export default function Search(props) { if (headers.has('X-Total-Count')) { setTotalResults(headers.get('X-Total-Count')); } - setShowingResults(data.length) + setShowingResults((previousSize) => data.length + previousSize) setIsLoading(false); setIsFiltering(false); setLoadingMoreData(false); @@ -142,11 +148,11 @@ export default function Search(props) { }, [window.history.state === null ? true : window.history.state.key, state.currentUser.id]) useEffect(() => { - if (resultsPerPage > 12) { + if (page > 0) { setIsLoading(true); collectStuff(option); } - }, [resultsPerPage]); + }, [page]); return ( <div style={{ backgroundColor: "#f4f4f4" }}> @@ -170,6 +176,11 @@ export default function Search(props) { </div> <Dropdown options={options} value={optionResult} onChange={(e) => { + setResultsCollection([]); + setResultsResource([]); + setResultsUser([]); + setShowingResults(0); + setPage(0); setIsLoading(true); currOption = e.value; history.push(`/busca?query=${state.search.query}&search_class=${currOption}`) @@ -246,7 +257,7 @@ export default function Search(props) { }} onClick={() => { setLoadingMoreData(true); - setResultsPerPage(resultsPerPage + 12) + setPage(page + 1) }} > { @@ -318,7 +329,7 @@ export default function Search(props) { }} onClick={() => { setLoadingMoreData(true); - setResultsPerPage(resultsPerPage + 12) + setPage(page + 1) // collectStuff("LearningObject", ""); }} > @@ -391,7 +402,7 @@ export default function Search(props) { }} onClick={() => { setLoadingMoreData(true); - setResultsPerPage(resultsPerPage + 12) + setPage(page + 1) // collectStuff("User", ""); }} >