1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Fix creating new workspace

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev 2020-11-17 07:32:13 +03:00
parent 246227168a
commit d73cdcac6f
3 changed files with 21 additions and 14 deletions

View File

@ -38,15 +38,18 @@ describe("workspace store tests", () => {
expect(() => ws.removeWorkspaceById(WorkspaceStore.defaultId)).toThrowError("Cannot remove");
})
it("can update default workspace name", () => {
it("can update workspace description", () => {
const ws = WorkspaceStore.getInstance<WorkspaceStore>();
ws.addWorkspace(new Workspace({
id: WorkspaceStore.defaultId,
const workspace = ws.addWorkspace(new Workspace({
id: "foobar",
name: "foobar",
}));
expect(ws.currentWorkspace.name).toBe("foobar");
workspace.description = "Foobar description";
ws.updateWorkspace(workspace);
expect(ws.getById("foobar").description).toBe("Foobar description");
})
it("can add workspaces", () => {

View File

@ -153,20 +153,20 @@ export class WorkspaceStore extends BaseStore<WorkspaceStoreModel> {
@action
addWorkspace(workspace: Workspace) {
const { id, name } = workspace;
const existingWorkspace = this.getById(id);
if (!name.trim() || this.getByName(name.trim())) {
return;
}
if (existingWorkspace) {
Object.assign(existingWorkspace, workspace);
appEventBus.emit({name: "workspace", action: "update"})
} else {
appEventBus.emit({name: "workspace", action: "add"})
}
this.workspaces.set(id, workspace);
appEventBus.emit({name: "workspace", action: "add"})
return workspace;
}
@action
updateWorkspace(workspace: Workspace) {
this.workspaces.set(workspace.id, workspace);
appEventBus.emit({name: "workspace", action: "update"});
}
@action
removeWorkspace(workspace: Workspace) {
this.removeWorkspaceById(workspace.id)

View File

@ -45,9 +45,13 @@ export class Workspaces extends React.Component {
}
saveWorkspace = (id: WorkspaceId) => {
const draft = toJS(this.editingWorkspaces.get(id));
const workspace = workspaceStore.addWorkspace(draft);
if (workspace) {
const workspace = new Workspace(this.editingWorkspaces.get(id));
if (workspaceStore.getById(id)) {
workspaceStore.updateWorkspace(workspace);
this.clearEditing(id);
return;
}
if (workspaceStore.addWorkspace(workspace)) {
this.clearEditing(id);
}
}