Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,9 @@ export const useBuildsActions = (
accessReview: asAccessReview(kindObj, obj, 'patch'),
}),
}),
[t, kindObj, obj, launchModal, cancelBuildModal],
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[t, kindObj, obj, cancelBuildModal],
);

const buildPhase = obj.status?.phase;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { Action } from '@console/dynamic-plugin-sdk';
import { useOverlay } from '@console/dynamic-plugin-sdk/src/app/modal-support/useOverlay';
import { useDeepCompareMemoize } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useDeepCompareMemoize';
import {
annotationsModalLauncher,
deleteModal,
LazyDeleteModalProvider,
labelsModalLauncher,
podSelectorModal,
taintsModal,
Expand Down Expand Up @@ -43,6 +44,7 @@ export const useCommonActions = <T extends readonly CommonActionCreator[]>(
editPath?: string,
): [ActionObject<T>, boolean] => {
const { t } = useTranslation();
const launchModal = useOverlay();
const launchCountModal = useConfigureCountModal({
resourceKind: kind,
resource,
Expand Down Expand Up @@ -75,7 +77,7 @@ export const useCommonActions = <T extends readonly CommonActionCreator[]>(
id: 'delete-resource',
label: t('console-app~Delete {{kind}}', { kind: kind?.kind }),
cta: () =>
deleteModal({
launchModal(LazyDeleteModalProvider, {
kind,
resource,
message,
Expand Down Expand Up @@ -169,6 +171,7 @@ export const useCommonActions = <T extends readonly CommonActionCreator[]>(
accessReview: asAccessReview(kind as K8sModel, resource as K8sResourceKind, 'patch'),
}),
}),
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[kind, resource, t, message, actualEditPath],
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Action } from '@console/dynamic-plugin-sdk';
import { useOverlay } from '@console/dynamic-plugin-sdk/src/app/modal-support/useOverlay';
import { useDeepCompareMemoize } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useDeepCompareMemoize';
import { k8sPatchResource } from '@console/dynamic-plugin-sdk/src/utils/k8s/k8s-resource';
import { configureUpdateStrategyModal } from '@console/internal/components/modals';
import { LazyConfigureUpdateStrategyModalProvider } from '@console/internal/components/modals';
import { ErrorModal } from '@console/internal/components/modals/error-modal';
import { asAccessReview } from '@console/internal/components/utils/rbac';
import { resourceObjPath } from '@console/internal/components/utils/resource-link';
Expand Down Expand Up @@ -107,7 +107,7 @@ export const useDeploymentActions = <T extends readonly DeploymentActionCreator[
[DeploymentActionCreator.UpdateStrategy]: (): Action => ({
id: 'edit-update-strategy',
label: t('console-app~Edit update strategy'),
cta: () => configureUpdateStrategyModal({ deployment: resource }),
cta: () => launchModal(LazyConfigureUpdateStrategyModalProvider, { deployment: resource }),
accessReview: {
group: kind?.apiGroup,
resource: kind?.plural,
Expand Down Expand Up @@ -184,7 +184,9 @@ export const useDeploymentActions = <T extends readonly DeploymentActionCreator[
},
}),
}),
[t, resource, kind, launchModal],
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[t, resource, kind],
);

return useMemo((): [ActionObject<T>, boolean] => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ export const useJobActions = (obj: JobKind, filterActions?: JobActionCreator[]):
accessReview: asAccessReview(JobModel, obj, 'patch'),
}),
}),
[t, obj, launchModal],
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[t, obj],
);

