diff options
author | Sam Wilkins <samwilkins333@gmail.com> | 2019-02-27 15:24:51 -0500 |
---|---|---|
committer | Sam Wilkins <samwilkins333@gmail.com> | 2019-02-27 15:24:51 -0500 |
commit | f60be11aef0e76cbc636933611962b3e1a4ec71e (patch) | |
tree | ddbbfcde2875d5c223312c7dea6b107a6b66cdfa /src | |
parent | ac0dfd18950cb2b1e70e0df1c5fc7778e393007f (diff) |
mostly finished workspace manipulation: golden-layout bug when creating a new workspace
Diffstat (limited to 'src')
-rw-r--r-- | src/client/views/Main.tsx | 48 | ||||
-rw-r--r-- | src/server/authentication/controllers/WorkspacesMenu.tsx | 42 | ||||
-rw-r--r-- | src/server/authentication/controllers/user_controller.ts | 3 | ||||
-rw-r--r-- | src/server/index.ts | 1 |
4 files changed, 55 insertions, 39 deletions
diff --git a/src/client/views/Main.tsx b/src/client/views/Main.tsx index 2c2149a1e..febf7489b 100644 --- a/src/client/views/Main.tsx +++ b/src/client/views/Main.tsx @@ -37,33 +37,27 @@ document.addEventListener("pointerdown", action(function (e: PointerEvent) { } }), true) -let mainDocId: string; +// Load the user's active workspace, or create a new one if initial session after signup request.get(window.location.origin + "/getActiveWorkspaceId", (error, response, body) => { - const here = window.location.origin; - let workspaceId: string; - if (body) { - workspaceId = body; - } else { - workspaceId = Utils.GenerateGuid(); - request.post(here + "/addWorkspaceId", { - body: { - target: mainDocId - }, - json: true - }) - request.post(here + "/setActiveWorkspaceId", { - body: { - target: mainDocId - }, - json: true - }) - } - load(workspaceId); -}) + init(body ? body : getNewWorkspace()); +}); -function load(workspaceId: string) { - mainDocId = workspaceId; - init(); +function getNewWorkspace(): string { + let newId = Utils.GenerateGuid(); + const here = window.location.origin; + request.post(here + "/addWorkspaceId", { + body: { + target: newId + }, + json: true + }) + request.post(here + "/setActiveWorkspaceId", { + body: { + target: newId + }, + json: true + }) + return newId; } //runInAction(() => @@ -82,7 +76,7 @@ function load(workspaceId: string) { // schemaDocs[4].SetData(KS.Author, "Bob", TextField); // schemaDocs.push(doc2); // const doc7 = Documents.SchemaDocument(schemaDocs) -function init() { +function init(mainDocId: string) { Documents.initProtos(() => { Utils.EmitCallback(Server.Socket, MessageStore.GetField, mainDocId, (res: any) => { console.log("HELLO WORLD") @@ -197,7 +191,7 @@ function init() { left: '4px', width: '150px' }} onClick={() => WorkspacesMenu.Instance.toggle()}>Workspaces</button> - <WorkspacesMenu load={load} /> + <WorkspacesMenu load={init} new={getNewWorkspace} /> </div>), document.getElementById('root')); }) diff --git a/src/server/authentication/controllers/WorkspacesMenu.tsx b/src/server/authentication/controllers/WorkspacesMenu.tsx index 8edd63fba..d9d884c14 100644 --- a/src/server/authentication/controllers/WorkspacesMenu.tsx +++ b/src/server/authentication/controllers/WorkspacesMenu.tsx @@ -1,12 +1,13 @@ import * as React from 'react'; import * as ReactDOM from 'react-dom'; -import { observable, action, configure, reaction, computed } from 'mobx'; +import { observable, action, configure, reaction, computed, ObservableMap } from 'mobx'; import { observer } from "mobx-react"; import * as request from 'request' import './WorkspacesMenu.css' export interface WorkspaceMenuProps { load: (workspaceId: string) => void; + new: () => string; } @observer @@ -14,10 +15,28 @@ export class WorkspacesMenu extends React.Component<WorkspaceMenuProps> { static Instance: WorkspacesMenu; @observable private workspacesExposed: boolean = false; @observable private workspaceIds: Array<string> = []; + @observable private selectedWorkspaceId: string = ""; constructor(props: WorkspaceMenuProps) { super(props); WorkspacesMenu.Instance = this; + this.loadExistingWorkspace = this.loadExistingWorkspace.bind(this); + this.addNewWorkspace = this.addNewWorkspace.bind(this); + } + + @action + addNewWorkspace() { + let newId = this.props.new(); + this.selectedWorkspaceId = newId; + this.props.load(newId); + this.toggle(); + } + + @action + loadExistingWorkspace = (e: React.MouseEvent<HTMLLIElement, MouseEvent>) => { + let id = e.currentTarget.innerHTML; + this.props.load(id); + this.selectedWorkspaceId = id; } @action @@ -42,11 +61,8 @@ export class WorkspacesMenu extends React.Component<WorkspaceMenuProps> { } } - setWorkspaceId = (e: React.MouseEvent) => { - this.props.load(e.currentTarget.innerHTML); - } - render() { + let p = this.props; return ( <div style={{ @@ -63,15 +79,25 @@ export class WorkspacesMenu extends React.Component<WorkspaceMenuProps> { padding: 10, }} > + <img + src="https://bit.ly/2IBBkxk" + style={{ + width: 20, + height: 20, + marginBottom: 10, + cursor: "grab" + }} + onClick={this.addNewWorkspace} + /> {this.workspaceIds.map(s => <li className={"ids"} key={s} style={{ listStyleType: "none", - paddingTop: 3, - paddingBottom: 3 + color: s === this.selectedWorkspaceId ? "darkblue" : "black", + cursor: "grab" }} - onClick={this.setWorkspaceId} + onClick={this.loadExistingWorkspace} >{s}</li> )} </div> diff --git a/src/server/authentication/controllers/user_controller.ts b/src/server/authentication/controllers/user_controller.ts index 899912ab7..1f1f43684 100644 --- a/src/server/authentication/controllers/user_controller.ts +++ b/src/server/authentication/controllers/user_controller.ts @@ -149,9 +149,6 @@ export let getLogout = (req: Request, res: Response) => { const dashUser: DashUserModel | undefined = req.user; if (dashUser) { dashUser.update({ $set: { didSelectSessionWorkspace: false } }, () => { }) - console.log("UPDATED :)"); - } else { - console.log("NO USER BY LOGOUT"); } req.logout(); const sess = req.session; diff --git a/src/server/index.ts b/src/server/index.ts index 1d16f65ed..c707f12a0 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -118,7 +118,6 @@ app.post("/setActiveWorkspaceId", (req, res) => { if (!dashUser) { return; } - console.log(`Updating active workspace ID to ${req.body.target}`); dashUser.update({ $set: { activeWorkspaceId: req.body.target } }, () => { }); }) |