Merge changes I8d96942a,Id8659d93,Icfa8b8b0 * changes: Replace `GenerateUrlSettingsViewParameters` by `SettingsViewState` Remove GerritView.ROOT Use view state objects in `GenerateUrlParameters`
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts index e2b81ba..a20a389 100644 --- a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts +++ b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view.ts
@@ -42,10 +42,9 @@ import {customElement, property, state} from 'lit/decorators.js'; import {ifDefined} from 'lit/directives/if-defined.js'; import {ValueChangedEvent} from '../../../types/events'; -import {GroupDetailView, RepoDetailView} from '../../../utils/router-util'; import {AdminChildView, AdminViewState} from '../../../models/views/admin'; -import {GroupViewState} from '../../../models/views/group'; -import {RepoViewState} from '../../../models/views/repo'; +import {GroupDetailView, GroupViewState} from '../../../models/views/group'; +import {RepoDetailView, RepoViewState} from '../../../models/views/repo'; const INTERNAL_GROUP_REGEX = /^[\da-f]{40}$/;
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts index 3ee7e0a..2bace2c 100644 --- a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts +++ b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.ts
@@ -20,9 +20,10 @@ import {GroupId, GroupName, RepoName, Timestamp} from '../../../types/common'; import {GrDropdownList} from '../../shared/gr-dropdown-list/gr-dropdown-list'; import {GrGroup} from '../gr-group/gr-group'; -import {GroupDetailView, RepoDetailView} from '../../../utils/router-util'; import {fixture, html, assert} from '@open-wc/testing'; import {AdminChildView} from '../../../models/views/admin'; +import {GroupDetailView} from '../../../models/views/group'; +import {RepoDetailView} from '../../../models/views/repo'; function createAdminCapabilities() { return {
diff --git a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts index ee8be03..889a859 100644 --- a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts +++ b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog.ts
@@ -16,7 +16,7 @@ import {customElement, property, state} from 'lit/decorators.js'; import {BindValueChangeEvent} from '../../../types/events'; import {fireEvent} from '../../../utils/event-util'; -import {RepoDetailView} from '../../../utils/router-util'; +import {RepoDetailView} from '../../../models/views/repo'; declare global { interface HTMLElementTagNameMap {
diff --git a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts index 6188b5f..9e455d1 100644 --- a/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts +++ b/polygerrit-ui/app/elements/admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.ts
@@ -13,8 +13,8 @@ } from '../../../test/test-utils'; import {BranchName} from '../../../types/common'; import {IronInputElement} from '@polymer/iron-input'; -import {RepoDetailView} from '../../../utils/router-util'; import {fixture, html, assert} from '@open-wc/testing'; +import {RepoDetailView} from '../../../models/views/repo'; suite('gr-create-pointer-dialog tests', () => { let element: GrCreatePointerDialog;
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts index cec6fde..86d4bc5 100644 --- a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts +++ b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list.ts
@@ -36,8 +36,7 @@ import {BindValueChangeEvent} from '../../../types/events'; import {assertIsDefined} from '../../../utils/common-util'; import {ifDefined} from 'lit/directives/if-defined.js'; -import {RepoDetailView} from '../../../utils/router-util'; -import {RepoViewState} from '../../../models/views/repo'; +import {RepoDetailView, RepoViewState} from '../../../models/views/repo'; const PGP_START = '-----BEGIN PGP SIGNATURE-----'; @@ -407,7 +406,7 @@ repo: RepoName | undefined, itemsPerPage: number, offset: number | undefined, - detailType: string + detailType?: string ) { if (filter === undefined || !repo || offset === undefined) { return Promise.reject(new Error('filter or repo or offset undefined')); @@ -514,7 +513,7 @@ this.repo, this.itemsPerPage, this.offset, - this.detailType! + this.detailType ); } }); @@ -547,7 +546,7 @@ this.repo, this.itemsPerPage, this.offset, - this.detailType! + this.detailType ); } }); @@ -561,7 +560,7 @@ this.repo, this.itemsPerPage, this.offset, - this.detailType! + this.detailType ); } });
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts index bbdf99c..13f6b2b 100644 --- a/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts +++ b/polygerrit-ui/app/elements/admin/gr-repo-detail-list/gr-repo-detail-list_test.ts
@@ -34,8 +34,8 @@ import {GrDialog} from '../../shared/gr-dialog/gr-dialog'; import {GrListView} from '../../shared/gr-list-view/gr-list-view'; import {SHOWN_ITEMS_COUNT} from '../../../constants/constants'; -import {RepoDetailView} from '../../../utils/router-util'; import {fixture, html, assert} from '@open-wc/testing'; +import {RepoDetailView} from '../../../models/views/repo'; function branchGenerator(counter: number) { return {
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts index a4348a9..93d5d1f 100644 --- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts +++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
@@ -104,6 +104,7 @@ import {customElement, property, query, state} from 'lit/decorators.js'; import {ifDefined} from 'lit/directives/if-defined.js'; import {assertIsDefined, queryAll} from '../../../utils/common-util'; +import {rootUrl} from '../../../utils/router-util'; const ERR_BRANCH_EMPTY = 'The destination branch can’t be empty.'; const ERR_COMMIT_EMPTY = 'The commit message can’t be empty.'; @@ -1844,7 +1845,7 @@ } case ChangeActions.DELETE: if (action.__type === ActionType.CHANGE) { - GerritNav.navigateToRelativeUrl(GerritNav.getUrlForRoot()); + GerritNav.navigateToRelativeUrl(rootUrl()); } break; case ChangeActions.WIP:
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 dbd8011..5d82daf 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
@@ -182,6 +182,7 @@ import {CopyLink, GrCopyLinks} from '../gr-copy-links/gr-copy-links'; import {KnownExperimentId} from '../../../services/flags/flags'; import {ChangeViewState} from '../../../models/views/change'; +import {rootUrl} from '../../../utils/router-util'; const MIN_LINES_FOR_COMMIT_COLLAPSE = 18; @@ -2592,7 +2593,7 @@ private determinePageBack() { // Default backPage to root if user came to change view page // via an email link, etc. - GerritNav.navigateToRelativeUrl(this.backPage || GerritNav.getUrlForRoot()); + GerritNav.navigateToRelativeUrl(this.backPage || rootUrl()); } private handleLabelRemoved(
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 a4b185a..cb9f5dc 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
@@ -99,6 +99,7 @@ import {GrButton} from '../../shared/gr-button/gr-button'; import {GrCopyLinks} from '../gr-copy-links/gr-copy-links'; import {ChangeViewState} from '../../../models/views/change'; +import {rootUrl} from '../../../utils/router-util'; suite('gr-change-view tests', () => { let element: GrChangeView; @@ -811,9 +812,7 @@ const relativeNavStub = sinon.stub(GerritNav, 'navigateToRelativeUrl'); pressKey(element, 'u'); assert.isTrue(relativeNavStub.called); - assert.isTrue( - relativeNavStub.lastCall.calledWithExactly(GerritNav.getUrlForRoot()) - ); + assert.isTrue(relativeNavStub.lastCall.calledWithExactly(rootUrl())); }); test('U should navigate to backPage if set', () => {
diff --git a/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts index 46cb2f0..2b74e97 100644 --- a/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts +++ b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts
@@ -28,9 +28,9 @@ import { DashboardSection, GenerateUrlParameters, - GroupDetailView, - RepoDetailView, } from '../../../utils/router-util'; +import {RepoDetailView} from '../../../models/views/repo'; +import {GroupDetailView} from '../../../models/views/group'; // Navigation parameters object format: // @@ -604,12 +604,6 @@ }); }, - getUrlForRoot() { - return this._getUrlFor({ - view: GerritView.ROOT, - }); - }, - /** * @param repo The name of the repo. * @param dashboard The ID of the dashboard, in the form of '<ref>:<path>'. @@ -617,7 +611,7 @@ getUrlForRepoDashboard(repo: RepoName, dashboard: DashboardId) { return this._getUrlFor({ view: GerritView.DASHBOARD, - repo, + project: repo, dashboard, }); }, @@ -632,11 +626,11 @@ this._navigate(relativeUrl); }, - getUrlForRepo(repoName: RepoName) { + getUrlForRepo(repo: RepoName) { return this._getUrlFor({ view: GerritView.REPO, detail: RepoDetailView.GENERAL, - repoName, + repo, }); }, @@ -647,42 +641,42 @@ this._navigate(this.getUrlForRepo(repoName)); }, - getUrlForRepoTags(repoName: RepoName) { + getUrlForRepoTags(repo: RepoName) { return this._getUrlFor({ view: GerritView.REPO, - repoName, + repo, detail: RepoDetailView.TAGS, }); }, - getUrlForRepoBranches(repoName: RepoName) { + getUrlForRepoBranches(repo: RepoName) { return this._getUrlFor({ view: GerritView.REPO, - repoName, + repo, detail: RepoDetailView.BRANCHES, }); }, - getUrlForRepoAccess(repoName: RepoName) { + getUrlForRepoAccess(repo: RepoName) { return this._getUrlFor({ view: GerritView.REPO, - repoName, + repo, detail: RepoDetailView.ACCESS, }); }, - getUrlForRepoCommands(repoName: RepoName) { + getUrlForRepoCommands(repo: RepoName) { return this._getUrlFor({ view: GerritView.REPO, - repoName, + repo, detail: RepoDetailView.COMMANDS, }); }, - getUrlForRepoDashboards(repoName: RepoName) { + getUrlForRepoDashboards(repo: RepoName) { return this._getUrlFor({ view: GerritView.REPO, - repoName, + repo, detail: RepoDetailView.DASHBOARDS, }); },
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 804a2fd..9719c99 100644 --- a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts +++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
@@ -50,8 +50,6 @@ GenerateUrlChangeViewParameters, GenerateUrlDiffViewParameters, GenerateUrlParameters, - GroupDetailView, - RepoDetailView, } from '../../../utils/router-util'; import { LATEST_ATTEMPT, @@ -59,6 +57,8 @@ } from '../../../models/checks/checks-util'; import {AdminChildView} from '../../../models/views/admin'; import {AgreementViewState} from '../../../models/views/agreement'; +import {RepoDetailView} from '../../../models/views/repo'; +import {GroupDetailView} from '../../../models/views/group'; const RoutePattern = { ROOT: '/',
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts index af67b2a..5f8c278 100644 --- a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts +++ b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
@@ -38,13 +38,13 @@ import {AppElementParams} from '../../gr-app-types'; import { GenerateUrlParameters, - GroupDetailView, GenerateUrlEditViewParameters, GenerateUrlChangeViewParameters, - RepoDetailView, } from '../../../utils/router-util'; import {assert} from '@open-wc/testing'; import {AdminChildView} from '../../../models/views/admin'; +import {RepoDetailView} from '../../../models/views/repo'; +import {GroupDetailView} from '../../../models/views/group'; suite('gr-router tests', () => { let router: GrRouter;
diff --git a/polygerrit-ui/app/services/router/router-model.ts b/polygerrit-ui/app/services/router/router-model.ts index fbf1fa7..8b3b0b8 100644 --- a/polygerrit-ui/app/services/router/router-model.ts +++ b/polygerrit-ui/app/services/router/router-model.ts
@@ -24,7 +24,6 @@ GROUP = 'group', PLUGIN_SCREEN = 'plugin-screen', REPO = 'repo', - ROOT = 'root', SEARCH = 'search', SETTINGS = 'settings', }
diff --git a/polygerrit-ui/app/utils/admin-nav-util.ts b/polygerrit-ui/app/utils/admin-nav-util.ts index e559467..d2bad06 100644 --- a/polygerrit-ui/app/utils/admin-nav-util.ts +++ b/polygerrit-ui/app/utils/admin-nav-util.ts
@@ -13,8 +13,9 @@ import {hasOwnProperty} from './common-util'; import {GerritView} from '../services/router/router-model'; import {MenuLink} from '../api/admin'; -import {GroupDetailView, RepoDetailView} from './router-util'; import {AdminChildView} from '../models/views/admin'; +import {GroupDetailView} from '../models/views/group'; +import {RepoDetailView} from '../models/views/repo'; const ADMIN_LINKS: NavLink[] = [ {
diff --git a/polygerrit-ui/app/utils/router-util.ts b/polygerrit-ui/app/utils/router-util.ts index 97e9ae0..4c1003f 100644 --- a/polygerrit-ui/app/utils/router-util.ts +++ b/polygerrit-ui/app/utils/router-util.ts
@@ -7,8 +7,6 @@ BasePatchSetNum, BranchName, ChangeInfo, - DashboardId, - GroupId, NumericChangeId, PARENT, RepoName, @@ -22,6 +20,10 @@ import {GerritView} from '../services/router/router-model'; import {addQuotesWhen} from './string-util'; import {AttemptChoice} from '../models/checks/checks-util'; +import {GroupDetailView, GroupViewState} from '../models/views/group'; +import {DashboardViewState} from '../models/views/dashboard'; +import {RepoDetailView, RepoViewState} from '../models/views/repo'; +import {SettingsViewState} from '../models/views/settings'; export interface DashboardSection { name: string; @@ -32,20 +34,6 @@ results?: ChangeInfo[]; } -export enum GroupDetailView { - MEMBERS = 'members', - LOG = 'log', -} - -export enum RepoDetailView { - GENERAL = 'general', - ACCESS = 'access', - BRANCHES = 'branches', - COMMANDS = 'commands', - DASHBOARDS = 'dashboards', - TAGS = 'tags', -} - export interface GenerateUrlSearchViewParameters { view: GerritView.SEARCH; query?: string; @@ -79,30 +67,6 @@ usp?: string; } -export interface GenerateUrlRepoViewParameters { - view: GerritView.REPO; - repoName: RepoName; - detail?: RepoDetailView; -} - -export interface GenerateUrlDashboardViewParameters { - view: GerritView.DASHBOARD; - user?: string; - repo?: RepoName; - dashboard?: DashboardId; - - // TODO(TS): properties bellow aren't set anywhere, try to remove - project?: RepoName; - sections?: DashboardSection[]; - title?: string; -} - -export interface GenerateUrlGroupViewParameters { - view: GerritView.GROUP; - groupId: GroupId; - detail?: GroupDetailView; -} - export interface GenerateUrlEditViewParameters { view: GerritView.EDIT; changeNum: NumericChangeId; @@ -112,14 +76,6 @@ lineNum?: number | string; } -export interface GenerateUrlRootViewParameters { - view: GerritView.ROOT; -} - -export interface GenerateUrlSettingsViewParameters { - view: GerritView.SETTINGS; -} - export interface GenerateUrlDiffViewParameters { view: GerritView.DIFF; changeNum: NumericChangeId; @@ -137,12 +93,11 @@ export type GenerateUrlParameters = | GenerateUrlSearchViewParameters | GenerateUrlChangeViewParameters - | GenerateUrlRepoViewParameters - | GenerateUrlDashboardViewParameters - | GenerateUrlGroupViewParameters + | RepoViewState + | DashboardViewState + | GroupViewState | GenerateUrlEditViewParameters - | GenerateUrlRootViewParameters - | GenerateUrlSettingsViewParameters + | SettingsViewState | GenerateUrlDiffViewParameters; export function isGenerateUrlChangeViewParameters( @@ -167,6 +122,10 @@ getPatchRangeExpression, }; +export function rootUrl() { + return `${getBaseUrl()}/`; +} + export function generateUrl(params: GenerateUrlParameters) { const base = getBaseUrl(); let url = ''; @@ -186,8 +145,6 @@ url = generateGroupUrl(params); } else if (params.view === GerritView.REPO) { url = generateRepoUrl(params); - } else if (params.view === GerritView.ROOT) { - url = '/'; } else if (params.view === GerritView.SETTINGS) { url = generateSettingsUrl(); } else { @@ -265,8 +222,8 @@ }); } -function generateDashboardUrl(params: GenerateUrlDashboardViewParameters) { - const repoName = params.repo || params.project || undefined; +function generateDashboardUrl(params: DashboardViewState) { + const repoName = params.project || undefined; if (params.sections) { // Custom dashboard. const queryParams = sectionsToEncodedParams(params.sections, repoName); @@ -374,7 +331,7 @@ } } -function generateGroupUrl(params: GenerateUrlGroupViewParameters) { +function generateGroupUrl(params: GroupViewState) { let url = `/admin/groups/${encodeURL(`${params.groupId}`, true)}`; if (params.detail === GroupDetailView.MEMBERS) { url += ',members'; @@ -384,8 +341,8 @@ return url; } -function generateRepoUrl(params: GenerateUrlRepoViewParameters) { - let url = `/admin/repos/${encodeURL(`${params.repoName}`, true)}`; +function generateRepoUrl(params: RepoViewState) { + let url = `/admin/repos/${encodeURL(`${params.repo}`, true)}`; if (params.detail === RepoDetailView.GENERAL) { url += ',general'; } else if (params.detail === RepoDetailView.ACCESS) {
diff --git a/polygerrit-ui/app/utils/router-util_test.ts b/polygerrit-ui/app/utils/router-util_test.ts index 60ac87b..161725c 100644 --- a/polygerrit-ui/app/utils/router-util_test.ts +++ b/polygerrit-ui/app/utils/router-util_test.ts
@@ -15,18 +15,17 @@ GroupId, } from '../api/rest-api'; import {PatchRangeParams} from '../elements/core/gr-router/gr-router'; +import {DashboardViewState} from '../models/views/dashboard'; +import {GroupDetailView, GroupViewState} from '../models/views/group'; import {GerritView} from '../services/router/router-model'; import '../test/common-test-setup'; import {DashboardId} from '../types/common'; import { generateUrl, GenerateUrlChangeViewParameters, - GenerateUrlDashboardViewParameters, GenerateUrlDiffViewParameters, GenerateUrlEditViewParameters, - GenerateUrlGroupViewParameters, GenerateUrlSearchViewParameters, - GroupDetailView, TEST_ONLY, } from './router-util'; @@ -193,14 +192,14 @@ suite('dashboard', () => { test('self dashboard', () => { - const params: GenerateUrlDashboardViewParameters = { + const params: DashboardViewState = { view: GerritView.DASHBOARD, }; assert.equal(generateUrl(params), '/dashboard/self'); }); test('user dashboard', () => { - const params: GenerateUrlDashboardViewParameters = { + const params: DashboardViewState = { view: GerritView.DASHBOARD, user: 'user', }; @@ -208,7 +207,7 @@ }); test('custom self dashboard, no title', () => { - const params: GenerateUrlDashboardViewParameters = { + const params: DashboardViewState = { view: GerritView.DASHBOARD, sections: [ {name: 'section 1', query: 'query 1'}, @@ -222,13 +221,13 @@ }); test('custom repo dashboard', () => { - const params: GenerateUrlDashboardViewParameters = { + const params: DashboardViewState = { view: GerritView.DASHBOARD, sections: [ {name: 'section 1', query: 'query 1 ${project}'}, {name: 'section 2', query: 'query 2 ${repo}'}, ], - repo: 'repo-name' as RepoName, + project: 'repo-name' as RepoName, }; assert.equal( generateUrl(params), @@ -238,7 +237,7 @@ }); test('custom user dashboard, with title', () => { - const params: GenerateUrlDashboardViewParameters = { + const params: DashboardViewState = { view: GerritView.DASHBOARD, user: 'user', sections: [{name: 'name', query: 'query'}], @@ -251,9 +250,9 @@ }); test('repo dashboard', () => { - const params: GenerateUrlDashboardViewParameters = { + const params: DashboardViewState = { view: GerritView.DASHBOARD, - repo: 'gerrit/repo' as RepoName, + project: 'gerrit/repo' as RepoName, dashboard: 'default:main' as DashboardId, }; assert.equal( @@ -263,7 +262,7 @@ }); test('project dashboard (legacy)', () => { - const params: GenerateUrlDashboardViewParameters = { + const params: DashboardViewState = { view: GerritView.DASHBOARD, project: 'gerrit/project' as RepoName, dashboard: 'default:main' as DashboardId, @@ -277,7 +276,7 @@ suite('groups', () => { test('group info', () => { - const params: GenerateUrlGroupViewParameters = { + const params: GroupViewState = { view: GerritView.GROUP, groupId: '1234' as GroupId, }; @@ -285,7 +284,7 @@ }); test('group members', () => { - const params: GenerateUrlGroupViewParameters = { + const params: GroupViewState = { view: GerritView.GROUP, groupId: '1234' as GroupId, detail: 'members' as GroupDetailView, @@ -294,7 +293,7 @@ }); test('group audit log', () => { - const params: GenerateUrlGroupViewParameters = { + const params: GroupViewState = { view: GerritView.GROUP, groupId: '1234' as GroupId, detail: 'log' as GroupDetailView,