// filter and initialize requested actions or construct list of all PVCActions
Expand Down
24 changes: 11 additions & 13 deletions frontend/packages/console-app/src/actions/hooks/usePVCActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ import { ModifyVACModal } from '@console/app/src/components/modals/modify-vac-mo
import { Action } from '@console/dynamic-plugin-sdk';
import { useOverlay } from '@console/dynamic-plugin-sdk/src/app/modal-support/useOverlay';
import { useDeepCompareMemoize } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useDeepCompareMemoize';
import { clonePVCModal, expandPVCModal } from '@console/internal/components/modals';
import deletePVCModal from '@console/internal/components/modals/delete-pvc-modal';
import {
LazyClonePVCModalProvider,
LazyExpandPVCModalProvider,
} from '@console/internal/components/modals';
import { DeletePVCModalProvider } from '@console/internal/components/modals/delete-pvc-modal';
import { asAccessReview } from '@console/internal/components/utils/rbac';
import { VolumeSnapshotModel, PersistentVolumeClaimModel } from '@console/internal/models';
import { PersistentVolumeClaimKind } from '@console/internal/module/k8s';
Expand Down Expand Up @@ -46,7 +49,7 @@ export const usePVCActions = (
id: 'expand-pvc',
label: t('console-app~Expand PVC'),
cta: () =>
expandPVCModal({
launchModal(LazyExpandPVCModalProvider, {
kind: PersistentVolumeClaimModel,
resource: obj,
}),
Expand All @@ -67,11 +70,7 @@ export const usePVCActions = (
label: t('console-app~Clone PVC'),
disabled: obj?.status?.phase !== 'Bound',
tooltip: obj?.status?.phase !== 'Bound' ? t('console-app~PVC is not Bound') : '',
cta: () =>
clonePVCModal({
kind: PersistentVolumeClaimModel,
resource: obj,
}),
cta: () => launchModal(LazyClonePVCModalProvider, { resource: obj }),
accessReview: asAccessReview(PersistentVolumeClaimModel, obj, 'create'),
}),
[PVCActionCreator.ModifyVAC]: () => ({
Expand All @@ -88,14 +87,13 @@ export const usePVCActions = (
[PVCActionCreator.DeletePVC]: () => ({
id: 'delete-pvc',
label: t('public~Delete PersistentVolumeClaim'),
cta: () =>
deletePVCModal({
pvc: obj,
}),
cta: () => launchModal(DeletePVCModalProvider, { pvc: obj }),
accessReview: asAccessReview(PersistentVolumeClaimModel, obj, 'delete'),
}),
}),
[t, obj, launchModal],
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[t, obj],
);

// filter and initialize requested actions or construct list of all PVCActions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ export const useRetryRolloutAction = (resource: DeploymentConfigKind): Action =>
verb: 'patch',
},
}),
[t, dcModel, rcModel, rc, canRetry, resource, launchModal],
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[t, dcModel, rcModel, rc, canRetry, resource],
);
};
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { Action } from '@console/dynamic-plugin-sdk';
import { useOverlay } from '@console/dynamic-plugin-sdk/src/app/modal-support/useOverlay';
import { useDeepCompareMemoize } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useDeepCompareMemoize';
import { restorePVCModal } from '@console/internal/components/modals';
import { LazyRestorePVCModalProvider } from '@console/internal/components/modals';
import { asAccessReview } from '@console/internal/components/utils/rbac';
import { VolumeSnapshotModel } from '@console/internal/models';
import { VolumeSnapshotKind } from '@console/internal/module/k8s';
Expand Down Expand Up @@ -32,6 +33,7 @@ export const useVolumeSnapshotActions = (
filterActions?: VolumeSnapshotActionCreator[],
): Action[] => {
const { t } = useTranslation();
const launchModal = useOverlay();

const memoizedFilterActions = useDeepCompareMemoize(filterActions);

Expand All @@ -43,13 +45,14 @@ export const useVolumeSnapshotActions = (
disabled: !resource?.status?.readyToUse,
tooltip: !resource?.status?.readyToUse ? t('console-app~Volume Snapshot is not Ready') : '',
cta: () =>
restorePVCModal({
kind: VolumeSnapshotModel,
launchModal(LazyRestorePVCModalProvider, {
resource,
}),
accessReview: asAccessReview(VolumeSnapshotModel, resource, 'create'),
}),
}),
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[t, resource],
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ const useStartBuildAction = (obj: BuildConfig): Action[] => {
accessReview: asAccessReview(BuildConfigModel, buildConfig, 'create', 'instantiate'),
}),
}),
[launchModal, t],
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[t],
);
const actions = useMemo<Action[]>(() => [factory[BuildConfigActionCreator.StartBuild](obj)], [
factory,
Expand Down Expand Up @@ -66,7 +68,9 @@ const useStartLastBuildAction = (
accessReview: asAccessReview(BuildConfigModel, latestBuild, 'create', 'instantiate'),
}),
}),
[latestBuild, launchModal, t],
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[latestBuild, t],
);
const actions = useMemo<Action[]>(
() => (latestBuild ? [factory[BuildConfigActionCreator.StartLastRun]()] : []),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useMemo } from 'react';
import { DeleteResourceAction } from '@console/dev-console/src/actions/context-menu';
import { useDeleteResourceAction } from '@console/dev-console/src/actions/context-menu';
import { Action } from '@console/dynamic-plugin-sdk/src';
import { DeploymentKind, referenceFor } from '@console/internal/module/k8s';
import { useK8sModel } from '@console/shared/src/hooks/useK8sModel';
Expand All @@ -14,6 +14,7 @@ export const useDeploymentActionsProvider = (resource: DeploymentKind) => {
const [kindObj, inFlight] = useK8sModel(referenceFor(resource));
const [hpaActions, relatedHPAs] = useHPAActions(kindObj, resource);
const [pdbActions] = usePDBActions(kindObj, resource);
const deleteResourceAction = useDeleteResourceAction(kindObj, resource);
const [deploymentActionsObject, deploymentActionsReady] = useDeploymentActions(
kindObj,
resource,
Expand Down Expand Up @@ -54,7 +55,7 @@ export const useDeploymentActionsProvider = (resource: DeploymentKind) => {
deploymentActionsObject.EditDeployment,
...(resource.metadata?.annotations?.['openshift.io/generated-by'] ===
'OpenShiftWebConsole'
? [DeleteResourceAction(kindObj, resource)]
? [deleteResourceAction]
: [commonActions.Delete]),
];
}, [
Expand All @@ -66,6 +67,7 @@ export const useDeploymentActionsProvider = (resource: DeploymentKind) => {
commonActions,
isReady,
deploymentActionsObject,
deleteResourceAction,
]);

return [deploymentActions, !inFlight, undefined];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useMemo } from 'react';
import { DeleteResourceAction } from '@console/dev-console/src/actions/context-menu';
import { useDeleteResourceAction } from '@console/dev-console/src/actions/context-menu';
import { DeploymentConfigKind, referenceFor } from '@console/internal/module/k8s';
import { useK8sModel } from '@console/shared/src/hooks/useK8sModel';
import { getHealthChecksAction } from '../creators/health-checks-factory';
Expand All @@ -15,6 +15,7 @@ export const useDeploymentConfigActionsProvider = (resource: DeploymentConfigKin
const [hpaActions, relatedHPAs] = useHPAActions(kindObj, resource);
const [pdbActions] = usePDBActions(kindObj, resource);
const retryRolloutAction = useRetryRolloutAction(resource);
const deleteResourceAction = useDeleteResourceAction(kindObj, resource);
const [deploymentActions, deploymentActionsReady] = useDeploymentActions(kindObj, resource, [
DeploymentActionCreator.StartDCRollout,
DeploymentActionCreator.PauseRollout,
Expand Down Expand Up @@ -50,7 +51,7 @@ export const useDeploymentConfigActionsProvider = (resource: DeploymentConfigKin
deploymentActions.EditDeployment,
...(resource.metadata?.annotations?.['openshift.io/generated-by'] ===
'OpenShiftWebConsole'
? [DeleteResourceAction(kindObj, resource)]
? [deleteResourceAction]
: [commonActions.Delete]),
]
: [],
Expand All @@ -64,6 +65,7 @@ export const useDeploymentConfigActionsProvider = (resource: DeploymentConfigKin
commonActions,
deploymentActions,
isReady,
deleteResourceAction,
],
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ const usePauseAction = (obj: MachineConfigPoolKind): Action[] => {
accessReview: asAccessReview(MachineConfigPoolModel, obj, 'patch'),
}),
}),
[launchModal, obj, t],
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
[obj, t],
);

