Use view state objects in `GenerateUrlParameters`
Start with repo, group and dashboard.
Release-Notes: skip
Google-Bug-Id: b/244279450
Change-Id: Icfa8b8b0336d89a7494d86b72593951f97e91e02
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/core/gr-navigation/gr-navigation.ts b/polygerrit-ui/app/elements/core/gr-navigation/gr-navigation.ts
index 46cb2f0..9d01e00 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:
//
@@ -617,7 +617,7 @@
getUrlForRepoDashboard(repo: RepoName, dashboard: DashboardId) {
return this._getUrlFor({
view: GerritView.DASHBOARD,
- repo,
+ project: repo,
dashboard,
});
},
@@ -632,11 +632,11 @@
this._navigate(relativeUrl);
},
- getUrlForRepo(repoName: RepoName) {
+ getUrlForRepo(repo: RepoName) {
return this._getUrlFor({
view: GerritView.REPO,
detail: RepoDetailView.GENERAL,
- repoName,
+ repo,
});
},
@@ -647,42 +647,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/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..240f7e3 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,9 @@
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';
export interface DashboardSection {
name: string;
@@ -32,20 +33,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 +66,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;
@@ -137,9 +100,9 @@
export type GenerateUrlParameters =
| GenerateUrlSearchViewParameters
| GenerateUrlChangeViewParameters
- | GenerateUrlRepoViewParameters
- | GenerateUrlDashboardViewParameters
- | GenerateUrlGroupViewParameters
+ | RepoViewState
+ | DashboardViewState
+ | GroupViewState
| GenerateUrlEditViewParameters
| GenerateUrlRootViewParameters
| GenerateUrlSettingsViewParameters
@@ -265,8 +228,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 +337,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 +347,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,