diff options
author | Ben Rohlfs <brohlfs@google.com> | 2022-09-29 12:52:01 +0200 |
---|---|---|
committer | Ben Rohlfs <brohlfs@google.com> | 2022-09-30 12:54:05 +0200 |
commit | 7b22a298b4add1f8205da3c1a37a7df7c7dd335a (patch) | |
tree | e8dee921c2622cad95d77ea185fa98653ef6fe2c | |
parent | e87cab04ad28f2dbdaab97b841a5d902cc341e5a (diff) |
Move `attempt` and `filter` into URL parameters
Release-Notes: skip
Google-Bug-Id: b/235185477
Change-Id: I12b90af3c4b373801723764a17dc9a81aad03715
-rw-r--r-- | polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts | 2 | ||||
-rw-r--r-- | polygerrit-ui/app/elements/checks/gr-checks-tab.ts | 15 | ||||
-rw-r--r-- | polygerrit-ui/app/elements/core/gr-router/gr-router.ts | 100 | ||||
-rw-r--r-- | polygerrit-ui/app/models/checks/checks-model.ts | 26 | ||||
-rw-r--r-- | polygerrit-ui/app/models/checks/checks-model_test.ts | 2 | ||||
-rw-r--r-- | polygerrit-ui/app/models/views/change.ts | 22 | ||||
-rw-r--r-- | polygerrit-ui/app/services/app-context-init.ts | 1 | ||||
-rw-r--r-- | polygerrit-ui/app/services/router/router-model.ts | 1 | ||||
-rw-r--r-- | polygerrit-ui/app/test/test-app-context-init.ts | 1 | ||||
-rw-r--r-- | polygerrit-ui/app/types/events.ts | 5 | ||||
-rw-r--r-- | polygerrit-ui/app/utils/page-wrapper-utils.ts | 1 |
11 files changed, 119 insertions, 57 deletions
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 f2977dc3ea..8293daa39e 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 @@ -2252,8 +2252,6 @@ export class GrChangeView extends LitElement { if (tab === Tab.CHECKS) { const state: ChecksTabState = {}; detail.tabState = {checksTab: state}; - if (this.viewState?.filter) state.filter = this.viewState.filter; - if (this.viewState?.attempt) state.attempt = this.viewState.attempt; } this.setActiveTab( diff --git a/polygerrit-ui/app/elements/checks/gr-checks-tab.ts b/polygerrit-ui/app/elements/checks/gr-checks-tab.ts index c72bccb8a8..82893bca42 100644 --- a/polygerrit-ui/app/elements/checks/gr-checks-tab.ts +++ b/polygerrit-ui/app/elements/checks/gr-checks-tab.ts @@ -3,7 +3,7 @@ * Copyright 2020 Google LLC * SPDX-License-Identifier: Apache-2.0 */ -import {LitElement, css, html, PropertyValues} from 'lit'; +import {LitElement, css, html} from 'lit'; import {customElement, property, query, state} from 'lit/decorators.js'; import { CheckResult, @@ -22,7 +22,6 @@ import {Deduping} from '../../api/reporting'; import {Interaction} from '../../constants/reporting'; import {resolve} from '../../models/dependency'; import {GrChecksRuns} from './gr-checks-runs'; -import {LATEST_ATTEMPT} from '../../models/checks/checks-util'; /** * The "Checks" tab on the Gerrit change page. Gets its data from plugins that @@ -147,18 +146,6 @@ export class GrChecksTab extends LitElement { `; } - protected override updated(changedProperties: PropertyValues) { - super.updated(changedProperties); - if (changedProperties.has('tabState')) this.tabStateUpdated(); - } - - private tabStateUpdated() { - if (!this.tabState?.checksTab) return; - const {attempt, filter} = this.tabState.checksTab; - this.getChecksModel().updateStateSetAttempt(attempt ?? LATEST_ATTEMPT); - this.getChecksModel().updateStateSetRunFilter(filter ?? ''); - } - handleRunSelected(e: RunSelectedEvent) { this.reporting.reportInteraction(Interaction.CHECKS_RUN_SELECTED, { checkName: e.detail.checkName, diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts index 762f6b70ce..10c2f58277 100644 --- a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts +++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts @@ -59,7 +59,11 @@ import { GroupViewState, } from '../../../models/views/group'; import {DiffViewModel, DiffViewState} from '../../../models/views/diff'; -import {ChangeViewModel, ChangeViewState} from '../../../models/views/change'; +import { + ChangeViewModel, + ChangeViewState, + createChangeUrl, +} from '../../../models/views/change'; import {EditViewModel, EditViewState} from '../../../models/views/edit'; import { DashboardViewModel, @@ -80,6 +84,7 @@ import { import {PluginViewModel, PluginViewState} from '../../../models/views/plugin'; import {SearchViewModel, SearchViewState} from '../../../models/views/search'; import {DashboardSection} from '../../../utils/dashboard-util'; +import {Subscription} from 'rxjs'; const RoutePattern = { ROOT: '/', @@ -279,6 +284,10 @@ export class GrRouter implements Finalizable, NavigationService { // and for first navigation in app after loaded from server (true). _isInitialLoad = true; + private subscriptions: Subscription[] = []; + + private view?: GerritView; + constructor( private readonly reporting: ReportingService, private readonly routerModel: RouterModel, @@ -295,9 +304,36 @@ export class GrRouter implements Finalizable, NavigationService { private readonly repoViewModel: RepoViewModel, private readonly searchViewModel: SearchViewModel, private readonly settingsViewModel: SettingsViewModel - ) {} + ) { + this.subscriptions = [ + // TODO: Do the same for other view models. + // We want to make sure that the current view model state is always + // reflected back into the URL bar. + this.changeViewModel.state$.subscribe(state => { + if (!state) return; + // Note that router model view must be updated before view model state. + // So this check is slightly fragile, but should work. + if (this.view !== GerritView.CHANGE) return; + const browserUrl = window.location.toString(); + const stateUrl = new URL(createChangeUrl(state), browserUrl).toString(); + if (browserUrl !== stateUrl) { + page.replace( + stateUrl, + null, + /* init: */ false, + /* dispatch: */ false + ); + } + }), + this.routerModel.routerView$.subscribe(view => (this.view = view)), + ]; + } - finalize(): void {} + finalize(): void { + for (const subscription of this.subscriptions) { + subscription.unsubscribe(); + } + } start() { if (!this._app) { @@ -940,6 +976,7 @@ export class GrRouter implements Finalizable, NavigationService { view: GerritView.DASHBOARD, user: ctx.params[0], }; + // Note that router model view must be updated before view models. this.setState(state); this.dashboardViewModel.setState(state); } @@ -976,6 +1013,7 @@ export class GrRouter implements Finalizable, NavigationService { sections, title, }; + // Note that router model view must be updated before view models. this.setState(state); this.dashboardViewModel.setState(state); return Promise.resolve(); @@ -988,6 +1026,7 @@ export class GrRouter implements Finalizable, NavigationService { project, dashboard: decodeURIComponent(ctx.params[1]) as DashboardId, }; + // Note that router model view must be updated before view models. this.setState(state); this.dashboardViewModel.setState(state); this.reporting.setRepoName(project); @@ -1010,6 +1049,7 @@ export class GrRouter implements Finalizable, NavigationService { view: GerritView.GROUP, groupId: ctx.params[0] as GroupId, }; + // Note that router model view must be updated before view models. this.setState(state); this.groupViewModel.setState(state); } @@ -1020,6 +1060,7 @@ export class GrRouter implements Finalizable, NavigationService { detail: GroupDetailView.LOG, groupId: ctx.params[0] as GroupId, }; + // Note that router model view must be updated before view models. this.setState(state); this.groupViewModel.setState(state); } @@ -1030,6 +1071,7 @@ export class GrRouter implements Finalizable, NavigationService { detail: GroupDetailView.MEMBERS, groupId: ctx.params[0] as GroupId, }; + // Note that router model view must be updated before view models. this.setState(state); this.groupViewModel.setState(state); } @@ -1042,6 +1084,7 @@ export class GrRouter implements Finalizable, NavigationService { filter: null, openCreateModal: ctx.hash === 'create', }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1053,6 +1096,7 @@ export class GrRouter implements Finalizable, NavigationService { offset: ctx.params['offset'], filter: ctx.params['filter'], }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1063,6 +1107,7 @@ export class GrRouter implements Finalizable, NavigationService { adminView: AdminChildView.GROUPS, filter: ctx.params['filter'] || null, }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1086,6 +1131,7 @@ export class GrRouter implements Finalizable, NavigationService { detail: RepoDetailView.COMMANDS, repo, }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); this.reporting.setRepoName(repo); @@ -1098,6 +1144,7 @@ export class GrRouter implements Finalizable, NavigationService { detail: RepoDetailView.GENERAL, repo, }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); this.reporting.setRepoName(repo); @@ -1110,6 +1157,7 @@ export class GrRouter implements Finalizable, NavigationService { detail: RepoDetailView.ACCESS, repo, }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); this.reporting.setRepoName(repo); @@ -1122,6 +1170,7 @@ export class GrRouter implements Finalizable, NavigationService { detail: RepoDetailView.DASHBOARDS, repo, }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); this.reporting.setRepoName(repo); @@ -1135,6 +1184,7 @@ export class GrRouter implements Finalizable, NavigationService { offset: ctx.params[2] || 0, filter: null, }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); } @@ -1147,6 +1197,7 @@ export class GrRouter implements Finalizable, NavigationService { offset: ctx.params['offset'], filter: ctx.params['filter'], }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); } @@ -1158,6 +1209,7 @@ export class GrRouter implements Finalizable, NavigationService { repo: ctx.params['repo'] as RepoName, filter: ctx.params['filter'] || null, }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); } @@ -1170,6 +1222,7 @@ export class GrRouter implements Finalizable, NavigationService { offset: ctx.params[2] || 0, filter: null, }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); } @@ -1182,6 +1235,7 @@ export class GrRouter implements Finalizable, NavigationService { offset: ctx.params['offset'], filter: ctx.params['filter'], }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); } @@ -1193,6 +1247,7 @@ export class GrRouter implements Finalizable, NavigationService { repo: ctx.params['repo'] as RepoName, filter: ctx.params['filter'] || null, }; + // Note that router model view must be updated before view models. this.setState(state); this.repoViewModel.setState(state); } @@ -1205,6 +1260,7 @@ export class GrRouter implements Finalizable, NavigationService { filter: null, openCreateModal: ctx.hash === 'create', }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1216,6 +1272,7 @@ export class GrRouter implements Finalizable, NavigationService { offset: ctx.params['offset'], filter: ctx.params['filter'], }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1226,6 +1283,7 @@ export class GrRouter implements Finalizable, NavigationService { adminView: AdminChildView.REPOS, filter: ctx.params['filter'] || null, }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1253,6 +1311,7 @@ export class GrRouter implements Finalizable, NavigationService { offset: ctx.params[1] || 0, filter: null, }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1264,6 +1323,7 @@ export class GrRouter implements Finalizable, NavigationService { offset: ctx.params['offset'], filter: ctx.params['filter'], }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1274,6 +1334,7 @@ export class GrRouter implements Finalizable, NavigationService { adminView: AdminChildView.PLUGINS, filter: ctx.params['filter'] || null, }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1283,6 +1344,7 @@ export class GrRouter implements Finalizable, NavigationService { view: GerritView.ADMIN, adminView: AdminChildView.PLUGINS, }; + // Note that router model view must be updated before view models. this.setState(state); this.adminViewModel.setState(state); } @@ -1293,6 +1355,7 @@ export class GrRouter implements Finalizable, NavigationService { query: ctx.params[0], offset: ctx.params[2], }; + // Note that router model view must be updated before view models. this.setState(state); this.searchViewModel.setState(state); } @@ -1305,6 +1368,7 @@ export class GrRouter implements Finalizable, NavigationService { view: GerritView.SEARCH, query: ctx.params[0], }; + // Note that router model view must be updated before view models. this.setState(state); this.searchViewModel.setState(state); } @@ -1329,23 +1393,8 @@ export class GrRouter implements Finalizable, NavigationService { }; const queryMap = new URLSearchParams(ctx.querystring); - if (queryMap.has('forceReload')) { - state.forceReload = true; - history.replaceState( - null, - '', - location.href.replace(/[?&]forceReload=true/, '') - ); - } - - if (queryMap.has('openReplyDialog')) { - state.openReplyDialog = true; - history.replaceState( - null, - '', - location.href.replace(/[?&]openReplyDialog=true/, '') - ); - } + if (queryMap.has('forceReload')) state.forceReload = true; + if (queryMap.has('openReplyDialog')) state.openReplyDialog = true; const tab = queryMap.get('tab'); if (tab) state.tab = tab; @@ -1358,6 +1407,7 @@ export class GrRouter implements Finalizable, NavigationService { this.reporting.setRepoName(state.project); this.reporting.setChangeId(changeNum); this.normalizePatchRangeParams(state); + // Note that router model view must be updated before view models. this.setState(state); this.changeViewModel.setState(state); } @@ -1374,6 +1424,7 @@ export class GrRouter implements Finalizable, NavigationService { this.reporting.setRepoName(state.project ?? ''); this.reporting.setChangeId(changeNum); this.normalizePatchRangeParams(state); + // Note that router model view must be updated before view models. this.setState(state); this.diffViewModel.setState(state); } @@ -1390,6 +1441,7 @@ export class GrRouter implements Finalizable, NavigationService { this.reporting.setRepoName(state.project); this.reporting.setChangeId(changeNum); this.normalizePatchRangeParams(state); + // Note that router model view must be updated before view models. this.setState(state); this.changeViewModel.setState(state); } @@ -1413,6 +1465,7 @@ export class GrRouter implements Finalizable, NavigationService { this.reporting.setRepoName(state.project ?? ''); this.reporting.setChangeId(changeNum); this.normalizePatchRangeParams(state); + // Note that router model view must be updated before view models. this.setState(state); this.diffViewModel.setState(state); } @@ -1452,6 +1505,7 @@ export class GrRouter implements Finalizable, NavigationService { view: GerritView.EDIT, }; this.normalizePatchRangeParams(state); + // Note that router model view must be updated before view models. this.setState(state); this.editViewModel.setState(state); this.reporting.setRepoName(project); @@ -1480,6 +1534,7 @@ export class GrRouter implements Finalizable, NavigationService { ); } this.normalizePatchRangeParams(state); + // Note that router model view must be updated before view models. this.setState(state); this.changeViewModel.setState(state); this.reporting.setRepoName(project); @@ -1494,6 +1549,7 @@ export class GrRouter implements Finalizable, NavigationService { const state: AgreementViewState = { view: GerritView.AGREEMENTS, }; + // Note that router model view must be updated before view models. this.setState(state); this.agreementViewModel.setState(state); } @@ -1507,12 +1563,14 @@ export class GrRouter implements Finalizable, NavigationService { view: GerritView.SETTINGS, emailToken: token, }; + // Note that router model view must be updated before view models. this.setState(state); this.settingsViewModel.setState(state); } handleSettingsRoute(_: PageContext) { const state: SettingsViewState = {view: GerritView.SETTINGS}; + // Note that router model view must be updated before view models. this.setState(state); this.settingsViewModel.setState(state); } @@ -1558,6 +1616,7 @@ export class GrRouter implements Finalizable, NavigationService { plugin: ctx.params[0], screen: ctx.params[1], }; + // Note that router model view must be updated before view models. this.setState(state); this.pluginViewModel.setState(state); } @@ -1567,6 +1626,7 @@ export class GrRouter implements Finalizable, NavigationService { view: GerritView.DOCUMENTATION_SEARCH, filter: ctx.params['filter'] || null, }; + // Note that router model view must be updated before view models. this.setState(state); this.documentationViewModel.setState(state); } diff --git a/polygerrit-ui/app/models/checks/checks-model.ts b/polygerrit-ui/app/models/checks/checks-model.ts index 8e058aa14f..385aec3bb3 100644 --- a/polygerrit-ui/app/models/checks/checks-model.ts +++ b/polygerrit-ui/app/models/checks/checks-model.ts @@ -62,6 +62,7 @@ import { ChecksUpdate, PluginsModel, } from '../plugins/plugins-model'; +import {ChangeViewModel} from '../views/change'; /** * The checks model maintains the state of checks for two patchsets: the latest @@ -142,15 +143,6 @@ interface ChecksState { * can be picked up from the change model. */ patchsetNumberSelected?: PatchSetNumber; - /** - * This is the attempt number selected by the user. If this is `undefined` - * (default), then for each run the latest attempt is displayed. - */ - attemptNumberSelected: AttemptChoice; - /** - * Current filter set by the user in the runs panel or via URL. - */ - runFilterRegexp: string; /** Checks data for the latest patchset. */ pluginStateLatest: { [name: string]: ChecksProviderState; @@ -216,11 +208,14 @@ export class ChecksModel extends Model<ChecksState> implements Finalizable { ); public checksSelectedAttemptNumber$ = select( - this.state$, - state => state.attemptNumberSelected + this.changeViewModel.attempt$, + attempt => attempt ?? LATEST_ATTEMPT ); - public runFilterRegexp$ = select(this.state$, state => state.runFilterRegexp); + public runFilterRegexp$ = select( + this.changeViewModel.filter$, + filter => filter ?? '' + ); public checksLatest$ = select(this.state$, state => state.pluginStateLatest); @@ -379,14 +374,13 @@ export class ChecksModel extends Model<ChecksState> implements Finalizable { constructor( readonly routerModel: RouterModel, + readonly changeViewModel: ChangeViewModel, readonly changeModel: ChangeModel, readonly reporting: ReportingService, readonly pluginsModel: PluginsModel ) { super({ patchsetNumberSelected: undefined, - attemptNumberSelected: LATEST_ATTEMPT, - runFilterRegexp: '', pluginStateLatest: {}, pluginStateSelected: {}, }); @@ -660,11 +654,11 @@ export class ChecksModel extends Model<ChecksState> implements Finalizable { } updateStateSetAttempt(attemptNumberSelected: AttemptChoice) { - this.updateState({attemptNumberSelected}); + this.changeViewModel.updateState({attempt: attemptNumberSelected}); } updateStateSetRunFilter(runFilterRegexp: string) { - this.updateState({runFilterRegexp}); + this.changeViewModel.updateState({filter: runFilterRegexp}); } setPatchset(num?: PatchSetNumber) { diff --git a/polygerrit-ui/app/models/checks/checks-model_test.ts b/polygerrit-ui/app/models/checks/checks-model_test.ts index 88fbebc736..83ed4640a6 100644 --- a/polygerrit-ui/app/models/checks/checks-model_test.ts +++ b/polygerrit-ui/app/models/checks/checks-model_test.ts @@ -21,6 +21,7 @@ import {ParsedChangeInfo} from '../../types/types'; import {changeModelToken} from '../change/change-model'; import {assert} from '@open-wc/testing'; import {testResolver} from '../../test/common-test-setup'; +import {changeViewModelToken} from '../views/change'; const PLUGIN_NAME = 'test-plugin'; @@ -63,6 +64,7 @@ suite('checks-model tests', () => { setup(() => { model = new ChecksModel( getAppContext().routerModel, + testResolver(changeViewModelToken), testResolver(changeModelToken), getAppContext().reportingService, getAppContext().pluginsModel diff --git a/polygerrit-ui/app/models/views/change.ts b/polygerrit-ui/app/models/views/change.ts index b8451a0d75..4c97f605d9 100644 --- a/polygerrit-ui/app/models/views/change.ts +++ b/polygerrit-ui/app/models/views/change.ts @@ -12,6 +12,7 @@ import { } from '../../api/rest-api'; import {GerritView} from '../../services/router/router-model'; import {UrlEncodedCommentId} from '../../types/common'; +import {select} from '../../utils/observable-util'; import { encodeURL, getBaseUrl, @@ -84,6 +85,12 @@ export function createChangeUrl( } let suffix = `${range}`; const queries = []; + if (state.attempt) { + if (state.attempt !== 'latest') queries.push(`attempt=${state.attempt}`); + } + if (state.filter) { + queries.push(`filter=${state.filter}`); + } if (state.forceReload) { queries.push('forceReload=true'); } @@ -117,7 +124,22 @@ export const changeViewModelToken = define<ChangeViewModel>('change-view-model'); export class ChangeViewModel extends Model<ChangeViewState | undefined> { + public readonly tab$ = select(this.state$, state => state?.tab); + + public readonly attempt$ = select(this.state$, state => state?.attempt); + + public readonly filter$ = select(this.state$, state => state?.filter); + constructor() { super(undefined); + this.state$.subscribe(s => { + if (s?.usp || s?.forceReload || s?.openReplyDialog) { + this.updateState({ + usp: undefined, + forceReload: undefined, + openReplyDialog: undefined, + }); + } + }); } } diff --git a/polygerrit-ui/app/services/app-context-init.ts b/polygerrit-ui/app/services/app-context-init.ts index 9f7a0c09bf..2e1b817201 100644 --- a/polygerrit-ui/app/services/app-context-init.ts +++ b/polygerrit-ui/app/services/app-context-init.ts @@ -186,6 +186,7 @@ export function createAppDependencies( const checksModel = new ChecksModel( appContext.routerModel, + changeViewModel, changeModel, appContext.reportingService, appContext.pluginsModel diff --git a/polygerrit-ui/app/services/router/router-model.ts b/polygerrit-ui/app/services/router/router-model.ts index 0699554292..99b9870e1c 100644 --- a/polygerrit-ui/app/services/router/router-model.ts +++ b/polygerrit-ui/app/services/router/router-model.ts @@ -29,6 +29,7 @@ export enum GerritView { } export interface RouterState { + // Note that this router model view must be updated before view model state. view?: GerritView; changeNum?: NumericChangeId; patchNum?: RevisionPatchSetNum; diff --git a/polygerrit-ui/app/test/test-app-context-init.ts b/polygerrit-ui/app/test/test-app-context-init.ts index e34773eb38..2cdd4a5408 100644 --- a/polygerrit-ui/app/test/test-app-context-init.ts +++ b/polygerrit-ui/app/test/test-app-context-init.ts @@ -207,6 +207,7 @@ export function createTestDependencies( const checksModelCreator = () => new ChecksModel( appContext.routerModel, + resolver(changeViewModelToken), resolver(changeModelToken), appContext.reportingService, appContext.pluginsModel diff --git a/polygerrit-ui/app/types/events.ts b/polygerrit-ui/app/types/events.ts index 23acff4492..597bb6ff96 100644 --- a/polygerrit-ui/app/types/events.ts +++ b/polygerrit-ui/app/types/events.ts @@ -8,7 +8,6 @@ import {ChangeMessage} from '../utils/comment-util'; import {FetchRequest} from './types'; import {LineNumberEventDetail, MovedLinkClickedEventDetail} from '../api/diff'; import {Category, RunStatus} from '../api/checks'; -import {AttemptChoice} from '../models/checks/checks-util'; export enum EventType { BIND_VALUE_CHANGED = 'bind-value-changed', @@ -231,10 +230,6 @@ export enum CommentTabState { export interface ChecksTabState { statusOrCategory?: RunStatus | Category; checkName?: string; - /** regular expression for filtering runs */ - filter?: string; - /** selected attempt for selected runs */ - attempt?: AttemptChoice; } export type SwitchTabEvent = CustomEvent<SwitchTabEventDetail>; diff --git a/polygerrit-ui/app/utils/page-wrapper-utils.ts b/polygerrit-ui/app/utils/page-wrapper-utils.ts index 7096423665..78e78edce2 100644 --- a/polygerrit-ui/app/utils/page-wrapper-utils.ts +++ b/polygerrit-ui/app/utils/page-wrapper-utils.ts @@ -14,6 +14,7 @@ export interface Page { (pageCallback: PageCallback): void; show(url: string): void; redirect(url: string): void; + replace(path: string, state: null, init: boolean, dispatch: boolean): void; base(url: string): void; start(): void; exit(pattern: string | RegExp, ...pageCallback: PageCallback[]): void; |