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"); expect(() => ws.removeWorkspaceById(WorkspaceStore.defaultId)).toThrowError("Cannot remove");
}) })
it("can update default workspace name", () => { it("can update workspace description", () => {
const ws = WorkspaceStore.getInstance<WorkspaceStore>(); const ws = WorkspaceStore.getInstance<WorkspaceStore>();
ws.addWorkspace(new Workspace({ const workspace = ws.addWorkspace(new Workspace({
id: WorkspaceStore.defaultId, id: "foobar",
name: "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", () => { it("can add workspaces", () => {

View File

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

View File

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