blob: 2297bc4cf931a1e28eb74ead76280fa07c13d679 [file] [log] [blame]
Ben Rohlfsec56d3e2022-09-12 12:56:16 +02001/**
2 * @license
3 * Copyright 2022 Google LLC
4 * SPDX-License-Identifier: Apache-2.0
5 */
6import {GerritView} from '../../services/router/router-model';
7import {GroupId} from '../../types/common';
Ben Rohlfsbd8dbcf2022-09-16 09:01:14 +02008import {encodeURL, getBaseUrl} from '../../utils/url-util';
Ben Rohlfs2586e572022-09-16 12:55:37 +02009import {define} from '../dependency';
Dhruv Srivastavab26f09b2023-09-28 10:04:19 +020010import {Model} from '../base/model';
Ben Rohlfsec56d3e2022-09-12 12:56:16 +020011import {ViewState} from './base';
12
13export enum GroupDetailView {
14 MEMBERS = 'members',
15 LOG = 'log',
16}
17
18export interface GroupViewState extends ViewState {
19 view: GerritView.GROUP;
Ben Rohlfs8e7db342023-06-12 18:26:04 +020020 /**
21 * This refers to the (string) `id` of `GroupInfo`, not the `groupId`, which
22 * is a number.
23 */
Ben Rohlfsbd8dbcf2022-09-16 09:01:14 +020024 groupId: GroupId;
Ben Rohlfsec56d3e2022-09-12 12:56:16 +020025 detail?: GroupDetailView;
Ben Rohlfsec56d3e2022-09-12 12:56:16 +020026}
27
Ben Rohlfsbd8dbcf2022-09-16 09:01:14 +020028export function createGroupUrl(state: Omit<GroupViewState, 'view'>) {
Ben Rohlfsc02facb2023-01-27 18:46:02 +010029 let url = `/admin/groups/${encodeURL(`${state.groupId}`)}`;
Ben Rohlfsbd8dbcf2022-09-16 09:01:14 +020030 if (state.detail === GroupDetailView.MEMBERS) {
31 url += ',members';
32 } else if (state.detail === GroupDetailView.LOG) {
33 url += ',audit-log';
34 }
35 return getBaseUrl() + url;
36}
Ben Rohlfsec56d3e2022-09-12 12:56:16 +020037
Ben Rohlfs2586e572022-09-16 12:55:37 +020038export const groupViewModelToken = define<GroupViewModel>('group-view-model');
39
Ben Rohlfsbd8dbcf2022-09-16 09:01:14 +020040export class GroupViewModel extends Model<GroupViewState | undefined> {
Ben Rohlfsec56d3e2022-09-12 12:56:16 +020041 constructor() {
Ben Rohlfsbd8dbcf2022-09-16 09:01:14 +020042 super(undefined);
Ben Rohlfsec56d3e2022-09-12 12:56:16 +020043 }
Ben Rohlfsec56d3e2022-09-12 12:56:16 +020044}