@@ -40,7 +40,13 @@ export default function ClusterManifest({
40
40
setOriginalManifest ( _manifest )
41
41
const trimmedManifest = YAML . stringify ( getTrimmedManifestData ( response . result ?. manifest ) )
42
42
setDefaultManifest ( trimmedManifest )
43
- setManifest ( trimmedManifest )
43
+ // Ideally should have been setManifest(trimmedManifest).
44
+ if ( hideManagedFields ) {
45
+ setManifest ( trimmedManifest )
46
+ }
47
+ else {
48
+ setManifest ( _manifest )
49
+ }
44
50
setLoading ( false )
45
51
setManifestAvailable ( true )
46
52
} )
@@ -58,11 +64,14 @@ export default function ClusterManifest({
58
64
}
59
65
} , [ terminalAccessId ] )
60
66
61
- // NOTE: Check if we can replace this useEffect since manifestMode changes on events.
67
+ // NOTE: Need to remove this useEffect since manifestMode changes on events only.
68
+ // Since there can be alot of ways this useEffect interferes with other handlers, causing bugs.
69
+ // Plus it might be a case when this useEffect will run before we have manifest, which will cause issues.
62
70
useEffect ( ( ) => {
63
71
const regex = manifestCommentsRegex
64
72
if ( manifestMode === EditModeType . NON_EDIT ) {
65
- setManifest ( defaultManifest )
73
+ const _manifest = hideManagedFields ? defaultManifest : originalManifest
74
+ setManifest ( _manifest )
66
75
} else if ( manifestMode === EditModeType . APPLY ) {
67
76
const _manifestValue = manifestValue . replace ( regex , 'apiVersion:' )
68
77
if ( _manifestValue !== defaultManifest ) {
@@ -71,38 +80,35 @@ export default function ClusterManifest({
71
80
setManifestData ( JSON . stringify ( YAML . parse ( _manifestValue ) ) )
72
81
} else {
73
82
setManifest ( defaultManifestErrorText )
83
+ setManifestMode ( EditModeType . EDIT )
74
84
}
75
85
} catch ( error ) {
76
- setManifest ( defaultManifestErrorText + '# ' + error + '\n#\n' + _manifestValue )
86
+ // Since we check error in edit as well, we can ignore this error and somehow infinite loop is created if we setManifest here.
77
87
setManifestMode ( EditModeType . EDIT )
78
88
}
79
89
} else {
80
90
selectTerminalTab ( )
81
91
setManifestMode ( EditModeType . NON_EDIT )
82
92
}
83
93
} else if ( manifestMode === EditModeType . EDIT ) {
84
- if ( errorMessage ?. length ) {
85
- setManifest ( defaultManifestErrorText + '# ' + errorMessage + '\n#\n' + manifestValue )
94
+ try {
95
+ // Parsing will remove earlier comments, which will fix internal issues of code, currently the errorMessage is not getting cleared due to line 83.
96
+ const parsedManifest = YAML . parse ( manifestValue )
97
+ if ( parsedManifest ) {
98
+ const trimmedManifest = YAML . stringify ( getTrimmedManifestData ( parsedManifest ) )
99
+ const errorDetails = errorMessage ?. length ? defaultManifestErrorText + '# ' + errorMessage + '\n#\n' : ''
100
+ setManifest ( errorDetails + trimmedManifest )
101
+ }
102
+ else {
103
+ setManifest ( defaultManifestErrorText )
104
+ }
86
105
}
87
- }
88
- } , [ manifestMode ] )
89
-
90
- const displayManifest = ( ( ) => {
91
- if ( manifestMode === EditModeType . NON_EDIT ) {
92
- if ( hideManagedFields ) {
93
- return defaultManifest
106
+ catch ( error ) {
107
+ // Should we directly use error object here?
108
+ setManifest ( defaultManifestErrorText + '# ' + error + '\n#\n' + manifestValue )
94
109
}
95
- return originalManifest
96
110
}
97
-
98
- return manifestValue
99
- } ) ( )
100
-
101
- const handleEditorChange = ( value : string ) => {
102
- if ( manifestMode !== EditModeType . NON_EDIT ) {
103
- setManifest ( value )
104
- }
105
- }
111
+ } , [ manifestMode , hideManagedFields ] )
106
112
107
113
const switchToEditMode = ( ) : void => {
108
114
setManifestMode ( EditModeType . EDIT )
@@ -136,10 +142,10 @@ export default function ClusterManifest({
136
142
defaultValue = { defaultManifest }
137
143
theme = "vs-dark--dt"
138
144
height = "100%"
139
- value = { displayManifest }
145
+ value = { manifestValue }
140
146
mode = { MODES . YAML }
141
147
noParsing
142
- onChange = { handleEditorChange }
148
+ onChange = { setManifest }
143
149
readOnly = { manifestMode !== EditModeType . EDIT && manifestMode !== EditModeType . REVIEW }
144
150
diffView = { manifestMode === EditModeType . REVIEW }
145
151
/>
0 commit comments