Some checks failed
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
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;
|
|
};
|