fix: invalid environment index can break the app (#3041)
This commit is contained in:
@@ -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 }) =>
|
||||||
|
|||||||
Reference in New Issue
Block a user