fix: invalid environment index can break the app (#3041)

This commit is contained in:
Akash K
2023-05-10 19:14:16 +05:30
committed by GitHub
parent b2693d6ba2
commit 8765c1a8ac

View File

@@ -37,13 +37,22 @@ type EnvironmentStore = typeof defaultEnvironmentsState
const dispatchers = defineDispatchers({ const dispatchers = defineDispatchers({
setSelectedEnvironmentIndex( setSelectedEnvironmentIndex(
_: EnvironmentStore, store: EnvironmentStore,
{ {
selectedEnvironmentIndex, selectedEnvironmentIndex,
}: { selectedEnvironmentIndex: SelectedEnvironmentIndex } }: { selectedEnvironmentIndex: SelectedEnvironmentIndex }
) { ) {
return { if (
selectedEnvironmentIndex, selectedEnvironmentIndex.type === "MY_ENV" &&
!!store.environments[selectedEnvironmentIndex.index]
) {
return {
selectedEnvironmentIndex,
}
} else {
return {
type: "NO_ENV_SELECTED",
}
} }
}, },
appendEnvironments( appendEnvironments(
@@ -325,21 +334,22 @@ export const selectedEnvironmentIndex$ = environmentsStore.subject$.pipe(
distinctUntilChanged() distinctUntilChanged()
) )
export const currentEnvironment$ = environmentsStore.subject$.pipe( export const currentEnvironment$: Observable<Environment | undefined> =
map(({ environments, selectedEnvironmentIndex }) => { environmentsStore.subject$.pipe(
if (selectedEnvironmentIndex.type === "NO_ENV_SELECTED") { map(({ environments, selectedEnvironmentIndex }) => {
const env: Environment = { if (selectedEnvironmentIndex.type === "NO_ENV_SELECTED") {
name: "No environment", const env: Environment = {
variables: [], name: "No environment",
variables: [],
}
return env
} else if (selectedEnvironmentIndex.type === "MY_ENV") {
return environments[selectedEnvironmentIndex.index]
} else {
return selectedEnvironmentIndex.environment
} }
return env })
} else if (selectedEnvironmentIndex.type === "MY_ENV") { )
return environments[selectedEnvironmentIndex.index]
} else {
return selectedEnvironmentIndex.environment
}
})
)
export type AggregateEnvironment = { export type AggregateEnvironment = {
key: string key: string
@@ -358,7 +368,7 @@ export const aggregateEnvs$: Observable<AggregateEnvironment[]> = combineLatest(
map(([selectedEnv, globalVars]) => { map(([selectedEnv, globalVars]) => {
const results: AggregateEnvironment[] = [] const results: AggregateEnvironment[] = []
selectedEnv.variables.forEach(({ key, value }) => selectedEnv?.variables.forEach(({ key, value }) =>
results.push({ key, value, sourceEnv: selectedEnv.name }) results.push({ key, value, sourceEnv: selectedEnv.name })
) )
globalVars.forEach(({ key, value }) => globalVars.forEach(({ key, value }) =>