From 2926dfc21533c07e7cb8be032668b6b115b904d0 Mon Sep 17 00:00:00 2001 From: Alex Shklianko Date: Tue, 16 Aug 2022 14:37:40 +0200 Subject: [PATCH] =?UTF-8?q?Version=20Widget=20-=20version=20items=20are=20?= =?UTF-8?q?not=20loaded=20after=20opening=20the=20widge=E2=80=A6=20(#4946)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Version Widget - version items are not loaded after opening the widget #4945 -catching errors from promises -added NPE check in ContextView.ts that was spawning error with loading history items (and was not catched without catch clause) * Version Widget - version items are not loaded after opening the widget #4945 --- .../assets/js/app/browse/ContentBrowsePanel.ts | 4 ++-- .../assets/js/app/browse/ResponsiveBrowsePanel.ts | 5 +++-- .../assets/js/app/view/context/ContextView.ts | 12 +++++++----- .../assets/js/app/view/context/DockedContextPanel.ts | 3 +-- .../assets/js/app/view/context/SlidablePanel.ts | 1 + .../assets/js/app/view/context/WidgetView.ts | 11 ++++++----- .../context/widget/version/VersionHistoryView.ts | 5 +++-- 7 files changed, 23 insertions(+), 18 deletions(-) diff --git a/modules/lib/src/main/resources/assets/js/app/browse/ContentBrowsePanel.ts b/modules/lib/src/main/resources/assets/js/app/browse/ContentBrowsePanel.ts index c0c9d80afd..37994ce934 100644 --- a/modules/lib/src/main/resources/assets/js/app/browse/ContentBrowsePanel.ts +++ b/modules/lib/src/main/resources/assets/js/app/browse/ContentBrowsePanel.ts @@ -503,7 +503,7 @@ export class ContentBrowsePanel // } - protected updateContextView(item: ContentSummaryAndCompareStatus) { - this.contextView.setItem(item); + protected updateContextView(item: ContentSummaryAndCompareStatus): Q.Promise { + return this.contextView.setItem(item); } } diff --git a/modules/lib/src/main/resources/assets/js/app/browse/ResponsiveBrowsePanel.ts b/modules/lib/src/main/resources/assets/js/app/browse/ResponsiveBrowsePanel.ts index c1d6893978..40166c83b3 100644 --- a/modules/lib/src/main/resources/assets/js/app/browse/ResponsiveBrowsePanel.ts +++ b/modules/lib/src/main/resources/assets/js/app/browse/ResponsiveBrowsePanel.ts @@ -8,6 +8,7 @@ import {BrowseItemPanel} from '@enonic/lib-admin-ui/app/browse/BrowseItemPanel'; import * as Q from 'q'; import {ViewItem} from '@enonic/lib-admin-ui/app/view/ViewItem'; import {SplitPanelSize} from '@enonic/lib-admin-ui/ui/panel/SplitPanelSize'; +import {DefaultErrorHandler} from '@enonic/lib-admin-ui/DefaultErrorHandler'; export abstract class ResponsiveBrowsePanel extends BrowsePanel { @@ -73,7 +74,7 @@ export abstract class ResponsiveBrowsePanel extends BrowsePanel { super.updatePreviewItem(); const item: ViewItem = this.treeGrid.getLastSelectedOrHighlightedItem(); - this.updateContextView(item); + this.updateContextView(item).catch(DefaultErrorHandler.handle); if (this.treeGrid.hasHighlightedNode()) { if (this.contextSplitPanel.isMobileMode()) { @@ -96,7 +97,7 @@ export abstract class ResponsiveBrowsePanel extends BrowsePanel { } } - protected abstract updateContextView(item: ViewItem); + protected abstract updateContextView(item: ViewItem): Q.Promise; doRender(): Q.Promise { return super.doRender().then((rendered) => { diff --git a/modules/lib/src/main/resources/assets/js/app/view/context/ContextView.ts b/modules/lib/src/main/resources/assets/js/app/view/context/ContextView.ts index 1516527c0a..5f926cd48e 100644 --- a/modules/lib/src/main/resources/assets/js/app/view/context/ContextView.ts +++ b/modules/lib/src/main/resources/assets/js/app/view/context/ContextView.ts @@ -36,6 +36,7 @@ import {ReloadActiveWidgetEvent} from './ReloadActiveWidgetEvent'; import {ContentId} from '../../content/ContentId'; import {WidgetItemView} from './WidgetItemView'; import {VersionContext} from './widget/version/VersionContext'; +import {DefaultErrorHandler} from '@enonic/lib-admin-ui/DefaultErrorHandler'; export class ContextView extends DivEl { @@ -105,7 +106,7 @@ export class ContextView this.onRemoved(() => ApplicationEvent.un(handleApplicationEvents)); VersionContext.onActiveVersionChanged((contentId: string, version: string) => { - if (this.item.getId() === contentId && this.isVisible() && this.activeWidget === this.versionsWidgetView) { + if (this.item?.getId() === contentId && this.isVisible() && this.activeWidget === this.versionsWidgetView) { this.updateActiveWidget(); } }); @@ -155,7 +156,7 @@ export class ContextView ReloadActiveWidgetEvent.on(() => { if (this.activeWidget) { - this.activeWidget.updateWidgetItemViews(); + this.activeWidget.updateWidgetItemViews().catch(DefaultErrorHandler.handle); } }); } @@ -309,7 +310,7 @@ export class ContextView } } - public setItem(item: ContentSummaryAndCompareStatus): Q.Promise { + public setItem(item: ContentSummaryAndCompareStatus): Q.Promise { if (ContextView.debug) { console.debug('ContextView.setItem: ', item); } @@ -336,7 +337,7 @@ export class ContextView return ['contentstudio.contextpanel']; } - updateActiveWidget(): Q.Promise { + updateActiveWidget(): Q.Promise { if (ContextView.debug) { console.debug('ContextView.updateWidgetsForItem'); } @@ -347,7 +348,8 @@ export class ContextView return this.activeWidget.updateWidgetItemViews().then(() => { this.activeWidget.slideIn(); - }); + return Q.resolve(); + }).catch(DefaultErrorHandler.handle); } public showLoadMask() { diff --git a/modules/lib/src/main/resources/assets/js/app/view/context/DockedContextPanel.ts b/modules/lib/src/main/resources/assets/js/app/view/context/DockedContextPanel.ts index b931776e21..73067dbb69 100644 --- a/modules/lib/src/main/resources/assets/js/app/view/context/DockedContextPanel.ts +++ b/modules/lib/src/main/resources/assets/js/app/view/context/DockedContextPanel.ts @@ -1,8 +1,7 @@ import {ContextPanel} from './ContextPanel'; import {ContextView} from './ContextView'; import {DivEl} from '@enonic/lib-admin-ui/dom/DivEl'; -import {ContextPanelState} from './ContextPanelState'; -import {ContextPanelStateEvent} from './ContextPanelStateEvent'; +import {DefaultErrorHandler} from '@enonic/lib-admin-ui/DefaultErrorHandler'; export class DockedContextPanel extends ContextPanel { diff --git a/modules/lib/src/main/resources/assets/js/app/view/context/SlidablePanel.ts b/modules/lib/src/main/resources/assets/js/app/view/context/SlidablePanel.ts index fbcc5f7cfc..568f187331 100644 --- a/modules/lib/src/main/resources/assets/js/app/view/context/SlidablePanel.ts +++ b/modules/lib/src/main/resources/assets/js/app/view/context/SlidablePanel.ts @@ -1,3 +1,4 @@ +import {DefaultErrorHandler} from '@enonic/lib-admin-ui/DefaultErrorHandler'; import {ContextPanel} from './ContextPanel'; import {ContextView} from './ContextView'; diff --git a/modules/lib/src/main/resources/assets/js/app/view/context/WidgetView.ts b/modules/lib/src/main/resources/assets/js/app/view/context/WidgetView.ts index e6f4e486de..51a362c041 100644 --- a/modules/lib/src/main/resources/assets/js/app/view/context/WidgetView.ts +++ b/modules/lib/src/main/resources/assets/js/app/view/context/WidgetView.ts @@ -7,6 +7,7 @@ import {WidgetItemView} from './WidgetItemView'; import {UriHelper} from '../../rendering/UriHelper'; import {ContentSummaryAndCompareStatus} from '../../content/ContentSummaryAndCompareStatus'; import {Widget} from '@enonic/lib-admin-ui/content/Widget'; +import {DefaultErrorHandler} from '@enonic/lib-admin-ui/DefaultErrorHandler'; export enum InternalWidgetType { INFO, @@ -69,7 +70,7 @@ export class WidgetView this.applyConfig(); this.onActivated(() => { - this.updateWidgetItemViews(); + this.updateWidgetItemViews().catch(DefaultErrorHandler.handle); }); } @@ -90,7 +91,7 @@ export class WidgetView let updateWidgetItemViewsHandler = () => { let containerWidth = this.contextView.getEl().getWidth(); if (this.contextView.getItem() && containerWidth !== this.containerWidth) { - this.updateWidgetItemViews(); + this.updateWidgetItemViews().catch(DefaultErrorHandler.handle); } }; this.contextView.onPanelSizeChanged(() => { @@ -110,7 +111,7 @@ export class WidgetView return UriHelper.getAdminUri(this.widget.getUrl(), '/'); } - private updateCustomWidgetItemViews(): Q.Promise[] { + private updateCustomWidgetItemViews(): Q.Promise[] { let promises = []; this.url = this.getWidgetUrl(); @@ -122,7 +123,7 @@ export class WidgetView return promises; } - public updateWidgetItemViews(): Q.Promise { + public updateWidgetItemViews(): Q.Promise { const content = this.contextView.getItem(); let promises = []; @@ -148,7 +149,7 @@ export class WidgetView private createDefaultWidgetItemView() { this.widgetItemViews.push(new WidgetItemView()); if (this.contextView.getItem()) { - this.updateWidgetItemViews(); + this.updateWidgetItemViews().catch(DefaultErrorHandler.handle); } } diff --git a/modules/lib/src/main/resources/assets/js/app/view/context/widget/version/VersionHistoryView.ts b/modules/lib/src/main/resources/assets/js/app/view/context/widget/version/VersionHistoryView.ts index 0fbf09734d..e931511733 100644 --- a/modules/lib/src/main/resources/assets/js/app/view/context/widget/version/VersionHistoryView.ts +++ b/modules/lib/src/main/resources/assets/js/app/view/context/widget/version/VersionHistoryView.ts @@ -13,6 +13,7 @@ import {ContentId} from '../../../../content/ContentId'; import {ContentVersionsConverter} from './ContentVersionsConverter'; import {ContentVersions} from '../../../../ContentVersions'; import {VersionContext} from './VersionContext'; +import {DefaultErrorHandler} from '@enonic/lib-admin-ui/DefaultErrorHandler'; export class VersionHistoryView extends WidgetItemView { @@ -67,7 +68,7 @@ export class VersionHistoryView extends WidgetItemView { return content.getStatusText(); } - public setContentAndUpdateView(content: ContentSummaryAndCompareStatus): Q.Promise { + public setContentAndUpdateView(content: ContentSummaryAndCompareStatus): Q.Promise { if (VersionHistoryView.debug) { console.debug('VersionsWidgetItemView.setItem: ', content); } @@ -101,7 +102,7 @@ export class VersionHistoryView extends WidgetItemView { }); } - private reloadActivePanel(): Q.Promise { + private reloadActivePanel(): Q.Promise { if (VersionHistoryView.debug) { console.debug('VersionsWidgetItemView.reloadActivePanel'); }