فهرست منبع

Cleaned up Provision resources step

jnfrati 4 سال پیش
والد
کامیت
054d3bea3d

+ 2 - 2
dashboard/src/main/home/onboarding/Routes.tsx

@@ -3,7 +3,7 @@ import { Route, Switch } from "react-router";
 import { OFState } from "./state";
 import { OFState } from "./state";
 import ConnectRegistry from "./steps/ConnectRegistry/ConnectRegistry";
 import ConnectRegistry from "./steps/ConnectRegistry/ConnectRegistry";
 import ConnectSource from "./steps/ConnectSource";
 import ConnectSource from "./steps/ConnectSource";
-import ProvisionResourcesWrapper from "./steps/ProvisionResources/ProvisionResourcesWrapper";
+import ProvisionResources from "./steps/ProvisionResources/ProvisionResources";
 
 
 export const Routes = () => {
 export const Routes = () => {
   return (
   return (
@@ -18,7 +18,7 @@ export const Routes = () => {
           <ConnectRegistry />
           <ConnectRegistry />
         </Route>
         </Route>
         <Route path={[`/onboarding/provision/:step?`]}>
         <Route path={[`/onboarding/provision/:step?`]}>
-          <ProvisionResourcesWrapper />
+          <ProvisionResources />
         </Route>
         </Route>
       </Switch>
       </Switch>
     </>
     </>

+ 35 - 47
dashboard/src/main/home/onboarding/steps/ProvisionResources/ProvisionResources.tsx

@@ -11,44 +11,43 @@ import ProviderSelector, {
 
 
 import FormFlowWrapper from "./forms/FormFlow";
 import FormFlowWrapper from "./forms/FormFlow";
 import ConnectExternalCluster from "./forms/_ConnectExternalCluster";
 import ConnectExternalCluster from "./forms/_ConnectExternalCluster";
-import { SupportedProviders } from "../../types";
 import backArrow from "assets/back_arrow.png";
 import backArrow from "assets/back_arrow.png";
 import { SharedStatus } from "./forms/SharedStatus";
 import { SharedStatus } from "./forms/SharedStatus";
+import { useSnapshot } from "valtio";
+import { OFState } from "../../state";
 
 
-type Props = {
-  provider: SupportedProviders | "external";
-  enable_go_back: boolean;
-  project: {
-    id: number;
-    name: string;
-  };
-  shouldProvisionRegistry: boolean;
-  onSelectProvider: (provider: SupportedProviders | "external") => void;
-  onSaveCredentials: (credentials: any) => void;
-  onSaveSettings: (settings: any) => void;
-  onSuccess: () => void;
-  onSkip: () => void;
-  goBack: (data?: any) => void;
-};
+type Props = {};
 
 
-const ProvisionResources: React.FC<Props> = ({
-  provider,
-  project,
-  shouldProvisionRegistry,
-  onSelectProvider,
-  onSaveCredentials,
-  onSaveSettings,
-  onSuccess,
-
-  enable_go_back,
-  goBack,
-}) => {
+const ProvisionResources: React.FC<Props> = () => {
+  const snap = useSnapshot(OFState);
   const { step } = useParams<{ step: any }>();
   const { step } = useParams<{ step: any }>();
   const [infraStatus, setInfraStatus] = useState<{
   const [infraStatus, setInfraStatus] = useState<{
     hasError: boolean;
     hasError: boolean;
     description?: string;
     description?: string;
   }>(null);
   }>(null);
 
 
+  const shouldProvisionRegistry = !!snap.StateHandler.connected_registry?.skip;
+  const provider = snap.StateHandler.provision_resources?.provider;
+  const project = snap.StateHandler.project;
+  const enableGoBack =
+    snap.StepHandler.canGoBack && !snap.StepHandler.isSubFlow;
+
+  const handleContinue = (data?: any) => {
+    OFState.actions.nextStep("continue", data);
+  };
+
+  const handleGoBack = (data?: any) => {
+    OFState.actions.nextStep("go_back", data);
+  };
+
+  const handleSelectProvider = (provider: string) => {
+    if (provider !== "external") {
+      OFState.actions.nextStep("continue", provider);
+      return;
+    }
+    OFState.actions.nextStep("skip");
+  };
+
   const renderSaveButton = () => {
   const renderSaveButton = () => {
     if (infraStatus && !infraStatus.hasError) {
     if (infraStatus && !infraStatus.hasError) {
       return (
       return (
@@ -57,7 +56,7 @@ const ProvisionResources: React.FC<Props> = ({
           <SaveButton
           <SaveButton
             text="Continue"
             text="Continue"
             disabled={false}
             disabled={false}
-            onClick={onSuccess}
+            onClick={() => handleContinue()}
             makeFlush={true}
             makeFlush={true}
             clearPosition={true}
             clearPosition={true}
             statusPosition="right"
             statusPosition="right"
@@ -73,7 +72,7 @@ const ProvisionResources: React.FC<Props> = ({
             text="Resolve Errors"
             text="Resolve Errors"
             status="Encountered errors while provisioning."
             status="Encountered errors while provisioning."
             disabled={false}
             disabled={false}
-            onClick={() => goBack(infraStatus.description)}
+            onClick={() => handleGoBack(infraStatus.description)}
             makeFlush={true}
             makeFlush={true}
             clearPosition={true}
             clearPosition={true}
             statusPosition="right"
             statusPosition="right"
@@ -101,16 +100,7 @@ const ProvisionResources: React.FC<Props> = ({
     switch (step) {
     switch (step) {
       case "credentials":
       case "credentials":
       case "settings":
       case "settings":
-        return (
-          <FormFlowWrapper
-            provider={provider}
-            currentStep={step}
-            onSaveCredentials={onSaveCredentials}
-            onSaveSettings={onSaveSettings}
-            project={project}
-            goBack={goBack}
-          />
-        );
+        return <FormFlowWrapper currentStep={step} />;
       case "status":
       case "status":
         return (
         return (
           <>
           <>
@@ -127,17 +117,15 @@ const ProvisionResources: React.FC<Props> = ({
       case "connect_own_cluster":
       case "connect_own_cluster":
         return (
         return (
           <ConnectExternalCluster
           <ConnectExternalCluster
-            nextStep={onSuccess}
+            nextStep={handleContinue}
             project={project}
             project={project}
-            goBack={goBack}
+            goBack={handleGoBack}
           />
           />
         );
         );
       default:
       default:
         return (
         return (
           <ProviderSelector
           <ProviderSelector
-            selectProvider={(provider) => {
-              onSelectProvider(provider);
-            }}
+            selectProvider={handleSelectProvider}
             options={
             options={
               shouldProvisionRegistry
               shouldProvisionRegistry
                 ? provisionerOptions
                 ? provisionerOptions
@@ -150,10 +138,10 @@ const ProvisionResources: React.FC<Props> = ({
 
 
   return (
   return (
     <div>
     <div>
-      {enable_go_back && (
+      {enableGoBack && (
         <BackButton
         <BackButton
           onClick={() => {
           onClick={() => {
-            goBack();
+            handleGoBack();
           }}
           }}
         >
         >
           <BackButtonImg src={backArrow} />
           <BackButtonImg src={backArrow} />

+ 0 - 30
dashboard/src/main/home/onboarding/steps/ProvisionResources/ProvisionResourcesWrapper.tsx

@@ -1,30 +0,0 @@
-import React from "react";
-import { useSnapshot } from "valtio";
-import { OFState } from "../../state";
-import ProvisionResources from "./ProvisionResources";
-
-const ProvisionResourcesWrapper = () => {
-  const snap = useSnapshot(OFState);
-  return (
-    <ProvisionResources
-      shouldProvisionRegistry={snap.StateHandler.connected_registry?.skip}
-      provider={snap.StateHandler.provision_resources?.provider}
-      project={snap.StateHandler.project}
-      onSelectProvider={(provider: string) => {
-        if (provider !== "external") {
-          OFState.actions.nextStep("continue", provider);
-          return;
-        }
-        OFState.actions.nextStep("skip");
-      }}
-      onSaveCredentials={(data) => OFState.actions.nextStep("continue", data)}
-      onSaveSettings={(data) => OFState.actions.nextStep("continue", data)}
-      onSuccess={() => OFState.actions.nextStep("continue")}
-      onSkip={() => OFState.actions.nextStep("skip")}
-      enable_go_back={snap.StepHandler.canGoBack && !snap.StepHandler.isSubFlow}
-      goBack={(data: any) => OFState.actions.nextStep("go_back", data)}
-    />
-  );
-};
-
-export default ProvisionResourcesWrapper;

+ 26 - 17
dashboard/src/main/home/onboarding/steps/ProvisionResources/forms/FormFlow.tsx

@@ -1,4 +1,7 @@
-import { ProvisionerConfig } from "main/home/onboarding/state/StateHandler";
+import {
+  ProvisionerConfig,
+  StateHandler,
+} from "main/home/onboarding/state/StateHandler";
 import {
 import {
   SkipProvisionConfig,
   SkipProvisionConfig,
   SupportedProviders,
   SupportedProviders,
@@ -21,6 +24,8 @@ import {
   CredentialsForm as GCPCredentialsForm,
   CredentialsForm as GCPCredentialsForm,
   SettingsForm as GCPSettingsForm,
   SettingsForm as GCPSettingsForm,
 } from "./_GCPProvisionerForm";
 } from "./_GCPProvisionerForm";
+import { OFState } from "main/home/onboarding/state";
+import { useSnapshot } from "valtio";
 
 
 const Forms = {
 const Forms = {
   aws: {
   aws: {
@@ -61,29 +66,33 @@ const FormTitle = {
 };
 };
 
 
 type Props = {
 type Props = {
-  onSaveCredentials: (credentials: any) => void;
-  onSaveSettings: (settings: any) => void;
-  provider: SupportedProviders | "external";
   currentStep: "credentials" | "settings";
   currentStep: "credentials" | "settings";
-  project: { id: number; name: string };
-  goBack: () => void;
 };
 };
 
 
-const FormFlowWrapper: React.FC<Props> = ({
-  onSaveCredentials,
-  onSaveSettings,
-  provider,
-  currentStep,
-  project,
-  goBack,
-}) => {
+const FormFlowWrapper: React.FC<Props> = ({ currentStep }) => {
+  const snap = useSnapshot(StateHandler);
+
+  const provider = snap.provision_resources?.provider as
+    | SupportedProviders
+    | "external";
+
+  const project = snap.project;
+
+  const handleContinue = (data: any) => {
+    OFState.actions.nextStep("continue", data);
+  };
+
+  const handleGoBack = () => {
+    OFState.actions.nextStep("go_back");
+  };
+
   const nextFormStep = (
   const nextFormStep = (
     data?: Partial<Exclude<ProvisionerConfig, SkipProvisionConfig>>
     data?: Partial<Exclude<ProvisionerConfig, SkipProvisionConfig>>
   ) => {
   ) => {
     if (currentStep === "credentials") {
     if (currentStep === "credentials") {
-      onSaveCredentials(data);
+      handleContinue(data);
     } else if (currentStep === "settings") {
     } else if (currentStep === "settings") {
-      onSaveSettings(data);
+      handleContinue(data);
     }
     }
   };
   };
 
 
@@ -110,7 +119,7 @@ const FormFlowWrapper: React.FC<Props> = ({
     <FormWrapper>
     <FormWrapper>
       <Header>
       <Header>
         <FormHeader>
         <FormHeader>
-          <CloseButton onClick={() => goBack()}>
+          <CloseButton onClick={() => handleGoBack()}>
             <i className="material-icons">keyboard_backspace</i>
             <i className="material-icons">keyboard_backspace</i>
           </CloseButton>
           </CloseButton>
           {FormTitle[provider] && <img src={FormTitle[provider].icon} />}
           {FormTitle[provider] && <img src={FormTitle[provider].icon} />}