Skip to content

Commit 39b1af0

Browse files
committed
Fixes #39538 - Host actions are disabled after bulk action
1 parent 533a6ec commit 39b1af0

12 files changed

Lines changed: 37 additions & 74 deletions

File tree

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/assignTaxonomy/BulkAssignTaxonomyModal.js

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,6 @@ import {
3131
LOCATION_KEY,
3232
MODAL_TYPES,
3333
} from './BulkAssignTaxonomyConstants';
34-
import { foremanUrl } from '../../../../common/helpers';
35-
import { APIActions } from '../../../../redux/API';
36-
import {
37-
HOSTS_API_PATH,
38-
API_REQUEST_KEY,
39-
} from '../../../../routes/Hosts/constants';
4034
import TaxonomySelect from './TaxonomySelect';
4135
import { buildBulkRequestBody } from '../helpers';
4236

@@ -56,6 +50,7 @@ const BulkAssignTaxonomyModal = ({
5650
organizationId,
5751
locationId,
5852
modalType,
53+
onSuccess: onSuccessCallback,
5954
}) => {
6055
const org = modalType === MODAL_TYPES.ORGANIZATION;
6156
const taxType = org ? 'organization' : 'location';
@@ -129,12 +124,7 @@ const BulkAssignTaxonomyModal = ({
129124
message: response.data.message,
130125
})
131126
);
132-
dispatch(
133-
APIActions.get({
134-
key: API_REQUEST_KEY,
135-
url: foremanUrl(HOSTS_API_PATH),
136-
})
137-
);
127+
if (onSuccessCallback) onSuccessCallback();
138128
handleModalClose();
139129
};
140130

@@ -249,11 +239,13 @@ BulkAssignTaxonomyModal.propTypes = {
249239
organizationId: PropTypes.number,
250240
locationId: PropTypes.number,
251241
modalType: PropTypes.string.isRequired,
242+
onSuccess: PropTypes.func,
252243
};
253244

254245
BulkAssignTaxonomyModal.defaultProps = {
255246
isOpen: false,
256247
closeModal: () => {},
257248
organizationId: undefined,
258249
locationId: undefined,
250+
onSuccess: undefined,
259251
};

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/assignTaxonomy/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export const BulkAssignOrganizationModalScene = ({ isOpen, closeModal }) => {
1313
fetchBulkParams,
1414
organizationId,
1515
locationId,
16+
refreshTableData,
1617
} = useContext(ForemanActionsBarContext);
1718
return (
1819
<BulkAssignOrganizationModal
@@ -24,6 +25,7 @@ export const BulkAssignOrganizationModalScene = ({ isOpen, closeModal }) => {
2425
locationId={locationId}
2526
isOpen={isOpen}
2627
closeModal={closeModal}
28+
onSuccess={refreshTableData}
2729
/>
2830
);
2931
};
@@ -35,6 +37,7 @@ export const BulkAssignLocationModalScene = ({ isOpen, closeModal }) => {
3537
fetchBulkParams,
3638
organizationId,
3739
locationId,
40+
refreshTableData,
3841
} = useContext(ForemanActionsBarContext);
3942
return (
4043
<BulkAssignLocationModal
@@ -46,6 +49,7 @@ export const BulkAssignLocationModalScene = ({ isOpen, closeModal }) => {
4649
locationId={locationId}
4750
isOpen={isOpen}
4851
closeModal={closeModal}
52+
onSuccess={refreshTableData}
4953
/>
5054
);
5155
};

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/changeOwner/BulkChangeOwnerModal.js

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,11 @@ import {
2323
USER_KEY,
2424
USERGROUP_KEY,
2525
} from './actions';
26-
import { foremanUrl } from '../../../../common/helpers';
27-
import { APIActions } from '../../../../redux/API';
2826
import { STATUS } from '../../../../constants';
2927
import {
3028
selectAPIStatus,
3129
selectAPIResponse,
3230
} from '../../../../redux/API/APISelectors';
33-
import {
34-
HOSTS_API_PATH,
35-
API_REQUEST_KEY,
36-
} from '../../../../routes/Hosts/constants';
3731
import { buildBulkRequestBody, failedHostsToastParams } from '../helpers';
3832

