mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-04-24 13:57:11 -04:00
Fixed: Queue not always clearing checked items when updated
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
This commit is contained in:
parent
824d315a3b
commit
f3d7852ec4
2 changed files with 29 additions and 5 deletions
|
@ -1,6 +1,7 @@
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
import getRemovedItems from 'Utilities/Object/getRemovedItems';
|
||||||
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
|
||||||
import getSelectedIds from 'Utilities/Table/getSelectedIds';
|
import getSelectedIds from 'Utilities/Table/getSelectedIds';
|
||||||
import removeOldSelectedState from 'Utilities/Table/removeOldSelectedState';
|
import removeOldSelectedState from 'Utilities/Table/removeOldSelectedState';
|
||||||
|
@ -36,14 +37,22 @@ class Queue extends Component {
|
||||||
lastToggled: null,
|
lastToggled: null,
|
||||||
selectedState: {},
|
selectedState: {},
|
||||||
isPendingSelected: false,
|
isPendingSelected: false,
|
||||||
isConfirmRemoveModalOpen: false
|
isConfirmRemoveModalOpen: false,
|
||||||
|
items: props.items
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidUpdate(prevProps) {
|
componentDidUpdate(prevProps) {
|
||||||
if (hasDifferentItems(prevProps.items, this.props.items)) {
|
const {
|
||||||
|
items
|
||||||
|
} = this.props;
|
||||||
|
|
||||||
|
if (hasDifferentItems(prevProps.items, items) && !items.some((e) => e.movieId)) {
|
||||||
this.setState((state) => {
|
this.setState((state) => {
|
||||||
return removeOldSelectedState(state, prevProps.items);
|
return {
|
||||||
|
...removeOldSelectedState(state, getRemovedItems(prevProps.items, items)),
|
||||||
|
items
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -107,7 +116,6 @@ class Queue extends Component {
|
||||||
isMoviesFetching,
|
isMoviesFetching,
|
||||||
isMoviesPopulated,
|
isMoviesPopulated,
|
||||||
moviesError,
|
moviesError,
|
||||||
items,
|
|
||||||
columns,
|
columns,
|
||||||
totalRecords,
|
totalRecords,
|
||||||
isGrabbing,
|
isGrabbing,
|
||||||
|
@ -122,7 +130,8 @@ class Queue extends Component {
|
||||||
allUnselected,
|
allUnselected,
|
||||||
selectedState,
|
selectedState,
|
||||||
isConfirmRemoveModalOpen,
|
isConfirmRemoveModalOpen,
|
||||||
isPendingSelected
|
isPendingSelected,
|
||||||
|
items
|
||||||
} = this.state;
|
} = this.state;
|
||||||
|
|
||||||
const isRefreshing = isFetching || isMoviesFetching || isRefreshMonitoredDownloadsExecuting;
|
const isRefreshing = isFetching || isMoviesFetching || isRefreshMonitoredDownloadsExecuting;
|
||||||
|
|
15
frontend/src/Utilities/Object/getRemovedItems.js
Normal file
15
frontend/src/Utilities/Object/getRemovedItems.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
function getRemovedItems(prevItems, currentItems, idProp = 'id') {
|
||||||
|
if (prevItems === currentItems) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
const currentItemIds = new Set();
|
||||||
|
|
||||||
|
currentItems.forEach((currentItem) => {
|
||||||
|
currentItemIds.add(currentItem[idProp]);
|
||||||
|
});
|
||||||
|
|
||||||
|
return prevItems.filter((prevItem) => !currentItemIds.has(prevItem[idProp]));
|
||||||
|
}
|
||||||
|
|
||||||
|
export default getRemovedItems;
|
Loading…
Add table
Add a link
Reference in a new issue