Sfoglia il codice sorgente

Merge pull request #1489 from porter-dev/nico/por-212-clicking-continue-button-after

[POR-212] Clicking "Continue" button after provisioning displays onboarding modal
Nicolas Frati 4 anni fa
parent
commit
bc85434f8f

+ 7 - 5
dashboard/src/main/home/modals/SkipProvisioningModal.tsx

@@ -9,7 +9,7 @@ import styled from "styled-components";
  * will open this modal to let user skip onboarding and keep using porter.
  */
 const SkipOnboardingModal = () => {
-  const { currentModalData, setCurrentModal } = useContext(Context);
+  const { currentModalData, setHasFinishedOnboarding } = useContext(Context);
 
   return (
     <>
@@ -22,10 +22,12 @@ const SkipOnboardingModal = () => {
         <ActionButton
           text="Yes, skip setup"
           color="#616FEEcc"
-          onClick={() =>
-            typeof currentModalData?.skipOnboarding === "function" &&
-            currentModalData.skipOnboarding()
-          }
+          onClick={() => {
+            if (typeof currentModalData?.skipOnboarding === "function") {
+              currentModalData.skipOnboarding();
+            }
+            setHasFinishedOnboarding(true);
+          }}
           status={""}
           clearPosition
         />

+ 1 - 1
dashboard/src/main/home/onboarding/Onboarding.tsx

@@ -135,7 +135,7 @@ const Onboarding = () => {
 
       const hasClusters = Array.isArray(clusters) && clusters.length;
 
-      if (hasClusters) {
+      if (hasClusters && !context.hasFinishedOnboarding) {
         setCurrentModal("SkipOnboardingModal", { skipOnboarding });
       }
     } catch (error) {

+ 5 - 1
dashboard/src/main/home/onboarding/state/StepHandler.ts

@@ -1,5 +1,6 @@
-import { useEffect } from "react";
+import { useContext, useEffect } from "react";
 import { useLocation } from "react-router";
+import { Context } from "shared/Context";
 import { useRouting } from "shared/routing";
 import { proxy, useSnapshot } from "valtio";
 import { StepKey, Steps } from "../types";
@@ -287,12 +288,15 @@ export const useSteps = (isParentLoading?: boolean) => {
   const snap = useSnapshot(StepHandler);
   const location = useLocation();
   const { pushFiltered } = useRouting();
+  const { setHasFinishedOnboarding } = useContext(Context);
+
   useEffect(() => {
     if (isParentLoading) {
       return;
     }
     if (snap.currentStepName === "clean_up") {
       StepHandler.actions.clearState();
+      setHasFinishedOnboarding(true);
     }
     pushFiltered(snap.currentStep.url, ["tab"]);
   }, [location.pathname, snap.currentStep?.url, isParentLoading]);