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 d642179fd83d016164038c6d112bc04f833cca22..271cb71682cb9eeb3713702140f284becee4f50f 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 5153d6c28d37583ee4a3663fd862de6b96b7f2a4..9f710297dc6e3b40c3c4beef60e729d27dde89ed 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