Skip to content

Commit 8007c00

Browse files
authored
Merge pull request #3089 from codefori/fixCloseEditorsLeftOpened
Fixed editors being blank if reconnect setting is "never"
2 parents cca9ce4 + d401560 commit 8007c00

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

src/filesystems/qsys/FSUtils.ts

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,29 @@ export let restoreEditors: Promise<boolean> | undefined;
88
export function handleEditorsLeftOpened(context: vscode.ExtensionContext) {
99
const reconnect = IBMi.connectionManager.get<ReconnectMode>("autoReconnect") || "ask";
1010

11-
if (reconnect !== "never") {
12-
const editorsLeftOpened = vscode.window.tabGroups.all
11+
const getLeftOpenedEditors = () =>
12+
vscode.window.tabGroups.all
1313
.flatMap(group => group.tabs)
14-
.filter(tab => tab.input instanceof vscode.TabInputText && ["member", "streamfile"].includes(tab.input.uri.scheme));
14+
.filter(
15+
tab =>
16+
tab.input instanceof vscode.TabInputText &&
17+
["member", "streamfile"].includes(tab.input.uri.scheme)
18+
);
19+
20+
const closeAll = async () => {
21+
const tabsToClose = getLeftOpenedEditors(); // re-resolve fresh tab handles
22+
if (!tabsToClose.length) return false;
23+
24+
try {
25+
await vscode.window.tabGroups.close(tabsToClose, false);
26+
} catch {
27+
// Tabs can disappear between query and close; ignore safely.
28+
}
29+
return false;
30+
};
1531

32+
if (reconnect !== "never") {
33+
const editorsLeftOpened = getLeftOpenedEditors();
1634
const lastConnection = IBMi.GlobalStorage.getLastConnections()?.at(0)?.name;
1735
if (editorsLeftOpened.length && lastConnection) {
1836
const promises: PromiseLike<boolean>[] = [new Promise<boolean>((resolve) => instance.subscribe(context, "connected", "Restore previously opened editor", () => resolve(instance.getConnection()?.currentConnectionName === lastConnection), true))];
@@ -27,12 +45,15 @@ export function handleEditorsLeftOpened(context: vscode.ExtensionContext) {
2745
}
2846
restoreEditors = Promise.race(promises).then(restore => {
2947
if (!restore) {
30-
return vscode.window.tabGroups.close(editorsLeftOpened).then(() => false);
48+
return closeAll();
3149
}
3250
return restore;
3351
});
3452
}
3553
}
54+
else {
55+
return closeAll();
56+
}
3657
}
3758

3859
/**

0 commit comments

Comments
 (0)