Move `initActiveTab()` from change view into model The change view just reflects the `tab` property of the view state. Release-Notes: skip Change-Id: I0a5c139878caa0b9432401520b6296cb0d9fdfed
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts index ac4d30f..2b594be 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -626,7 +626,7 @@ subscribe( this, () => this.getViewModel().tab$, - t => (this.activeTab = t ?? Tab.FILES) + t => (this.activeTab = t) ); subscribe( this, @@ -826,8 +826,7 @@ new Error('Mismatch of headers and content.') ); } - }) - .then(() => this.initActiveTab()); + }); this.throttledToggleChangeStar = throttleWrap<KeyboardEvent>(_ => this.handleToggleChangeStar() @@ -1631,9 +1630,8 @@ override updated() { const tabs = [...queryAll<HTMLElement>(this.tabs!, 'paper-tab')]; const tabIndex = tabs.findIndex(t => t.dataset['name'] === this.activeTab); - assert(tabIndex !== -1, `tab ${this.activeTab} not found`); - if (this.tabs!.selected !== tabIndex) { + if (tabIndex !== -1 && this.tabs!.selected !== tabIndex) { this.tabs!.selected = tabIndex; } } @@ -2078,22 +2076,6 @@ this.changeNum = this.viewState.changeNum; this.loadData(true); - - this.getPluginLoader() - .awaitPluginsLoaded() - .then(() => { - this.initActiveTab(); - }); - } - - private initActiveTab() { - let tab = Tab.FILES; - if (this.viewState?.tab) { - tab = this.viewState?.tab as Tab; - } else if (this.viewState?.commentId) { - tab = Tab.COMMENT_THREADS; - } - this.setActiveTab(new CustomEvent('show-tab', {detail: {tab}})); } // Private but used in tests.
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts index 31cfa17..f946794 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
@@ -670,19 +670,6 @@ assert.equal(element.activeTab, 'change-view-tab-header-url'); }); - test('param change should switch primary tab correctly', async () => { - assert.equal(element.activeTab, Tab.FILES); - // view is required - element.changeNum = undefined; - element.viewState = { - ...createChangeViewState(), - ...element.viewState, - tab: Tab.COMMENT_THREADS, - }; - await element.updateComplete; - assert.equal(element.activeTab, Tab.COMMENT_THREADS); - }); - test('invalid param change should not switch primary tab', async () => { assert.equal(element.activeTab, Tab.FILES); // view is required
diff --git a/polygerrit-ui/app/models/views/change.ts b/polygerrit-ui/app/models/views/change.ts index 4a14a80..3ac79d0 100644 --- a/polygerrit-ui/app/models/views/change.ts +++ b/polygerrit-ui/app/models/views/change.ts
@@ -290,7 +290,11 @@ public readonly childView$ = select(this.state$, state => state?.childView); - public readonly tab$ = select(this.state$, state => state?.tab); + public readonly tab$ = select(this.state$, state => { + if (state?.commentId) return Tab.COMMENT_THREADS; + if (state?.tab) return state.tab; + return Tab.FILES; + }); public readonly checksPatchset$ = select( this.state$,