const action = useMemo<Action[]>(() => [factory.PauseUpdates()], [factory]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ import {
TextInput,
} from '@patternfly/react-core';
import { useTranslation } from 'react-i18next';
import { OverlayComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/OverlayProvider';
import {
ModalBody,
ModalComponentProps,
ModalSubmitFooter,
ModalTitle,
createModalLauncher,
ModalWrapper,
} from '@console/internal/components/factory';
import { DataPoint } from '@console/internal/components/graphs';
import { PrometheusEndpoint } from '@console/internal/components/graphs/helpers';
Expand Down Expand Up @@ -275,4 +276,13 @@ export type ClonePVCModalProps = {
resource?: PersistentVolumeClaimKind;
} & ModalComponentProps;

export default createModalLauncher(ClonePVCModal);
export const ClonePVCModalProvider: OverlayComponent<ClonePVCModalProps> = (props) => {
return (
<ModalWrapper blocking onClose={props.closeOverlay}>
<ClonePVCModal cancel={props.closeOverlay} close={props.closeOverlay} {...props} />
</ModalWrapper>
);
};

// For backward compatibility with the index.ts re-export
export default ClonePVCModalProvider;
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ import {
} from '@patternfly/react-core';
import { Trans, useTranslation } from 'react-i18next';
import { VolumeModeSelector } from '@console/app/src/components/volume-modes/volume-mode';
import { OverlayComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/OverlayProvider';
import {
ModalBody,
ModalComponentProps,
ModalSubmitFooter,
ModalTitle,
createModalLauncher,
ModalWrapper,
} from '@console/internal/components/factory';
import {
dropdownUnits,
Expand Down Expand Up @@ -278,4 +279,13 @@ type RestorePVCModalProps = {
resource: VolumeSnapshotKind;
} & ModalComponentProps;

export default createModalLauncher(RestorePVCModal);
export const RestorePVCModalProvider: OverlayComponent<RestorePVCModalProps> = (props) => {
return (
<ModalWrapper blocking onClose={props.closeOverlay}>
<RestorePVCModal cancel={props.closeOverlay} close={props.closeOverlay} {...props} />
</ModalWrapper>
);
};

// For backward compatibility with the index.ts re-export
export default RestorePVCModalProvider;
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { FC, ReactNode } from 'react';
import { createContext, useState, useCallback } from 'react';
import { createContext, useState, useCallback, Suspense } from 'react';
import * as _ from 'lodash';
import { UnknownProps } from '../common-types';

Expand Down Expand Up @@ -52,7 +52,9 @@ export const OverlayProvider: FC<OverlayProviderProps> = ({ children }) => {
return (
<OverlayContext.Provider value={{ launchOverlay, closeOverlay }}>
{_.map(componentsMap, (c, id) => (
<c.Component {...c.props} key={id} closeOverlay={() => closeOverlay(id)} />
<Suspense key={id} fallback={null}>
<c.Component {...c.props} closeOverlay={() => closeOverlay(id)} />
</Suspense>
))}
{children}
</OverlayContext.Provider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ const EnvironmentField: FC<EnvironmentFieldProps> = ({
} catch (e) {}
}
});
}, [namespace, launchModal]);
// missing launchModal dependency, that causes max depth exceeded error
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [namespace]);

return (
<FormGroup fieldId={fieldId} label={label} isRequired={required}>
Expand Down
Loading