Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
38 lines
1017 B
TypeScript
38 lines
1017 B
TypeScript
import type { SftpStateApi } from "../../../application/state/useSftpState";
|
|
import { sftpTreeSelectionStore } from "../../../application/state/sftp/sftpTreeSelectionStore";
|
|
|
|
export interface SftpSelectionTarget {
|
|
side: "left" | "right";
|
|
tabId: string;
|
|
}
|
|
|
|
export const keepOnlyPaneSelections = (
|
|
sftp: SftpStateApi,
|
|
target: SftpSelectionTarget | null,
|
|
) => {
|
|
sftp.clearSelectionsExcept(target);
|
|
const paneIds = [
|
|
...sftp.leftTabs.tabs.map((tab) => tab.id),
|
|
...sftp.rightTabs.tabs.map((tab) => tab.id),
|
|
];
|
|
for (const paneId of paneIds) {
|
|
if (target?.tabId === paneId) continue;
|
|
sftpTreeSelectionStore.clearSelection(paneId);
|
|
}
|
|
};
|
|
|
|
export const keepOnlyActivePaneSelections = (
|
|
sftp: SftpStateApi,
|
|
side: "left" | "right",
|
|
): SftpSelectionTarget | null => {
|
|
const tabId = sftp.getActiveTabId(side);
|
|
if (!tabId) {
|
|
keepOnlyPaneSelections(sftp, null);
|
|
return null;
|
|
}
|
|
|
|
const target = { side, tabId } as const;
|
|
keepOnlyPaneSelections(sftp, target);
|
|
return target;
|
|
};
|