From 2183af2deb4482cb414c1148ced003a53ac91447 Mon Sep 17 00:00:00 2001 From: hexxa Date: Tue, 14 Sep 2021 10:59:36 +0800 Subject: [PATCH] fix(updater): dont change path if chdir returns error --- src/client/web/src/components/browser.tsx | 2 +- .../web/src/components/state_updater.ts | 30 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/client/web/src/components/browser.tsx b/src/client/web/src/components/browser.tsx index eb2357c..e061b14 100644 --- a/src/client/web/src/components/browser.tsx +++ b/src/client/web/src/components/browser.tsx @@ -230,7 +230,7 @@ export class Browser extends React.Component { if (refresh) { updater() .setItems(this.props.browser.dirPath) - .then(() => { + .then((ok:boolean) => { this.update(updater().updateBrowser); }); } else { diff --git a/src/client/web/src/components/state_updater.ts b/src/client/web/src/components/state_updater.ts index 29b68e1..40c6219 100644 --- a/src/client/web/src/components/state_updater.ts +++ b/src/client/web/src/components/state_updater.ts @@ -159,7 +159,7 @@ export class Updater { dirParts: List, items: List, selectedItems: Map - ): Promise => { + ): Promise => { const pathsToDel = items .filter((item) => { return selectedItems.has(item.name); @@ -200,32 +200,34 @@ export class Updater { return this.setItems(dirParts); }; - setItems = async (dirParts: List): Promise => { + setItems = async (dirParts: List): Promise => { const dirPath = dirParts.join("/"); const listResp = await this.filesClient.list(dirPath); - this.props.browser.dirPath = dirParts; - this.props.browser.items = - listResp.status === 200 - ? List(listResp.data.metadatas) - : this.props.browser.items; + if (listResp.status === 200) { + this.props.browser.dirPath = dirParts; + this.props.browser.items = List(listResp.data.metadatas); + return true; + } + return false; }; - setHomeItems = async (): Promise => { + setHomeItems = async (): Promise => { const listResp = await this.filesClient.listHome(); - this.props.browser.dirPath = List(listResp.data.cwd.split("/")); - this.props.browser.items = - listResp.status === 200 - ? List(listResp.data.metadatas) - : this.props.browser.items; + if (listResp.status === 200) { + this.props.browser.dirPath = List(listResp.data.cwd.split("/")); + this.props.browser.items = List(listResp.data.metadatas); + return true; + } + return false; }; moveHere = async ( srcDir: string, dstDir: string, selectedItems: Map - ): Promise => { + ): Promise => { const itemsToMove = List(selectedItems.keys()).map( (itemName: string): any => { const from = getItemPath(srcDir, itemName);