|
|
@@ -1,5 +1,6 @@
|
|
|
import { proxy, subscribe } from "valtio";
|
|
|
import { devtools, subscribeKey } from "valtio/utils";
|
|
|
+import { Onboarding } from "../types";
|
|
|
import { StateHandler } from "./StateHandler";
|
|
|
import { Action, StepHandler } from "./StepHandler";
|
|
|
|
|
|
@@ -28,7 +29,7 @@ export const OFState = proxy({
|
|
|
StepHandler.actions.clearState();
|
|
|
},
|
|
|
saveState: () => {
|
|
|
- const state = JSON.stringify(OFState);
|
|
|
+ const state = compressState(OFState);
|
|
|
localStorage.setItem(
|
|
|
`onboarding-${OFState.StateHandler.project?.id}`,
|
|
|
state
|
|
|
@@ -41,9 +42,9 @@ export const OFState = proxy({
|
|
|
if (!notParsedPrevState) {
|
|
|
return;
|
|
|
}
|
|
|
- const prevState = JSON.parse(notParsedPrevState);
|
|
|
+ const prevState = decompressState(notParsedPrevState);
|
|
|
|
|
|
- if (prevState.StepHandler.finishedOnboarding) {
|
|
|
+ if (prevState.StepHandler.currentStepName === "clean_up") {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -56,3 +57,103 @@ export const OFState = proxy({
|
|
|
},
|
|
|
},
|
|
|
});
|
|
|
+
|
|
|
+const compressState = (state: typeof OFState) => {
|
|
|
+ const currentStep = state.StepHandler?.currentStepName;
|
|
|
+ const project = state.StateHandler?.project;
|
|
|
+ const source = state.StateHandler?.connected_source;
|
|
|
+ const registry = state.StateHandler?.connected_registry;
|
|
|
+ const provision = state.StateHandler?.provision_resources;
|
|
|
+
|
|
|
+ let onboarding_state: Onboarding = {
|
|
|
+ current_step: currentStep,
|
|
|
+
|
|
|
+ project_id: project?.id,
|
|
|
+ project_name: project?.name,
|
|
|
+
|
|
|
+ connected_source: source,
|
|
|
+ skip_registry_connection: registry?.skip,
|
|
|
+
|
|
|
+ registry_connection_provider: registry?.provider,
|
|
|
+ registry_connection_credentials_id: registry?.credentials?.id,
|
|
|
+ registry_connection_settings_url:
|
|
|
+ registry?.settings?.gcr_url || registry?.settings?.registry_url,
|
|
|
+ registry_connection_settings_name: registry?.settings?.registry_name,
|
|
|
+
|
|
|
+ skip_resource_provision: provision?.skip,
|
|
|
+ resource_provision_provider: provision?.provider,
|
|
|
+ resource_provision_credentials_id: provision?.credentials?.id,
|
|
|
+ resource_provision_credentials_arn: provision?.credentials?.arn,
|
|
|
+ resource_provision_credentials_region: provision?.credentials?.region,
|
|
|
+
|
|
|
+ resource_provision_settings_cluster_name: provision?.settings?.cluster_name,
|
|
|
+ resource_provision_settings_region: provision?.settings?.region,
|
|
|
+ resource_provision_settings_tier: provision?.settings?.tier,
|
|
|
+ resource_provision_settings_machine_type:
|
|
|
+ provision?.settings?.aws_machine_type,
|
|
|
+ };
|
|
|
+
|
|
|
+ return JSON.stringify(onboarding_state);
|
|
|
+};
|
|
|
+
|
|
|
+const decompressState = (prev_state: string) => {
|
|
|
+ const state: Onboarding = JSON.parse(prev_state);
|
|
|
+
|
|
|
+ const step = state.current_step;
|
|
|
+ const project = {
|
|
|
+ id: state.project_id,
|
|
|
+ name: state.project_name,
|
|
|
+ };
|
|
|
+
|
|
|
+ let registry: any = {
|
|
|
+ skip: state.skip_registry_connection,
|
|
|
+ provider: state.registry_connection_provider,
|
|
|
+ credentials: {
|
|
|
+ id: state.registry_connection_credentials_id,
|
|
|
+ },
|
|
|
+ settings: {
|
|
|
+ registry_name: state.registry_connection_settings_name,
|
|
|
+ },
|
|
|
+ };
|
|
|
+
|
|
|
+ if (registry.provider === "gcp") {
|
|
|
+ registry.settings.gcr_url = state.registry_connection_settings_url;
|
|
|
+ } else if (registry.provider === "do") {
|
|
|
+ registry.settings.registry_url = state.registry_connection_settings_url;
|
|
|
+ }
|
|
|
+
|
|
|
+ let provision: any = {
|
|
|
+ skip: state.skip_resource_provision,
|
|
|
+ provider: state.resource_provision_provider,
|
|
|
+ credentials: {
|
|
|
+ id: state.resource_provision_credentials_id,
|
|
|
+ },
|
|
|
+ settings: {
|
|
|
+ cluster_name: state.resource_provision_settings_cluster_name,
|
|
|
+ },
|
|
|
+ };
|
|
|
+
|
|
|
+ if (provision.provider === "gcp") {
|
|
|
+ provision.credentials.region = state.resource_provision_credentials_region;
|
|
|
+ } else if (provision.provider === "aws") {
|
|
|
+ provision.credentials.region = state.resource_provision_credentials_region;
|
|
|
+ provision.credentials.arn = state.resource_provision_credentials_arn;
|
|
|
+ provision.settings.aws_machine_type =
|
|
|
+ state.resource_provision_settings_machine_type;
|
|
|
+ } else if (provision.provider === "do") {
|
|
|
+ provision.settings.tier = state.resource_provision_settings_tier;
|
|
|
+ provision.settings.region = state.resource_provision_settings_region;
|
|
|
+ }
|
|
|
+
|
|
|
+ return {
|
|
|
+ StepHandler: {
|
|
|
+ currentStepName: step,
|
|
|
+ },
|
|
|
+ StateHandler: {
|
|
|
+ project,
|
|
|
+ connected_source: state.connected_source,
|
|
|
+ connected_registry: registry,
|
|
|
+ provision_resources: provision,
|
|
|
+ },
|
|
|
+ };
|
|
|
+};
|