Create view state files for `settings` and `admin`
This is the first step of creating all view states in the directory
`models/views/`.
Release-Notes: skip
Google-Bug-Id: b/244279450
Change-Id: I48472e41b3ff24e01d6a9e2b19e95dfb429e5186
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-group-list/gr-admin-group-list.ts b/polygerrit-ui/app/elements/admin/gr-admin-group-list/gr-admin-group-list.ts
index 654aae6..02b4d31 100644
--- a/polygerrit-ui/app/elements/admin/gr-admin-group-list/gr-admin-group-list.ts
+++ b/polygerrit-ui/app/elements/admin/gr-admin-group-list/gr-admin-group-list.ts
@@ -8,7 +8,6 @@
import '../../shared/gr-overlay/gr-overlay';
import '../gr-create-group-dialog/gr-create-group-dialog';
import {GerritNav} from '../../core/gr-navigation/gr-navigation';
-import {AppElementAdminParams} from '../../gr-app-types';
import {GrOverlay} from '../../shared/gr-overlay/gr-overlay';
import {GroupId, GroupInfo, GroupName} from '../../../types/common';
import {GrCreateGroupDialog} from '../gr-create-group-dialog/gr-create-group-dialog';
@@ -20,6 +19,7 @@
import {LitElement, PropertyValues, css, html} from 'lit';
import {customElement, query, property, state} from 'lit/decorators.js';
import {assertIsDefined} from '../../../utils/common-util';
+import {AdminViewState} from '../../../models/views/admin';
declare global {
interface HTMLElementTagNameMap {
@@ -36,7 +36,7 @@
@query('#createNewModal') private createNewModal?: GrCreateGroupDialog;
@property({type: Object})
- params?: AppElementAdminParams;
+ params?: AdminViewState;
/**
* Offset of currently visible query results.
@@ -166,7 +166,7 @@
*
* private but used in test
*/
- maybeOpenCreateOverlay(params?: AppElementAdminParams) {
+ maybeOpenCreateOverlay(params?: AdminViewState) {
if (params?.openCreateModal) {
assertIsDefined(this.createOverlay, 'createOverlay');
this.createOverlay.open();
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-group-list/gr-admin-group-list_test.ts b/polygerrit-ui/app/elements/admin/gr-admin-group-list/gr-admin-group-list_test.ts
index fc3b3d7..0555cc2 100644
--- a/polygerrit-ui/app/elements/admin/gr-admin-group-list/gr-admin-group-list_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-admin-group-list/gr-admin-group-list_test.ts
@@ -13,13 +13,13 @@
GroupName,
GroupNameToGroupInfoMap,
} from '../../../types/common';
-import {AppElementAdminParams} from '../../gr-app-types';
import {GerritView} from '../../../services/router/router-model';
import {GrListView} from '../../shared/gr-list-view/gr-list-view';
import {GrDialog} from '../../shared/gr-dialog/gr-dialog';
import {GrOverlay} from '../../shared/gr-overlay/gr-overlay';
import {SHOWN_ITEMS_COUNT} from '../../../constants/constants';
import {fixture, html, assert} from '@open-wc/testing';
+import {AdminChildView, AdminViewState} from '../../../models/views/admin';
function createGroup(name: string, counter: number) {
return {
@@ -56,7 +56,10 @@
let element: GrAdminGroupList;
let groups: GroupNameToGroupInfoMap;
- const value: AppElementAdminParams = {view: GerritView.ADMIN, adminView: ''};
+ const value: AdminViewState = {
+ view: GerritView.ADMIN,
+ adminView: AdminChildView.GROUPS,
+ };
setup(async () => {
element = await fixture(html`<gr-admin-group-list></gr-admin-group-list>`);
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 a6a81cd..4ff5575 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
@@ -26,11 +26,7 @@
NavLink,
SubsectionInterface,
} from '../../../utils/admin-nav-util';
-import {
- AppElementAdminParams,
- AppElementGroupParams,
- AppElementRepoParams,
-} from '../../gr-app-types';
+import {AppElementGroupParams, AppElementRepoParams} from '../../gr-app-types';
import {
AccountDetailInfo,
GroupId,
@@ -48,6 +44,7 @@
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';
const INTERNAL_GROUP_REGEX = /^[\da-f]{40}$/;
@@ -62,7 +59,7 @@
// The type is matched to the _showAdminView function from the gr-app-element
type AdminViewParams =
- | AppElementAdminParams
+ | AdminViewState
| AppElementGroupParams
| AppElementRepoParams;
@@ -250,11 +247,11 @@
}
private renderRepoList() {
- const params = this.params as AppElementAdminParams;
+ const params = this.params as AdminViewState;
if (
!(
params?.view === GerritView.ADMIN &&
- params?.adminView === 'gr-repo-list'
+ params?.adminView === AdminChildView.REPOS
)
)
return;
@@ -267,11 +264,11 @@
}
private renderGroupList() {
- const params = this.params as AppElementAdminParams;
+ const params = this.params as AdminViewState;
if (
!(
params?.view === GerritView.ADMIN &&
- params?.adminView === 'gr-admin-group-list'
+ params?.adminView === AdminChildView.GROUPS
)
)
return;
@@ -285,11 +282,11 @@
}
private renderPluginList() {
- const params = this.params as AppElementAdminParams;
+ const params = this.params as AdminViewState;
if (
!(
params?.view === GerritView.ADMIN &&
- params?.adminView === 'gr-plugin-list'
+ params?.adminView === AdminChildView.PLUGINS
)
)
return;
@@ -598,7 +595,7 @@
}
private computeSelectedClass(
- itemView?: GerritView,
+ itemView?: GerritView | AdminChildView,
detailType?: GroupDetailView | RepoDetailView
) {
const params = this.params;
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 5f2cb26..d9e09ee 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
@@ -22,6 +22,7 @@
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';
function createAdminCapabilities() {
return {
@@ -81,7 +82,7 @@
element.params = {
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
};
await element.updateComplete;
@@ -563,7 +564,7 @@
test('repo list', async () => {
element.params = {
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
openCreateModal: false,
};
await element.updateComplete;
@@ -637,7 +638,7 @@
test('group list', async () => {
element.params = {
view: GerritView.ADMIN,
- adminView: 'gr-admin-group-list',
+ adminView: AdminChildView.GROUPS,
openCreateModal: false,
};
await element.updateComplete;
diff --git a/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.ts b/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.ts
index 0c52811..383b4a7 100644
--- a/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.ts
+++ b/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.ts
@@ -10,11 +10,11 @@
import {ErrorCallback} from '../../../api/rest';
import {encodeURL, getBaseUrl} from '../../../utils/url-util';
import {SHOWN_ITEMS_COUNT} from '../../../constants/constants';
-import {AppElementAdminParams} from '../../gr-app-types';
import {tableStyles} from '../../../styles/gr-table-styles';
import {sharedStyles} from '../../../styles/shared-styles';
import {LitElement, PropertyValues, css, html} from 'lit';
import {customElement, property, state} from 'lit/decorators.js';
+import {AdminViewState} from '../../../models/views/admin';
// Exported for tests
export interface PluginInfoWithName extends PluginInfo {
@@ -29,7 +29,7 @@
* URL params passed from the router.
*/
@property({type: Object})
- params?: AppElementAdminParams;
+ params?: AdminViewState;
/**
* Offset of currently visible query results.
diff --git a/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list_test.ts b/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list_test.ts
index b6b6e9f..f3d2188 100644
--- a/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list_test.ts
@@ -15,11 +15,11 @@
stubRestApi,
} from '../../../test/test-utils';
import {PluginInfo} from '../../../types/common';
-import {AppElementAdminParams} from '../../gr-app-types';
import {GerritView} from '../../../services/router/router-model';
import {PageErrorEvent} from '../../../types/events';
import {SHOWN_ITEMS_COUNT} from '../../../constants/constants';
import {fixture, html, assert} from '@open-wc/testing';
+import {AdminChildView, AdminViewState} from '../../../models/views/admin';
function pluginGenerator(counter: number) {
const plugin: PluginInfo = {
@@ -59,7 +59,10 @@
let element: GrPluginList;
let plugins: {[pluginName: string]: PluginInfo} | undefined;
- const value: AppElementAdminParams = {view: GerritView.ADMIN, adminView: ''};
+ const value: AdminViewState = {
+ view: GerritView.ADMIN,
+ adminView: AdminChildView.PLUGINS,
+ };
setup(async () => {
element = await fixture(html`<gr-plugin-list></gr-plugin-list>`);
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list.ts b/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list.ts
index 0c043ac..254bc3a 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list.ts
+++ b/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list.ts
@@ -8,7 +8,6 @@
import '../../shared/gr-overlay/gr-overlay';
import '../gr-create-repo-dialog/gr-create-repo-dialog';
import {GerritNav} from '../../core/gr-navigation/gr-navigation';
-import {AppElementAdminParams} from '../../gr-app-types';
import {GrOverlay} from '../../shared/gr-overlay/gr-overlay';
import {
RepoName,
@@ -24,6 +23,7 @@
import {sharedStyles} from '../../../styles/shared-styles';
import {LitElement, PropertyValues, css, html} from 'lit';
import {customElement, property, query, state} from 'lit/decorators.js';
+import {AdminViewState} from '../../../models/views/admin';
declare global {
interface HTMLElementTagNameMap {
@@ -40,7 +40,7 @@
@query('#createNewModal') private createNewModal?: GrCreateRepoDialog;
@property({type: Object})
- params?: AppElementAdminParams;
+ params?: AdminViewState;
// private but used in test
@state() offset = 0;
@@ -204,7 +204,7 @@
*
* private but used in test
*/
- maybeOpenCreateOverlay(params?: AppElementAdminParams) {
+ maybeOpenCreateOverlay(params?: AdminViewState) {
if (params?.openCreateModal) {
this.createOverlay?.open();
}
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list_test.ts b/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list_test.ts
index 292c0ad..ea8b238 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list_test.ts
@@ -17,13 +17,13 @@
ProjectInfoWithName,
RepoName,
} from '../../../types/common';
-import {AppElementAdminParams} from '../../gr-app-types';
import {ProjectState, SHOWN_ITEMS_COUNT} from '../../../constants/constants';
import {GerritView} from '../../../services/router/router-model';
import {GrOverlay} from '../../shared/gr-overlay/gr-overlay';
import {GrDialog} from '../../shared/gr-dialog/gr-dialog';
import {GrListView} from '../../shared/gr-list-view/gr-list-view';
import {fixture, html, assert} from '@open-wc/testing';
+import {AdminChildView, AdminViewState} from '../../../models/views/admin';
function createRepo(name: string, counter: number) {
return {
@@ -633,9 +633,9 @@
assert.isFalse(overlayOpen.called);
element.maybeOpenCreateOverlay(undefined);
assert.isFalse(overlayOpen.called);
- const params: AppElementAdminParams = {
+ const params: AdminViewState = {
view: GerritView.ADMIN,
- adminView: '',
+ adminView: AdminChildView.REPOS,
openCreateModal: true,
};
element.maybeOpenCreateOverlay(params);
@@ -669,10 +669,10 @@
repoStub.returns(Promise.resolve(repos));
element.params = {
view: GerritView.ADMIN,
- adminView: '',
+ adminView: AdminChildView.REPOS,
filter: 'test',
offset: 25,
- } as AppElementAdminParams;
+ } as AdminViewState;
await element._paramsChanged();
assert.isTrue(repoStub.lastCall.calledWithExactly('test', 25, 25));
});
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 0e88b06..fe298702 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
@@ -61,6 +61,7 @@
LATEST_ATTEMPT,
stringToAttemptChoice,
} from '../../../models/checks/checks-util';
+import {AdminChildView} from '../../../models/views/admin';
const RoutePattern = {
ROOT: '/',
@@ -1201,7 +1202,7 @@
handleGroupListOffsetRoute(data: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-admin-group-list',
+ adminView: AdminChildView.GROUPS,
offset: data.params[1] || 0,
filter: null,
openCreateModal: data.hash === 'create',
@@ -1211,7 +1212,7 @@
handleGroupListFilterOffsetRoute(data: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-admin-group-list',
+ adminView: AdminChildView.GROUPS,
offset: data.params['offset'],
filter: data.params['filter'],
});
@@ -1220,7 +1221,7 @@
handleGroupListFilterRoute(data: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-admin-group-list',
+ adminView: AdminChildView.GROUPS,
filter: data.params['filter'] || null,
});
}
@@ -1338,7 +1339,7 @@
handleRepoListOffsetRoute(data: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
offset: data.params[1] || 0,
filter: null,
openCreateModal: data.hash === 'create',
@@ -1348,7 +1349,7 @@
handleRepoListFilterOffsetRoute(data: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
offset: data.params['offset'],
filter: data.params['filter'],
});
@@ -1357,7 +1358,7 @@
handleRepoListFilterRoute(data: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
filter: data.params['filter'] || null,
});
}
@@ -1381,7 +1382,7 @@
handlePluginListOffsetRoute(data: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
offset: data.params[1] || 0,
filter: null,
});
@@ -1390,7 +1391,7 @@
handlePluginListFilterOffsetRoute(data: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
offset: data.params['offset'],
filter: data.params['filter'],
});
@@ -1399,7 +1400,7 @@
handlePluginListFilterRoute(data: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
filter: data.params['filter'] || null,
});
}
@@ -1407,7 +1408,7 @@
handlePluginListRoute(_: PageContextWithQueryMap) {
this.setParams({
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
});
}
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 29b8e7a..1528918 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
@@ -43,6 +43,7 @@
RepoDetailView,
} from '../../../utils/router-util';
import {assert} from '@open-wc/testing';
+import {AdminChildView} from '../../../models/views/admin';
suite('gr-router tests', () => {
let router: GrRouter;
@@ -819,7 +820,7 @@
const data = createPageContext();
assertDataToParams(data, 'handleGroupListOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-admin-group-list',
+ adminView: AdminChildView.GROUPS,
offset: 0,
filter: null,
openCreateModal: false,
@@ -828,7 +829,7 @@
data.params[1] = '42';
assertDataToParams(data, 'handleGroupListOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-admin-group-list',
+ adminView: AdminChildView.GROUPS,
offset: '42',
filter: null,
openCreateModal: false,
@@ -837,7 +838,7 @@
data.hash = 'create';
assertDataToParams(data, 'handleGroupListOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-admin-group-list',
+ adminView: AdminChildView.GROUPS,
offset: '42',
filter: null,
openCreateModal: true,
@@ -851,7 +852,7 @@
};
assertDataToParams(data, 'handleGroupListFilterOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-admin-group-list',
+ adminView: AdminChildView.GROUPS,
offset: '42',
filter: 'foo',
});
@@ -861,7 +862,7 @@
const data = {...createPageContext(), params: {filter: 'foo'}};
assertDataToParams(data, 'handleGroupListFilterRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-admin-group-list',
+ adminView: AdminChildView.GROUPS,
filter: 'foo',
});
});
@@ -1042,7 +1043,7 @@
const data = createPageContext();
assertDataToParams(data, 'handleRepoListOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
offset: 0,
filter: null,
openCreateModal: false,
@@ -1051,7 +1052,7 @@
data.params[1] = '42';
assertDataToParams(data, 'handleRepoListOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
offset: '42',
filter: null,
openCreateModal: false,
@@ -1060,7 +1061,7 @@
data.hash = 'create';
assertDataToParams(data, 'handleRepoListOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
offset: '42',
filter: null,
openCreateModal: true,
@@ -1074,7 +1075,7 @@
};
assertDataToParams(data, 'handleRepoListFilterOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
offset: '42',
filter: 'foo',
});
@@ -1084,14 +1085,14 @@
const data = createPageContext();
assertDataToParams(data, 'handleRepoListFilterRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
filter: null,
});
data.params.filter = 'foo';
assertDataToParams(data, 'handleRepoListFilterRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-repo-list',
+ adminView: AdminChildView.REPOS,
filter: 'foo',
});
});
@@ -1103,7 +1104,7 @@
const data = createPageContext();
assertDataToParams(data, 'handlePluginListOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
offset: 0,
filter: null,
});
@@ -1111,7 +1112,7 @@
data.params[1] = '42';
assertDataToParams(data, 'handlePluginListOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
offset: '42',
filter: null,
});
@@ -1124,7 +1125,7 @@
};
assertDataToParams(data, 'handlePluginListFilterOffsetRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
offset: '42',
filter: 'foo',
});
@@ -1134,14 +1135,14 @@
const data = createPageContext();
assertDataToParams(data, 'handlePluginListFilterRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
filter: null,
});
data.params.filter = 'foo';
assertDataToParams(data, 'handlePluginListFilterRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
filter: 'foo',
});
});
@@ -1150,7 +1151,7 @@
const data = createPageContext();
assertDataToParams(data, 'handlePluginListRoute', {
view: GerritView.ADMIN,
- adminView: 'gr-plugin-list',
+ adminView: AdminChildView.PLUGINS,
});
});
});
diff --git a/polygerrit-ui/app/elements/gr-app-types.ts b/polygerrit-ui/app/elements/gr-app-types.ts
index 6abcedf..ea1ae02 100644
--- a/polygerrit-ui/app/elements/gr-app-types.ts
+++ b/polygerrit-ui/app/elements/gr-app-types.ts
@@ -20,6 +20,8 @@
RepoDetailView,
} from '../utils/router-util';
import {AttemptChoice} from '../models/checks/checks-util';
+import {SettingsViewState} from '../models/views/settings';
+import {AdminViewState} from '../models/views/admin';
export interface AppElement extends HTMLElement {
params: AppElementParams | GenerateUrlParameters;
@@ -48,12 +50,6 @@
offset?: number | string;
}
-export interface AppElementAdminParams extends ListViewParams {
- view: GerritView.ADMIN;
- adminView: string;
- openCreateModal?: boolean;
-}
-
export interface AppElementRepoParams extends ListViewParams {
view: GerritView.REPO;
detail?: RepoDetailView;
@@ -77,11 +73,6 @@
offset: string;
}
-export interface AppElementSettingsParam {
- view: GerritView.SETTINGS;
- emailToken?: string;
-}
-
export interface AppElementAgreementParam {
view: GerritView.AGREEMENTS;
}
@@ -138,13 +129,13 @@
export type AppElementParams =
| AppElementDashboardParams
| AppElementGroupParams
- | AppElementAdminParams
+ | AdminViewState
| AppElementChangeViewParams
| AppElementRepoParams
| AppElementDocSearchParams
| AppElementPluginScreenParams
| AppElementSearchParam
- | AppElementSettingsParam
+ | SettingsViewState
| AppElementAgreementParam
| AppElementDiffViewParam
| AppElementDiffEditViewParam
diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
index 10be124..79fb3e5 100644
--- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
+++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
@@ -32,9 +32,9 @@
createServerInfo,
} from '../../../test/test-data-generators';
import {GrSelect} from '../../shared/gr-select/gr-select';
-import {AppElementSettingsParam} from '../../gr-app-types';
import {fixture, html, assert} from '@open-wc/testing';
import {EventType} from '../../../types/events';
+import {SettingsViewState} from '../../../models/views/settings';
suite('gr-settings-view tests', () => {
let element: GrSettingsView;
@@ -757,7 +757,7 @@
const emailEditorLoadDataStub = sinon.stub(element.emailEditor, 'loadData');
element.params = {
view: GerritView.SETTINGS,
- } as AppElementSettingsParam;
+ } as SettingsViewState;
element.firstUpdated();
assert.isTrue(emailEditorLoadDataStub.calledOnce);
});
diff --git a/polygerrit-ui/app/models/views/admin.ts b/polygerrit-ui/app/models/views/admin.ts
new file mode 100644
index 0000000..1a919c5
--- /dev/null
+++ b/polygerrit-ui/app/models/views/admin.ts
@@ -0,0 +1,36 @@
+/**
+ * @license
+ * Copyright 2022 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+import {GerritView} from '../../services/router/router-model';
+import {Model} from '../model';
+import {ViewState} from './base';
+
+export enum AdminChildView {
+ REPOS = 'gr-repo-list',
+ GROUPS = 'gr-admin-group-list',
+ PLUGINS = 'gr-plugin-list',
+}
+export interface AdminViewState extends ViewState {
+ view: GerritView.ADMIN;
+ adminView: AdminChildView;
+ openCreateModal?: boolean;
+ filter?: string | null;
+ offset?: number | string;
+}
+
+const DEFAULT_STATE: AdminViewState = {
+ view: GerritView.ADMIN,
+ adminView: AdminChildView.REPOS,
+};
+
+export class AdminViewModel extends Model<AdminViewState> {
+ constructor() {
+ super(DEFAULT_STATE);
+ }
+
+ updateState(state: AdminViewState) {
+ this.subject$.next({...state});
+ }
+}
diff --git a/polygerrit-ui/app/models/views/base.ts b/polygerrit-ui/app/models/views/base.ts
new file mode 100644
index 0000000..065495d
--- /dev/null
+++ b/polygerrit-ui/app/models/views/base.ts
@@ -0,0 +1,10 @@
+/**
+ * @license
+ * Copyright 2022 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+import {GerritView} from '../../services/router/router-model';
+
+export interface ViewState {
+ view: GerritView;
+}
diff --git a/polygerrit-ui/app/models/views/settings.ts b/polygerrit-ui/app/models/views/settings.ts
new file mode 100644
index 0000000..b53a473
--- /dev/null
+++ b/polygerrit-ui/app/models/views/settings.ts
@@ -0,0 +1,25 @@
+/**
+ * @license
+ * Copyright 2022 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+import {GerritView} from '../../services/router/router-model';
+import {Model} from '../model';
+import {ViewState} from './base';
+
+export interface SettingsViewState extends ViewState {
+ view: GerritView.SETTINGS;
+ emailToken?: string;
+}
+
+const DEFAULT_STATE: SettingsViewState = {view: GerritView.SETTINGS};
+
+export class SettingsViewModel extends Model<SettingsViewState> {
+ constructor() {
+ super(DEFAULT_STATE);
+ }
+
+ updateState(state: SettingsViewState) {
+ this.subject$.next({...state});
+ }
+}
diff --git a/polygerrit-ui/app/utils/admin-nav-util.ts b/polygerrit-ui/app/utils/admin-nav-util.ts
index 62f686d..e559467 100644
--- a/polygerrit-ui/app/utils/admin-nav-util.ts
+++ b/polygerrit-ui/app/utils/admin-nav-util.ts
@@ -14,6 +14,7 @@
import {GerritView} from '../services/router/router-model';
import {MenuLink} from '../api/admin';
import {GroupDetailView, RepoDetailView} from './router-util';
+import {AdminChildView} from '../models/views/admin';
const ADMIN_LINKS: NavLink[] = [
{
@@ -238,7 +239,7 @@
name: string;
noBaseUrl: boolean;
url: string;
- view?: GerritView;
+ view?: GerritView | AdminChildView;
viewableToAll?: boolean;
section?: string;
capability?: string;