fix(electron): preserve desktop hosts when saving SSH instances (#1138)
Co-authored-by: Isaac Sanchez <isanchez-hawkins@arize.com>
This commit is contained in:
committed by
GitHub
co-authored by
Isaac Sanchez
parent
c827d6b8df
commit
9fb3e5d764
@@ -579,16 +579,20 @@ export class ElectronSshManager {
|
|||||||
|
|
||||||
async setInstances(config) {
|
async setInstances(config) {
|
||||||
const root = readJsonRoot(this.settingsFilePath);
|
const root = readJsonRoot(this.settingsFilePath);
|
||||||
|
const previousSshIds = new Set(
|
||||||
|
(Array.isArray(root.desktopSshInstances) ? root.desktopSshInstances : [])
|
||||||
|
.map((entry) => String(entry?.id || '').trim())
|
||||||
|
.filter((id) => id && id !== LOCAL_HOST_ID)
|
||||||
|
);
|
||||||
const instances = Array.isArray(config?.instances) ? config.instances.map((instance) => this.sanitizeInstance(instance)) : [];
|
const instances = Array.isArray(config?.instances) ? config.instances.map((instance) => this.sanitizeInstance(instance)) : [];
|
||||||
root.desktopSshInstances = instances;
|
root.desktopSshInstances = instances;
|
||||||
|
|
||||||
const previousIds = new Set((Array.isArray(root.desktopHosts) ? root.desktopHosts : []).map((entry) => String(entry?.id || '').trim()).filter(Boolean));
|
|
||||||
const hosts = Array.isArray(root.desktopHosts) ? root.desktopHosts.filter(Boolean) : [];
|
const hosts = Array.isArray(root.desktopHosts) ? root.desktopHosts.filter(Boolean) : [];
|
||||||
const nextIds = new Set(instances.map((instance) => instance.id));
|
const nextIds = new Set(instances.map((instance) => instance.id));
|
||||||
|
|
||||||
const filteredHosts = hosts.filter((entry) => {
|
const filteredHosts = hosts.filter((entry) => {
|
||||||
const id = String(entry?.id || '').trim();
|
const id = String(entry?.id || '').trim();
|
||||||
return id && !(previousIds.has(id) && !nextIds.has(id));
|
return id && id !== LOCAL_HOST_ID && !(previousSshIds.has(id) && !nextIds.has(id));
|
||||||
});
|
});
|
||||||
|
|
||||||
for (const instance of instances) {
|
for (const instance of instances) {
|
||||||
@@ -605,7 +609,7 @@ export class ElectronSshManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
root.desktopHosts = filteredHosts;
|
root.desktopHosts = filteredHosts;
|
||||||
if (typeof root.desktopDefaultHostId === 'string' && previousIds.has(root.desktopDefaultHostId) && !nextIds.has(root.desktopDefaultHostId)) {
|
if (typeof root.desktopDefaultHostId === 'string' && previousSshIds.has(root.desktopDefaultHostId) && !nextIds.has(root.desktopDefaultHostId)) {
|
||||||
root.desktopDefaultHostId = LOCAL_HOST_ID;
|
root.desktopDefaultHostId = LOCAL_HOST_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user