@@ -57,6 +57,10 @@ import {
57
57
getPodNameSuffix ,
58
58
processDeploymentStatusDetailsData ,
59
59
ValueContainer ,
60
+ NoParamsNoEnvContext ,
61
+ NoParamsWithEnvContext ,
62
+ ParamsNoEnvContext ,
63
+ ParamsAndEnvContext ,
60
64
} from './utils'
61
65
import { AppMetrics } from './AppMetrics'
62
66
import IndexStore from '../../../v2/appDetails/index.store'
@@ -120,30 +124,31 @@ export default function AppDetail({ filteredEnvIds }: { filteredEnvIds?: string
120
124
?. sort ( ( a , b ) => ( a . environmentName > b . environmentName ? 1 : - 1 ) ) || [ ]
121
125
122
126
if ( _envList . length > 0 ) {
123
- let _envId
124
- if ( ! params . envId && _envList . length === 1 ) {
125
- _envId = _envList [ 0 ] . environmentId
126
- } else if (
127
- ! params . envId &&
128
- environmentId &&
129
- _envList . map ( ( env ) => env . environmentId ) . includes ( environmentId )
130
- ) {
131
- _envId = environmentId
132
- } else if ( ! _envList . map ( ( env ) => env . environmentId ) . includes ( + params . envId ) ) {
133
- _envId = _envList [ 0 ] . environmentId
127
+ let selector
128
+ if ( ! params . envId && ! environmentId ) {
129
+ selector = new NoParamsNoEnvContext ( )
130
+ } else if ( ! params . envId && environmentId ) {
131
+ selector = new NoParamsWithEnvContext ( )
132
+ } else if ( params . envId && ! environmentId ) {
133
+ selector = new ParamsNoEnvContext ( )
134
+ } else if ( params . envId && environmentId ) {
135
+ selector = new ParamsAndEnvContext ( )
134
136
}
135
- if ( _envId ) {
136
- const newUrl = getAppDetailsURL ( params . appId , _envId )
137
+
138
+ const selectedEnvId = selector . resolveEnvironmentId ( params , environmentId , _envList , setEnvironmentId )
139
+
140
+ // Set the URL and push to navigation stack
141
+ if ( selectedEnvId ) {
142
+ const newUrl = getAppDetailsURL ( params . appId , selectedEnvId )
137
143
push ( newUrl )
138
144
} else {
139
145
setEnvironmentId ( null )
140
146
}
141
147
} else {
142
148
setEnvironmentId ( null )
143
149
}
150
+ // Return the filtered and sorted environment list
144
151
return _envList
145
- } else {
146
- setEnvironmentId ( null )
147
152
}
148
153
return [ ]
149
154
} , [ filteredEnvIds , otherEnvsResult ] )
@@ -561,7 +566,7 @@ export const Details: React.FC<DetailsType> = ({
561
566
) {
562
567
return (
563
568
< >
564
- { environments ?. length > 0 && (
569
+ { environments ?. length > 0 && (
565
570
< div className = "flex left ml-20 mt-16" >
566
571
< EnvSelector
567
572
environments = { environments }
0 commit comments