Fix sidebar project removal
Remove projects through a daemon RPC so the sidebar can delete the project record after archiving its active workspaces. Reopening a removed directory recreates the missing project record so local projects keep their derived basename, and History skips orphaned archived workspace rows. Fixes #1583.
This commit is contained in:
@@ -48,6 +48,7 @@ function getTestSessionReferences() {
|
||||
sessions: state.sessions,
|
||||
session,
|
||||
workspaces: session.workspaces,
|
||||
emptyProjects: session.emptyProjects,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -448,6 +449,48 @@ describe("removeWorkspace", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("removeEmptyProject", () => {
|
||||
it("removes an empty project by project id", () => {
|
||||
const store = useSessionStore.getState();
|
||||
initializeTestSession();
|
||||
store.setEmptyProjects("test-server", [
|
||||
{
|
||||
projectId: "project-empty",
|
||||
projectDisplayName: "Empty",
|
||||
projectCustomName: null,
|
||||
projectRootPath: "/repo/empty",
|
||||
projectKind: "git",
|
||||
},
|
||||
]);
|
||||
|
||||
store.removeEmptyProject("test-server", "project-empty");
|
||||
|
||||
expect(getTestSessionReferences().emptyProjects.has("project-empty")).toBe(false);
|
||||
});
|
||||
|
||||
it("preserves identity when removing a missing empty project", () => {
|
||||
const store = useSessionStore.getState();
|
||||
initializeTestSession();
|
||||
store.setEmptyProjects("test-server", [
|
||||
{
|
||||
projectId: "project-empty",
|
||||
projectDisplayName: "Empty",
|
||||
projectCustomName: null,
|
||||
projectRootPath: "/repo/empty",
|
||||
projectKind: "git",
|
||||
},
|
||||
]);
|
||||
const before = getTestSessionReferences();
|
||||
|
||||
store.removeEmptyProject("test-server", "project-missing");
|
||||
const after = getTestSessionReferences();
|
||||
|
||||
expect(after.sessions).toBe(before.sessions);
|
||||
expect(after.session).toBe(before.session);
|
||||
expect(after.emptyProjects).toBe(before.emptyProjects);
|
||||
});
|
||||
});
|
||||
|
||||
describe("patchWorkspaceScripts", () => {
|
||||
it("preserves workspace entry identity when scripts are content-equal", () => {
|
||||
const script = {
|
||||
|
||||
Reference in New Issue
Block a user