diff --git a/src/actions/searchActions.js b/src/actions/searchActions.js index 8bd408c..196f5b7 100644 --- a/src/actions/searchActions.js +++ b/src/actions/searchActions.js @@ -11,8 +11,15 @@ export const setSearchSources = sources => dispatch => { }) } -export const submitSearch = keywords => (dispatch, getState) => { - if(!keywords) return +export const submitSearch = (keywords, page) => (dispatch, getState) => { + if(!keywords){ + dispatch({ + type: SUBMIT_SEARCH, + payload: { keywords, library: [], beatSaver: { songs: [], nextPage: 0, prevPage: 0, lastPage: 0, totalSongs: 0, currentPage: 0 } } + }) + return + } + if(!page) page = 0 dispatch({ type: SET_LOADING, @@ -25,6 +32,11 @@ export const submitSearch = keywords => (dispatch, getState) => { let localSongs = [] let beatSaverSongs = [] + let beatSaverNextPage = 0 + let beatSaverPrevPage = 0 + let beatSaverLastPage = 0 + let beatSaverTotalSongs = 0 + let idSong let isId = parseInt(keywords.replace('-', ''), 10) @@ -48,14 +60,18 @@ export const submitSearch = keywords => (dispatch, getState) => { localResultsReady = true // BeatSaver Search - fetch('https://beatsaver.com/api/search/text/all?q=' + encodeURIComponent(keywords.replace('/', '\\'))) + fetch('https://beatsaver.com/api/search/text/' + page + '?q=' + encodeURIComponent(keywords.replace('/', '\\'))) .then(res => res.json()) .then(data => { beatSaverSongs = data.docs + beatSaverNextPage = data.nextPage + beatSaverPrevPage = data.prevPage + beatSaverLastPage = data.lastPage + beatSaverTotalSongs = data.totalDocs if(localResultsReady & beatSaverIdResultsReady) { dispatch({ type: SUBMIT_SEARCH, - payload: idSong ? { keywords, library: localSongs, beatSaver: [idSong, ...beatSaverSongs] } : { keywords, library: localSongs, beatSaver: beatSaverSongs } + payload: idSong ? { keywords, library: localSongs, beatSaver: { songs: [idSong, ...beatSaverSongs], nextPage: beatSaverNextPage, prevPage: beatSaverPrevPage, lastPage: beatSaverLastPage, totalSongs: beatSaverTotalSongs, currentPage: page } } : { keywords, library: localSongs, beatSaver: { songs: beatSaverSongs, nextPage: beatSaverNextPage, prevPage: beatSaverPrevPage, lastPage: beatSaverLastPage, totalSongs: beatSaverTotalSongs, currentPage: page } } }) dispatch({ type: SET_LOADING, @@ -76,7 +92,7 @@ export const submitSearch = keywords => (dispatch, getState) => { if(localResultsReady & beatSaverResultsReady) { dispatch({ type: SUBMIT_SEARCH, - payload: idSong ? { keywords, library: localSongs, beatSaver: [idSong, ...beatSaverSongs] } : { keywords, library: localSongs, beatSaver: beatSaverSongs } + payload: idSong ? { keywords, library: localSongs, beatSaver: { songs: [idSong, ...beatSaverSongs], nextPage: beatSaverNextPage, prevPage: beatSaverPrevPage, lastPage: beatSaverLastPage, totalSongs: beatSaverTotalSongs, currentPage: page } } : { keywords, library: localSongs, beatSaver: { songs: beatSaverSongs, nextPage: beatSaverNextPage, prevPage: beatSaverPrevPage, lastPage: beatSaverLastPage, totalSongs: beatSaverTotalSongs, currentPage: page } } }) dispatch({ type: SET_LOADING, diff --git a/src/components/SearchView.js b/src/components/SearchView.js index acf0b65..712cdd8 100644 --- a/src/components/SearchView.js +++ b/src/components/SearchView.js @@ -14,7 +14,7 @@ class SearchView extends Component { return (