From cff7ce6af41fd481e15253d24c7c765a7e6d4855 Mon Sep 17 00:00:00 2001 From: hexxa Date: Wed, 25 Aug 2021 14:51:12 +0800 Subject: [PATCH] fix(ui/admin): fix SetUser related issues --- src/client/web/src/client/index.ts | 2 +- src/client/web/src/components/pane_admin.tsx | 6 ++++-- src/client/web/src/components/pane_login.tsx | 10 ---------- src/client/web/src/components/state_mgr.tsx | 18 ++++++++++++++++-- src/client/web/src/components/state_updater.ts | 2 +- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/client/web/src/client/index.ts b/src/client/web/src/client/index.ts index 9375ba2..a918e6b 100644 --- a/src/client/web/src/client/index.ts +++ b/src/client/web/src/client/index.ts @@ -4,7 +4,7 @@ export const defaultTimeout = 10000; export const userIDParam = "uid"; export interface Quota { - spaceLimit: number; + spaceLimit: string; uploadSpeedLimit: number; downloadSpeedLimit: number; } diff --git a/src/client/web/src/components/pane_admin.tsx b/src/client/web/src/components/pane_admin.tsx index ae65234..aac4f60 100644 --- a/src/client/web/src/components/pane_admin.tsx +++ b/src/client/web/src/components/pane_admin.tsx @@ -63,7 +63,7 @@ export class UserForm extends React.Component< changeSpaceLimit = (ev: React.ChangeEvent) => { this.setState({ quota: { - spaceLimit: parseInt(ev.target.value, 10), + spaceLimit: ev.target.value, uploadSpeedLimit: this.state.quota.uploadSpeedLimit, downloadSpeedLimit: this.state.quota.downloadSpeedLimit, }, @@ -111,10 +111,12 @@ export class UserForm extends React.Component< setUser = async () => { return updater() - .setUser(this.props.id, this.props.role, this.props.quota) + .setUser(this.props.id, this.state.role, this.state.quota) .then((ok: boolean) => { if (!ok) { alert("failed to set user"); + } else { + alert("user is updated"); } return updater().listUsers(); }) diff --git a/src/client/web/src/components/pane_login.tsx b/src/client/web/src/components/pane_login.tsx index 23a39b7..5911710 100644 --- a/src/client/web/src/components/pane_login.tsx +++ b/src/client/web/src/components/pane_login.tsx @@ -26,8 +26,6 @@ export class AuthPane extends React.Component { pwd: "", captchaInput: "", }; - - this.initIsAuthed(); } changeUser = (ev: React.ChangeEvent) => { @@ -42,14 +40,6 @@ export class AuthPane extends React.Component { this.setState({ captchaInput: ev.target.value }); }; - initIsAuthed = () => { - updater() - .initIsAuthed() - .then(() => { - this.update(updater().updateLogin); - }); - }; - login = async () => { return updater() .login( diff --git a/src/client/web/src/components/state_mgr.tsx b/src/client/web/src/components/state_mgr.tsx index 628bd77..3c294f1 100644 --- a/src/client/web/src/components/state_mgr.tsx +++ b/src/client/web/src/components/state_mgr.tsx @@ -18,6 +18,7 @@ export class StateMgr extends React.Component { constructor(p: Props) { super(p); this.state = newState(); + this.initUpdater(this.state); // don't await } setUsersClient = (client: IUsersClient) => { @@ -28,7 +29,7 @@ export class StateMgr extends React.Component { this.filesClient = client; }; - initUpdater = (state: ICoreState): Promise => { + initUpdater = async (state: ICoreState): Promise => { updater().init(state); if (this.usersClient == null || this.filesClient == null) { console.error("updater's clients are not inited"); @@ -38,7 +39,20 @@ export class StateMgr extends React.Component { const params = new URLSearchParams(document.location.search.substring(1)); return updater() - .getCaptchaID() + .initIsAuthed() + .then(() => { + this.update(updater().updateLogin); + }) + .then(() => { + if (updater().props.login.authed) { + updater().displayPane(""); + } else { + updater().displayPane("login"); + } + }) + .then(() => { + return updater().getCaptchaID(); + }) .then((ok: boolean) => { if (!ok) { alert("failed to get captcha id"); diff --git a/src/client/web/src/components/state_updater.ts b/src/client/web/src/components/state_updater.ts index c5d8260..7acde03 100644 --- a/src/client/web/src/components/state_updater.ts +++ b/src/client/web/src/components/state_updater.ts @@ -305,7 +305,7 @@ export class Updater { }; initIsAuthed = async (): Promise => { - return updater() + return this .isAuthed() .then((isAuthed) => { updater().setAuthed(isAuthed);