@@ -170,7 +170,7 @@ async function saveProject(targetWindow, projectFile, projectContents, externalF
170170 // the result will contain only sections that were updated due to save, such as model.archiveFiles
171171 const saveResult = { } ;
172172
173- _addOpenProject ( targetWindow , projectFile , false ) ;
173+ _assignProjectFile ( targetWindow , projectFile ) ;
174174 saveResult [ 'model' ] = await _saveExternalFileContents ( _getProjectDirectory ( targetWindow ) , externalFileContents ) ;
175175 await _saveProjectFile ( targetWindow , projectFile , projectContents ) ;
176176 const wktWindow = require ( './wktWindow' ) ;
@@ -729,6 +729,17 @@ function _addOpenProject(targetWindow, file, pending, credentialManager) {
729729 openProjects . set ( targetWindow , value ) ;
730730}
731731
732+ // assign project file to window if none is assigned, or file path changes.
733+ // avoid unnecessary reassignments in order to keep credential manager between saves.
734+ function _assignProjectFile ( targetWindow , projectFile ) {
735+ const openProject = openProjects . get ( targetWindow ) ;
736+ const oldFile = openProject ? openProject . projectDirectory + '|' + openProject . projectFile : '' ;
737+ const newFile = path . resolve ( path . dirname ( projectFile ) ) + '|' + path . basename ( projectFile ) ;
738+ if ( newFile !== oldFile ) {
739+ _addOpenProject ( targetWindow , projectFile , false ) ;
740+ }
741+ }
742+ 732743async function _createCredentialManager ( targetWindow , projectFileJsonContent ) {
733744 let credentialStorePolicy = _getProjectCredentialStorePolicy ( projectFileJsonContent ) ;
734745 return new Promise ( ( resolve , reject ) => {
0 commit comments