diff --git a/src/components/AnacondaHeader.jsx b/src/components/AnacondaHeader.jsx
index 2cb4a2ee6..2cc266288 100644
--- a/src/components/AnacondaHeader.jsx
+++ b/src/components/AnacondaHeader.jsx
@@ -36,7 +36,7 @@ import "./AnacondaHeader.scss";
const _ = cockpit.gettext;
const N_ = cockpit.noop;
-export const AnacondaHeader = ({ dispatch, isFormDisabled, onCritFail, reportLinkURL, setShowStorage, showStorage, title }) => {
+export const AnacondaHeader = ({ currentStepId, dispatch, isFormDisabled, onCritFail, reportLinkURL, setShowStorage, showStorage, title }) => {
const [beta, setBeta] = useState();
const network = useContext(NetworkContext);
const isConnected = network.connected;
@@ -57,6 +57,7 @@ export const AnacondaHeader = ({ dispatch, isFormDisabled, onCritFail, reportLin
{beta && }
{
+export const AnacondaWizard = ({ currentStepId, dispatch, isFetching, onCritFail, showStorage }) => {
// The Form should be disabled while backend checks are in progress
// or the page initialization is in progress
const [isFormDisabled, setIsFormDisabled] = useState(false);
// The Form should be marked as invalid when the user filled data
// are failing the validation
const [isFormValid, setIsFormValid] = useState(false);
- const [currentStepId, setCurrentStepId] = useState();
const { storageScenarioId } = useContext(StorageContext);
const isBootIso = useContext(SystemTypeContext) === "BOOT_ISO";
const { path } = usePageLocation();
- useEffect(() => {
- if (!currentStepId) {
- return;
- }
- cockpit.location.go([currentStepId]);
- }, [currentStepId]);
-
const componentProps = {
dispatch,
isFormDisabled: isFormDisabled || isFetching,
@@ -112,7 +104,7 @@ export const AnacondaWizard = ({ dispatch, isFetching, onCritFail, showStorage }
setIsFormDisabled(true);
}
- setCurrentStepId(newStep.id);
+ cockpit.location.go([newStep.id]);
};
const finalStep = stepsOrder[stepsOrder.length - 1];
diff --git a/src/components/HeaderKebab.jsx b/src/components/HeaderKebab.jsx
index 4c633a122..b59178c27 100644
--- a/src/components/HeaderKebab.jsx
+++ b/src/components/HeaderKebab.jsx
@@ -106,7 +106,7 @@ const AnacondaAboutModal = ({ isModalOpen, setIsAboutModalOpen }) => {
);
};
-export const HeaderKebab = ({ dispatch, isConnected, onCritFail, reportLinkURL, setShowStorage, showStorage }) => {
+export const HeaderKebab = ({ currentStepId, dispatch, isConnected, onCritFail, reportLinkURL, setShowStorage, showStorage }) => {
const [isOpen, setIsOpen] = useState(false);
const [isAboutModalOpen, setIsAboutModalOpen] = useState(false);
const [isReportIssueOpen, setIsReportIssueOpen] = useState(false);
@@ -128,7 +128,7 @@ export const HeaderKebab = ({ dispatch, isConnected, onCritFail, reportLinkURL,
const dropdownItems = [
,
diff --git a/src/components/app.jsx b/src/components/app.jsx
index 94f20dcaa..399b402ab 100644
--- a/src/components/app.jsx
+++ b/src/components/app.jsx
@@ -16,6 +16,8 @@
*/
import cockpit from "cockpit";
+import { usePageLocation } from "hooks";
+
import React, { useCallback, useEffect, useState } from "react";
import {
Bullseye,
@@ -51,7 +53,15 @@ export const ApplicationLoading = () => (
export const Application = ({ conf, dispatch, isFetching, onCritFail, osRelease, reportLinkURL }) => {
const [storeInitialized, setStoreInitialized] = useState(false);
const [showStorage, setShowStorage] = useState(false);
+ const [currentStepId, setCurrentStepId] = useState();
const address = useAddress();
+ const { path } = usePageLocation();
+
+ useEffect(() => {
+ if (path[0] !== currentStepId) {
+ setCurrentStepId(path[0]);
+ }
+ }, [path, currentStepId]);
useEffect(() => {
if (!address) {
@@ -81,6 +91,7 @@ export const Application = ({ conf, dispatch, isFetching, onCritFail, osRelease,
{
);
};
-export const ModifyStorage = ({ setShowStorage }) => {
+export const ModifyStorage = ({ currentStepId, setShowStorage }) => {
const targetSystemRoot = useContext(TargetSystemRootContext);
const { diskSelection } = useContext(StorageContext);
const devices = useOriginalDevices();
@@ -646,10 +647,16 @@ export const ModifyStorage = ({ setShowStorage }) => {
efi: isEfi,
mount_point_prefix: targetSystemRoot,
});
+ const isDisabled = useMemo(() => {
+ const steps = getSteps();
+ const currentStep = steps.find(step => step.id === currentStepId);
+ return currentStep?.isFinal;
+ }, [currentStepId]);
return (
{
window.sessionStorage.setItem("cockpit_anaconda", cockpitAnaconda);
setShowStorage(true);
diff --git a/test/check-progress b/test/check-progress
index 58d0b5730..bdc5dec62 100755
--- a/test/check-progress
+++ b/test/check-progress
@@ -61,6 +61,10 @@ class TestInstallationProgress(VirtInstallMachineCase):
ignore=[".logo", "#betanag-icon"],
)
+ # Check that at this stage 'Modify Storage' is not available
+ b.click("#toggle-kebab")
+ b.wait_visible("li.pf-m-disabled #modify-storage")
+
self.handleReboot()