diff --git a/frontend/src/Activity/Queue/Queue.js b/frontend/src/Activity/Queue/Queue.js
index a5a1633c6..1a7bd1df5 100644
--- a/frontend/src/Activity/Queue/Queue.js
+++ b/frontend/src/Activity/Queue/Queue.js
@@ -31,6 +31,8 @@ class Queue extends Component {
constructor(props, context) {
super(props, context);
+ this._shouldBlockRefresh = false;
+
this.state = {
allSelected: false,
allUnselected: false,
@@ -42,6 +44,18 @@ class Queue extends Component {
};
}
+ shouldComponentUpdate(nextProps) {
+ if (!this._shouldBlockRefresh) {
+ return true;
+ }
+
+ if (hasDifferentItems(this.props.items, nextProps.items)) {
+ return false;
+ }
+
+ return true;
+ }
+
componentDidUpdate(prevProps) {
const {
items,
@@ -84,6 +98,10 @@ class Queue extends Component {
//
// Listeners
+ onQueueRowModalOpenOrClose = (isOpen) => {
+ this._shouldBlockRefresh = isOpen;
+ }
+
onSelectAllChange = ({ value }) => {
this.setState(selectAll(this.state.selectedState, value));
}
@@ -99,16 +117,19 @@ class Queue extends Component {
}
onRemoveSelectedPress = () => {
+ this._shouldBlockRefresh = true;
this.setState({ isConfirmRemoveModalOpen: true });
}
onRemoveSelectedConfirmed = (payload) => {
this.props.onRemoveSelectedPress({ ids: this.getSelectedIds(), ...payload });
this.setState({ isConfirmRemoveModalOpen: false });
+ this._shouldBlockRefresh = false;
}
onConfirmRemoveModalClose = () => {
this.setState({ isConfirmRemoveModalOpen: false });
+ this._shouldBlockRefresh = false;
}
//
@@ -209,7 +230,7 @@ class Queue extends Component {
}
{
- isPopulated && !hasError && !items.length &&
+ isAllPopulated && !hasError && !items.length &&
Queue is empty
@@ -238,6 +259,7 @@ class Queue extends Component {
columns={columns}
{...item}
onSelectedChange={this.onSelectedChange}
+ onQueueRowModalOpenOrClose={this.onQueueRowModalOpenOrClose}
/>
);
})
diff --git a/frontend/src/Activity/Queue/QueueRow.js b/frontend/src/Activity/Queue/QueueRow.js
index ffd90d1b3..09752c4e7 100644
--- a/frontend/src/Activity/Queue/QueueRow.js
+++ b/frontend/src/Activity/Queue/QueueRow.js
@@ -42,19 +42,32 @@ class QueueRow extends Component {
}
onRemoveQueueItemModalConfirmed = (blacklist, skipredownload) => {
- this.props.onRemoveQueueItemPress(blacklist, skipredownload);
+ const {
+ onRemoveQueueItemPress,
+ onQueueRowModalOpenOrClose
+ } = this.props;
+
+ onQueueRowModalOpenOrClose(false);
+ onRemoveQueueItemPress(blacklist, skipredownload);
+
this.setState({ isRemoveQueueItemModalOpen: false });
}
onRemoveQueueItemModalClose = () => {
+ this.props.onQueueRowModalOpenOrClose(false);
+
this.setState({ isRemoveQueueItemModalOpen: false });
}
onInteractiveImportPress = () => {
+ this.props.onQueueRowModalOpenOrClose(true);
+
this.setState({ isInteractiveImportModalOpen: true });
}
onInteractiveImportModalClose = () => {
+ this.props.onQueueRowModalOpenOrClose(false);
+
this.setState({ isInteractiveImportModalOpen: false });
}
@@ -380,7 +393,8 @@ QueueRow.propTypes = {
columns: PropTypes.arrayOf(PropTypes.object).isRequired,
onSelectedChange: PropTypes.func.isRequired,
onGrabPress: PropTypes.func.isRequired,
- onRemoveQueueItemPress: PropTypes.func.isRequired
+ onRemoveQueueItemPress: PropTypes.func.isRequired,
+ onQueueRowModalOpenOrClose: PropTypes.func.isRequired
};
QueueRow.defaultProps = {