@@ -73,8 +73,10 @@ import { getModuleInfo } from '../../../v2/devtronStackManager/DevtronStackManag
73
73
import { ModuleStatus } from '../../../v2/devtronStackManager/DevtronStackManager.type'
74
74
import { DropdownIndicator , Option } from '../../../v2/common/ReactSelect.utils'
75
75
import {
76
+ DEPLOYMENT_CONFIGURATION_NAV_MAP ,
76
77
LAST_SAVED_CONFIG_OPTION ,
77
78
SPECIFIC_TRIGGER_CONFIG_OPTION ,
79
+ LATEST_TRIGGER_CONFIG_OPTION ,
78
80
checkForDiff ,
79
81
getDeployConfigOptions ,
80
82
processResolvedPromise ,
@@ -88,6 +90,7 @@ import { abortEarlierRequests, getInitialState } from './cdMaterials.utils'
88
90
import { getLastExecutionByArtifactAppEnv } from '../../../../services/service'
89
91
import AnnouncementBanner from '../../../common/AnnouncementBanner'
90
92
import { useRouteMatch } from 'react-router-dom'
93
+ import { get } from 'http'
91
94
92
95
const ApprovalInfoTippy = importComponentFromFELibrary ( 'ApprovalInfoTippy' )
93
96
const ExpireApproval = importComponentFromFELibrary ( 'ExpireApproval' )
@@ -139,7 +142,6 @@ export default function CDMaterial({
139
142
const [ isConsumedImageAvailable , setIsConsumedImageAvailable ] = useState < boolean > ( false )
140
143
// Should be able to abort request using useAsync
141
144
const abortControllerRef = useRef ( new AbortController ( ) )
142
- // const [mode, setMode] = useState<string>(searchParams.mode)
143
145
144
146
// TODO: Ask if pipelineId always changes on change of app else add appId as dependency
145
147
const [ loadingMaterials , materialsResult , materialsError , reloadMaterials ] = useAsync (
@@ -179,7 +181,7 @@ export default function CDMaterial({
179
181
const [ showAppliedFilters , setShowAppliedFilters ] = useState < boolean > ( false )
180
182
const [ deploymentLoading , setDeploymentLoading ] = useState < boolean > ( false )
181
183
const [ appliedFilterList , setAppliedFilterList ] = useState < FilterConditionsListType [ ] > ( [ ] )
182
-
184
+
183
185
const resourceFilters = materialsResult ?. resourceFilters ?? [ ]
184
186
const hideImageTaggingHardDelete = materialsResult ?. hideImageTaggingHardDelete ?? false
185
187
const requestedUserId = materialsResult ?. requestedUserId ?? ''
@@ -245,7 +247,13 @@ export default function CDMaterial({
245
247
checkingDiff : false ,
246
248
} ) )
247
249
} ,
248
- )
250
+ ) . catch ( err => {
251
+ showError ( err )
252
+ setState ( ( prevState ) => ( { ...prevState , checkingDiff : false } ) )
253
+
254
+ } ) . finally ( ( ) => {
255
+ setState ( ( prevState ) => ( { ...prevState , checkingDiff : false } ) )
256
+ } )
249
257
}
250
258
251
259
const setSearchValue = ( searchValue : string ) => {
@@ -263,12 +271,12 @@ export default function CDMaterial({
263
271
} )
264
272
}
265
273
266
- const setParamsValue = ( modeParamValue : string ) => {
274
+ const setInitialModeParams = ( modeParamValue : string ) => {
267
275
const newParams = {
268
276
...searchParams ,
269
277
mode : modeParamValue ,
270
- config : 'deploymentTemplate' ,
271
- deploy : 'LAST_SAVED_CONFIG' . toLocaleLowerCase ( ) //LATEST_TRIGGER_CONFIG
278
+ config : DEPLOYMENT_CONFIGURATION_NAV_MAP . DEPLOYMENT_TEMPLATE . key ,
279
+ deploy : searchParams . deploy ? searchParams . deploy : DeploymentWithConfigType . LAST_SAVED_CONFIG
272
280
}
273
281
history . push ( {
274
282
search : new URLSearchParams ( newParams ) . toString ( ) ,
@@ -411,15 +419,30 @@ export default function CDMaterial({
411
419
// The above states are derived from material so no need to make a state for them and shift the config diff here
412
420
} , [ material ] )
413
421
422
+ const getInitialSelectedConfigToDeploy = ( ) => {
423
+ if ( searchParams . deploy === DeploymentWithConfigType . LAST_SAVED_CONFIG ) {
424
+ return LAST_SAVED_CONFIG_OPTION
425
+ }
426
+ if (
427
+ searchParams . deploy === DeploymentWithConfigType . SPECIFIC_TRIGGER_CONFIG ||
428
+ ( materialType === MATERIAL_TYPE . rollbackMaterialList && ! searchParams . deploy )
429
+ ) {
430
+ return SPECIFIC_TRIGGER_CONFIG_OPTION
431
+ }
432
+ if (
433
+ searchParams . deploy === DeploymentWithConfigType . LATEST_TRIGGER_CONFIG ||
434
+ ( materialType === MATERIAL_TYPE . inputMaterialList && ! searchParams . deploy )
435
+ ) {
436
+ return LATEST_TRIGGER_CONFIG_OPTION
437
+ }
438
+ }
414
439
useEffect ( ( ) => {
415
440
setState ( ( prevState ) => ( {
416
441
...prevState ,
417
442
isRollbackTrigger : materialType === MATERIAL_TYPE . rollbackMaterialList ,
418
443
isSelectImageTrigger : materialType === MATERIAL_TYPE . inputMaterialList ,
419
444
selectedConfigToDeploy :
420
- materialType === MATERIAL_TYPE . rollbackMaterialList
421
- ? SPECIFIC_TRIGGER_CONFIG_OPTION
422
- : LAST_SAVED_CONFIG_OPTION ,
445
+ getInitialSelectedConfigToDeploy ( ) ,
423
446
} ) )
424
447
} , [ materialType ] )
425
448
@@ -746,9 +769,8 @@ export default function CDMaterial({
746
769
! state . recentDeploymentConfig
747
770
748
771
const reviewConfig = ( modeParamValue : string ) => {
749
- // setMode(modeParamValue)
750
772
if ( canReviewConfig ( ) ) {
751
- setParamsValue ( modeParamValue )
773
+ setInitialModeParams ( modeParamValue )
752
774
}
753
775
}
754
776
@@ -779,16 +801,39 @@ export default function CDMaterial({
779
801
: state . specificDeploymentConfig
780
802
}
781
803
804
+ const setConfigParams = ( deploy : string ) => {
805
+ const newParams = {
806
+ ...searchParams ,
807
+ deploy,
808
+ }
809
+ history . push ( {
810
+ search : new URLSearchParams ( newParams ) . toString ( ) ,
811
+ } )
812
+ }
813
+
814
+ const getDeploymentConfigSelectedValue = ( ) => {
815
+ if ( searchParams . deploy === DeploymentWithConfigType . LAST_SAVED_CONFIG ) {
816
+ return getDeployConfigOptions ( state . isRollbackTrigger , state . recentDeploymentConfig !== null ) [ 0 ] . options [ 0 ]
817
+ }
818
+ if ( searchParams . deploy === DeploymentWithConfigType . LATEST_TRIGGER_CONFIG ) {
819
+ return getDeployConfigOptions ( state . isRollbackTrigger , state . recentDeploymentConfig !== null ) [ 0 ] . options [ 1 ]
820
+ }
821
+
822
+ if ( searchParams . deploy === DeploymentWithConfigType . SPECIFIC_TRIGGER_CONFIG ) {
823
+ return getDeployConfigOptions ( state . isRollbackTrigger , state . recentDeploymentConfig !== null ) [ 0 ] . options [ 2 ]
824
+ }
825
+ }
782
826
783
827
const handleConfigSelection = ( selected ) => {
784
828
if ( selected ?. value !== state . selectedConfigToDeploy . value ) {
785
829
const _diffOptions = checkForDiff ( state . recentDeploymentConfig , getBaseTemplateConfiguration ( selected ) )
786
830
setState ( ( prevState ) => ( {
787
831
...prevState ,
788
- selectedConfigToDeploy : selected ,
832
+ selectedConfigToDeploy : selected ? selected : getInitialSelectedConfigToDeploy ( ) ,
789
833
diffFound : _diffOptions && Object . values ( _diffOptions ) . some ( ( d ) => d ) ,
790
834
diffOptions : _diffOptions ,
791
835
} ) )
836
+ setConfigParams ( selected . value )
792
837
}
793
838
}
794
839
0 commit comments