3933
const BulkChangeOwnerModal = ({
@@ -44,6 +38,7 @@ const BulkChangeOwnerModal = ({
4438
fetchBulkParams,
4539
organizationId,
4640
locationId,
41+
onSuccess: onSuccessCallback,
4742
}) => {
4843
const dispatch = useDispatch();
4944
const [ownerId, setOwnerId] = useState('');
@@ -123,12 +118,7 @@ const BulkChangeOwnerModal = ({
123118
message: response.data.message,
124119
})
125120
);
126-
dispatch(
127-
APIActions.get({
128-
key: API_REQUEST_KEY,
129-
url: foremanUrl(HOSTS_API_PATH),
130-
})
131-
);
121+
if (onSuccessCallback) onSuccessCallback();
132122
handleModalClose();
133123
};
134124

@@ -254,13 +244,15 @@ BulkChangeOwnerModal.propTypes = {
254244
selectAllHostsMode: PropTypes.bool.isRequired,
255245
organizationId: PropTypes.number,
256246
locationId: PropTypes.number,
247+
onSuccess: PropTypes.func,
257248
};
258249

259250
BulkChangeOwnerModal.defaultProps = {
260251
isOpen: false,
261252
closeModal: () => {},
262253
organizationId: undefined,
263254
locationId: undefined,
255+
onSuccess: undefined,
264256
};
265257

266258
export default BulkChangeOwnerModal;

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/changeOwner/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const BulkChangeOwnerModalScene = ({ isOpen, closeModal }) => {
1111
fetchBulkParams,
1212
organizationId,
1313
locationId,
14+
refreshTableData,
1415
} = useContext(ForemanActionsBarContext);
1516
return (
1617
<BulkChangeOwnerModal
@@ -23,6 +24,7 @@ const BulkChangeOwnerModalScene = ({ isOpen, closeModal }) => {
2324
locationId={locationId}
2425
isOpen={isOpen}
2526
closeModal={closeModal}
27+
onSuccess={refreshTableData}
2628
/>
2729
);
2830
};

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/disassociate/BulkDisassociateModal.js

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,8 @@ import {
1010
TreeView,
1111
} from '@patternfly/react-core';
1212
import { addToast } from '../../../ToastsList/slice';
13-
import { foremanUrl } from '../../../../common/helpers';
1413
import { translate as __ } from '../../../../common/I18n';
1514
import { BULK_DISASSOCIATE_KEY, bulkDisassociate } from './actions';
16-
import { APIActions } from '../../../../redux/API';
17-
import {
18-
HOSTS_API_PATH,
19-
API_REQUEST_KEY,
20-
} from '../../../../routes/Hosts/constants';
2115
import { buildBulkRequestBody, failedHostsToastParams } from '../helpers';
2216

2317
const BulkDisassociateModal = ({
@@ -29,6 +23,7 @@ const BulkDisassociateModal = ({
2923
fetchBulkParams,
3024
organizationId,
3125
locationId,
26+
onSuccess: onSuccessCallback,
3227
}) => {
3328
const dispatch = useDispatch();
3429
const hostsWithComputeResource = selectedResults?.filter(
@@ -80,12 +75,7 @@ const BulkDisassociateModal = ({
8075
message: response.data.message,
8176
})
8277
);
83-
dispatch(
84-
APIActions.get({
85-
key: API_REQUEST_KEY,
86-
url: foremanUrl(HOSTS_API_PATH),
87-
})
88-
);
78+
if (onSuccessCallback) onSuccessCallback();
8979
closeModal();
9080
};
9181

@@ -193,6 +183,7 @@ BulkDisassociateModal.propTypes = {
193183
selectAllHostsMode: PropTypes.bool.isRequired,
194184
organizationId: PropTypes.number,
195185
locationId: PropTypes.number,
186+
onSuccess: PropTypes.func,
196187
};
197188

198189
BulkDisassociateModal.defaultProps = {
@@ -201,6 +192,7 @@ BulkDisassociateModal.defaultProps = {
201192
selectedResults: [],
202193
organizationId: undefined,
203194
locationId: undefined,
195+
onSuccess: undefined,
204196
};
205197

206198
export default BulkDisassociateModal;

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/disassociate/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const BulkDisassociateModalScene = ({ isOpen, closeModal }) => {
1111
fetchBulkParams,
1212
organizationId,
1313
locationId,
14+
refreshTableData,
1415
} = useContext(ForemanActionsBarContext);
1516
return (
1617
<BulkDisassociateModal
@@ -23,6 +24,7 @@ const BulkDisassociateModalScene = ({ isOpen, closeModal }) => {
2324
locationId={locationId}
2425
isOpen={isOpen}
2526
closeModal={closeModal}
27+
onSuccess={refreshTableData}
2628
/>
2729
);
2830
};

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/manageNotifications/index.js

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,8 @@ import PropTypes from 'prop-types';
33
import { ForemanActionsBarContext } from '../../../../components/HostDetails/ActionsBar';
44
import BulkManageNotificationsModal from './BulkManageNotificationsModal';
55

6-
const BulkManageNotificationsModalScene = ({
7-
isOpen,
8-
closeModal,
9-
onSuccess,
10-
}) => {
11-
const { fetchBulkParams, selectedCount = 0 } = useContext(
6+
const BulkManageNotificationsModalScene = ({ isOpen, closeModal }) => {
7+
const { fetchBulkParams, selectedCount = 0, refreshTableData } = useContext(
128
ForemanActionsBarContext
139
);
1410
return (
@@ -17,7 +13,7 @@ const BulkManageNotificationsModalScene = ({
1713
fetchBulkParams={fetchBulkParams}
1814
isOpen={isOpen}
1915
closeModal={closeModal}
20-
onSuccess={onSuccess}
16+
onSuccess={refreshTableData}
2117
/>
2218
);
2319
};
@@ -27,9 +23,4 @@ export default BulkManageNotificationsModalScene;
2723
BulkManageNotificationsModalScene.propTypes = {
2824
isOpen: PropTypes.bool.isRequired,
2925
closeModal: PropTypes.func.isRequired,
30-
onSuccess: PropTypes.func,
31-
};
32-
33-
BulkManageNotificationsModalScene.defaultProps = {
34-
onSuccess: undefined,
3526
};

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/powerState/BulkPowerStateModal.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,6 @@ import { POWER_STATES, BULK_POWER_STATE_KEY } from './constants';
2121
import { bulkChangePowerState } from './actions';
2222
import { buildBulkRequestBody, failedHostsToastParams } from '../helpers';
2323
import { addToast } from '../../../ToastsList/slice';
24-
import {
25-
HOSTS_API_PATH,
26-
API_REQUEST_KEY,
27-
} from '../../../../routes/Hosts/constants';
28-
import { foremanUrl } from '../../../../common/helpers';
29-
import { APIActions } from '../../../../redux/API';
3024

3125
const BulkPowerStateModal = ({
3226
selectedHostsCount,
@@ -35,6 +29,7 @@ const BulkPowerStateModal = ({
3529
locationId,
3630
isOpen,
3731
closeModal,
32+
onSuccess: onSuccessCallback,
3833
}) => {
3934
const [isSelectOpen, setIsSelectOpen] = useState(false);
4035
const [selectedPowerState, setSelectedPowerState] = useState('');
@@ -60,13 +55,7 @@ const BulkPowerStateModal = ({
6055
message: response.data.message,
6156
})
6257
);
63-
dispatch(
64-
APIActions.get({
65-
key: API_REQUEST_KEY,
66-
url: foremanUrl(HOSTS_API_PATH),
67-
})
68-
);
69-
58+
if (onSuccessCallback) onSuccessCallback();
7059
cleanup();
7160
};
7261

@@ -212,6 +201,7 @@ BulkPowerStateModal.propTypes = {
212201
locationId: PropTypes.number,
213202
isOpen: PropTypes.bool,
214203
closeModal: PropTypes.func,
204+
onSuccess: PropTypes.func,
215205
};
216206

217207
BulkPowerStateModal.defaultProps = {
@@ -220,6 +210,7 @@ BulkPowerStateModal.defaultProps = {
220210
locationId: undefined,
221211
isOpen: false,
222212
closeModal: () => {},
213+
onSuccess: undefined,
223214
};
224215

225216
export default BulkPowerStateModal;

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/powerState/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const BulkPowerStateModalScene = ({ isOpen, closeModal }) => {
99
selectedCount = 0,
1010
organizationId,
1111
locationId,
12+
refreshTableData,
1213
} = useContext(ForemanActionsBarContext);
1314
return (
1415
<BulkPowerStateModal
@@ -18,6 +19,7 @@ const BulkPowerStateModalScene = ({ isOpen, closeModal }) => {
1819
locationId={locationId}
1920
isOpen={isOpen}
2021
closeModal={closeModal}
22+
onSuccess={refreshTableData}
2123
/>
2224
);
2325
};

webpack/assets/javascripts/react_app/components/HostsIndex/BulkActions/reassignHostGroup/BulkReassignHostgroupModal.js

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,8 @@ import {
2323
fetchHostgroups,
2424
HOSTGROUP_KEY,
2525
} from './actions';
26-
import { foremanUrl } from '../../../../common/helpers';
27-
import { APIActions } from '../../../../redux/API';
2826
import HostGroupSelect from './HostGroupSelect';
2927
import SkeletonLoader from '../../../common/SkeletonLoader';
30-
import {
31-
HOSTS_API_PATH,
32-
API_REQUEST_KEY,
33-
} from '../../../../routes/Hosts/constants';
3428
import './BulkReassignHostgroupModal.scss';
3529

3630
// Helper function to format hostgroup title for display
@@ -79,6 +73,7 @@ const BulkReassignHostgroupModal = ({
7973
fetchBulkParams,
8074
organizationId,
8175
locationId,
76+
onSuccess: onSuccessCallback,
8277
}) => {
8378
const dispatch = useDispatch();
8479
const [hostgroupId, setHostgroupId] = useState('');
@@ -144,12 +139,7 @@ const BulkReassignHostgroupModal = ({
144139
message: response.data.message,
145140
})
146141
);
147-
dispatch(
148-
APIActions.get({
149-
key: API_REQUEST_KEY,
150-
url: foremanUrl(HOSTS_API_PATH),
151-
})
152-
);
142+
if (onSuccessCallback) onSuccessCallback();
153143
handleModalClose();
154144
};
155145
const handleSave = () => {
@@ -289,13 +279,15 @@ BulkReassignHostgroupModal.propTypes = {
289279
fetchBulkParams: PropTypes.func.isRequired,
290280
organizationId: PropTypes.number,
291281
locationId: PropTypes.number,
282+
onSuccess: PropTypes.func,
292283
};
293284

294285
BulkReassignHostgroupModal.defaultProps = {
295286
isOpen: false,
296287
closeModal: () => {},
297288
organizationId: undefined,
298289
locationId: undefined,
290+
onSuccess: undefined,
299291
};
300292

301293
export default BulkReassignHostgroupModal;

0 commit comments

Comments
 (0)