From 21cc96d68336f841bbe5d3987058568afb7e1746 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Fri, 7 Jul 2023 16:19:45 +0300 Subject: [PATCH] Fixed: (History) Save limit and offset in history data --- .../src/History/Details/HistoryDetails.js | 70 +++++++++++++------ frontend/src/History/HistoryRow.js | 15 ++-- frontend/src/History/HistoryRowConnector.js | 11 ++- frontend/src/Search/SearchFooter.js | 10 ++- frontend/src/Search/SearchFooterConnector.js | 8 ++- frontend/src/Store/Actions/releaseActions.js | 4 +- src/NzbDrone.Core/History/HistoryService.cs | 3 + 7 files changed, 86 insertions(+), 35 deletions(-) diff --git a/frontend/src/History/Details/HistoryDetails.js b/frontend/src/History/Details/HistoryDetails.js index 23dc0b0dd..e0ae06eb1 100644 --- a/frontend/src/History/Details/HistoryDetails.js +++ b/frontend/src/History/Details/HistoryDetails.js @@ -18,6 +18,8 @@ function HistoryDetails(props) { query, queryResults, categories, + limit, + offset, source, url } = data; @@ -31,43 +33,66 @@ function HistoryDetails(props) { /> { - !!indexer && + indexer ? + /> : + null } { - !!data && + data ? + /> : + null } { - !!data && + data ? + /> : + null } { - !!data && + limit ? + : + null + } + + { + offset ? + : + null + } + + { + data ? + /> : + null } { - !!data && + data ? {translate('Link')} : '-'} - /> + /> : + null } ); @@ -83,35 +108,39 @@ function HistoryDetails(props) { return ( { - !!indexer && + indexer ? + /> : + null } { - !!data && + data ? + /> : + null } { - !!data && + data ? + /> : + null } { - !!data && + data ? {translate('Link')} : '-'} - /> + /> : + null } ); @@ -124,11 +153,12 @@ function HistoryDetails(props) { title={translate('Auth')} > { - !!indexer && + indexer ? + /> : + null } ); diff --git a/frontend/src/History/HistoryRow.js b/frontend/src/History/HistoryRow.js index a4fb91c12..c47160f23 100644 --- a/frontend/src/History/HistoryRow.js +++ b/frontend/src/History/HistoryRow.js @@ -66,7 +66,7 @@ class HistoryRow extends Component { data } = this.props; - const { query, queryType } = data; + const { query, queryType, limit, offset } = data; let searchQuery = query; let categories = []; @@ -111,7 +111,7 @@ class HistoryRow extends Component { searchQuery += `${searchParams}`; } - this.props.onSearchPress(searchQuery, indexer.id, categories, queryType); + this.props.onSearchPress(searchQuery, indexer.id, categories, queryType, parseInt(limit), parseInt(offset)); }; onDetailsPress = () => { @@ -312,6 +312,12 @@ class HistoryRow extends Component { key={name} className={styles.details} > + + { eventType === 'indexerQuery' ? : null } - ); } diff --git a/frontend/src/History/HistoryRowConnector.js b/frontend/src/History/HistoryRowConnector.js index 341444f2e..56137f080 100644 --- a/frontend/src/History/HistoryRowConnector.js +++ b/frontend/src/History/HistoryRowConnector.js @@ -48,8 +48,15 @@ class HistoryRowConnector extends Component { // // Listeners - onSearchPress = (term, indexerId, categories, type) => { - this.props.setSearchDefault({ searchQuery: term, searchIndexerIds: [indexerId], searchCategories: categories, searchType: type }); + onSearchPress = (query, indexerId, categories, type, limit, offset) => { + this.props.setSearchDefault({ + searchQuery: query, + searchIndexerIds: [indexerId], + searchCategories: categories, + searchType: type, + searchLimit: limit, + searchOffset: offset + }); this.props.push(`${window.Prowlarr.urlBase}/search`); }; diff --git a/frontend/src/Search/SearchFooter.js b/frontend/src/Search/SearchFooter.js index 2fc525615..21d0789a2 100644 --- a/frontend/src/Search/SearchFooter.js +++ b/frontend/src/Search/SearchFooter.js @@ -27,7 +27,9 @@ class SearchFooter extends Component { defaultIndexerIds, defaultCategories, defaultSearchQuery, - defaultSearchType + defaultSearchType, + defaultSearchLimit, + defaultSearchOffset } = props; this.state = { @@ -38,8 +40,8 @@ class SearchFooter extends Component { searchQuery: defaultSearchQuery || '', searchIndexerIds: defaultIndexerIds, searchCategories: defaultCategories, - searchLimit: 100, - searchOffset: 0, + searchLimit: defaultSearchLimit, + searchOffset: defaultSearchOffset, newSearch: true }; } @@ -303,6 +305,8 @@ SearchFooter.propTypes = { defaultCategories: PropTypes.arrayOf(PropTypes.number).isRequired, defaultSearchQuery: PropTypes.string.isRequired, defaultSearchType: PropTypes.string.isRequired, + defaultSearchLimit: PropTypes.number.isRequired, + defaultSearchOffset: PropTypes.number.isRequired, selectedCount: PropTypes.number.isRequired, itemCount: PropTypes.number.isRequired, isFetching: PropTypes.bool.isRequired, diff --git a/frontend/src/Search/SearchFooterConnector.js b/frontend/src/Search/SearchFooterConnector.js index efbe6b3c4..87d2d3dda 100644 --- a/frontend/src/Search/SearchFooterConnector.js +++ b/frontend/src/Search/SearchFooterConnector.js @@ -13,14 +13,18 @@ function createMapStateToProps() { searchQuery: defaultSearchQuery, searchIndexerIds: defaultIndexerIds, searchCategories: defaultCategories, - searchType: defaultSearchType + searchType: defaultSearchType, + searchLimit: defaultSearchLimit, + searchOffset: defaultSearchOffset } = releases.defaults; return { defaultSearchQuery, defaultIndexerIds, defaultCategories, - defaultSearchType + defaultSearchType, + defaultSearchLimit, + defaultSearchOffset }; } ); diff --git a/frontend/src/Store/Actions/releaseActions.js b/frontend/src/Store/Actions/releaseActions.js index 76da09c9d..298357a82 100644 --- a/frontend/src/Store/Actions/releaseActions.js +++ b/frontend/src/Store/Actions/releaseActions.js @@ -40,7 +40,9 @@ export const defaultState = { searchType: 'search', searchQuery: '', searchIndexerIds: [], - searchCategories: [] + searchCategories: [], + searchLimit: 100, + searchOffset: 0 }, columns: [ diff --git a/src/NzbDrone.Core/History/HistoryService.cs b/src/NzbDrone.Core/History/HistoryService.cs index 902fdf6b1..8dcc1861d 100644 --- a/src/NzbDrone.Core/History/HistoryService.cs +++ b/src/NzbDrone.Core/History/HistoryService.cs @@ -170,6 +170,9 @@ namespace NzbDrone.Core.History history.Data.Add("Genre", bookSearchCriteria.Genre); } + history.Data.Add("Limit", message.Query.Limit?.ToString()); + history.Data.Add("Offset", message.Query.Offset?.ToString()); + // Clean empty data history.Data = history.Data.Where(d => d.Value != null).ToDictionary(x => x.Key, x => x.Value);