From b4acd43c2955919d5179f1a8a567c9d037d677c0 Mon Sep 17 00:00:00 2001 From: pkupczyk <piotr.kupczyk@id.ethz.ch> Date: Fri, 23 Dec 2022 12:13:32 +0100 Subject: [PATCH] SSDM-13282 : Admin UI - improve error handling --- .../common/browser/BrowserController.js | 35 +++++++++++++++---- .../common/browser/BrowserWithOpenbis.jsx | 5 +++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/openbis_ng_ui/src/js/components/common/browser/BrowserController.js b/openbis_ng_ui/src/js/components/common/browser/BrowserController.js index d642179fd83..271cb71682c 100644 --- a/openbis_ng_ui/src/js/components/common/browser/BrowserController.js +++ b/openbis_ng_ui/src/js/components/common/browser/BrowserController.js @@ -9,10 +9,26 @@ export default class BrowserController { throw 'Method not implemented' } + async _doLoadNodePath(params) { + try { + return await this.doLoadNodePath(params) + } catch (error) { + this._onError(error) + } + } + async doLoadNodes() { throw 'Method not implemented' } + async _doLoadNodes(params) { + try { + return await this.doLoadNodes(params) + } catch (error) { + this._onError(error) + } + } + constructor() { autoBind(this) @@ -20,10 +36,10 @@ export default class BrowserController { class FullTreeController extends BrowserTreeController { async doLoadNodePath(params) { - return controller.doLoadNodePath(params) + return controller._doLoadNodePath(params) } async doLoadNodes(params) { - return await controller.doLoadNodes({ + return await controller._doLoadNodes({ ...params, filter: null }) @@ -32,11 +48,11 @@ export default class BrowserController { class FilteredTreeController extends BrowserTreeController { async doLoadNodePath(params) { - return controller.doLoadNodePath(params) + return controller._doLoadNodePath(params) } async doLoadNodes(params) { const { filter } = controller.context.getState() - return await controller.doLoadNodes({ + return await controller._doLoadNodes({ ...params, filter: util.trim(filter) }) @@ -96,7 +112,7 @@ export default class BrowserController { let { nodeSetAsRoot } = this.context.getState() if (nodeSetAsRoot) { - const nodeSetAsRootPath = await this.doLoadNodePath({ + const nodeSetAsRootPath = await this._doLoadNodePath({ object: nodeSetAsRoot.object }) if (!_.isEmpty(nodeSetAsRootPath)) { @@ -177,7 +193,7 @@ export default class BrowserController { let nodeSetAsRoot = null if (node) { - const path = await this.doLoadNodePath({ + const path = await this._doLoadNodePath({ object: node.object }) @@ -365,4 +381,11 @@ export default class BrowserController { await onSettingsChange(settings) } } + + _onError(error) { + const { onError } = this.context.getProps() + if (onError) { + onError(error) + } + } } diff --git a/openbis_ng_ui/src/js/components/common/browser/BrowserWithOpenbis.jsx b/openbis_ng_ui/src/js/components/common/browser/BrowserWithOpenbis.jsx index 5153d6c28d3..9f710297dc6 100644 --- a/openbis_ng_ui/src/js/components/common/browser/BrowserWithOpenbis.jsx +++ b/openbis_ng_ui/src/js/components/common/browser/BrowserWithOpenbis.jsx @@ -31,6 +31,7 @@ class BrowserWithOpenbis extends React.PureComponent { {...this.props} loadSettings={this.loadSettings} onSettingsChange={this.onSettingsChange} + onError={this.onError} /> </ResizableWithOpenbis> ) @@ -43,6 +44,10 @@ class BrowserWithOpenbis extends React.PureComponent { async onSettingsChange(settings) { await AppController.getInstance().setSetting(this.props.id, settings) } + + async onError(error) { + await AppController.getInstance().errorChange(error) + } } export default BrowserWithOpenbis -- GitLab