mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-04 02:04:06 +00:00
Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com>
78 lines
2.1 KiB
TypeScript
78 lines
2.1 KiB
TypeScript
import { create } from "zustand";
|
|
import { createJSONStorage, persist } from "zustand/middleware";
|
|
|
|
import {
|
|
AwsConnectDraft,
|
|
PROVIDER_WIZARD_MODE,
|
|
ProviderWizardIdentity,
|
|
ProviderWizardMode,
|
|
} from "@/types/provider-wizard";
|
|
import { ProviderType } from "@/types/providers";
|
|
|
|
interface ProviderWizardState {
|
|
providerId: string | null;
|
|
providerType: ProviderType | null;
|
|
providerUid: string | null;
|
|
providerAlias: string | null;
|
|
via: string | null;
|
|
secretId: string | null;
|
|
mode: ProviderWizardMode;
|
|
awsConnectDraft: AwsConnectDraft | null;
|
|
setProvider: (provider: ProviderWizardIdentity) => void;
|
|
setVia: (via: string | null) => void;
|
|
setSecretId: (secretId: string | null) => void;
|
|
setMode: (mode: ProviderWizardMode) => void;
|
|
setAwsConnectDraft: (patch: Partial<AwsConnectDraft>) => void;
|
|
reset: () => void;
|
|
}
|
|
|
|
const initialState = {
|
|
providerId: null,
|
|
providerType: null,
|
|
providerUid: null,
|
|
providerAlias: null,
|
|
via: null,
|
|
secretId: null,
|
|
mode: PROVIDER_WIZARD_MODE.ADD,
|
|
awsConnectDraft: null,
|
|
};
|
|
|
|
const EMPTY_AWS_CONNECT_DRAFT: AwsConnectDraft = {
|
|
method: "role",
|
|
roleValues: {},
|
|
keysValues: {},
|
|
};
|
|
|
|
export const useProviderWizardStore = create<ProviderWizardState>()(
|
|
persist(
|
|
(set) => ({
|
|
...initialState,
|
|
setProvider: (provider) =>
|
|
set({
|
|
providerId: provider.id,
|
|
providerType: provider.type,
|
|
providerUid: provider.uid,
|
|
providerAlias: provider.alias,
|
|
}),
|
|
setVia: (via) => set({ via }),
|
|
setSecretId: (secretId) => set({ secretId }),
|
|
setMode: (mode) => set({ mode }),
|
|
setAwsConnectDraft: (patch) =>
|
|
set((state) => ({
|
|
awsConnectDraft: {
|
|
...EMPTY_AWS_CONNECT_DRAFT,
|
|
...state.awsConnectDraft,
|
|
...patch,
|
|
},
|
|
})),
|
|
reset: () => set(initialState),
|
|
}),
|
|
{
|
|
name: "provider-wizard-store",
|
|
storage: createJSONStorage(() => sessionStorage),
|
|
// The draft may hold access keys: it never leaves memory.
|
|
partialize: ({ awsConnectDraft: _draft, ...persisted }) => persisted,
|
|
},
|
|
),
|
|
);
|