Ben Rohlfs | ec56d3e | 2022-09-12 12:56:16 +0200 | [diff] [blame] | 1 | /** |
| 2 | * @license |
| 3 | * Copyright 2022 Google LLC |
| 4 | * SPDX-License-Identifier: Apache-2.0 |
| 5 | */ |
| 6 | import {GerritView} from '../../services/router/router-model'; |
| 7 | import {GroupId} from '../../types/common'; |
Ben Rohlfs | bd8dbcf | 2022-09-16 09:01:14 +0200 | [diff] [blame] | 8 | import {encodeURL, getBaseUrl} from '../../utils/url-util'; |
Ben Rohlfs | 2586e57 | 2022-09-16 12:55:37 +0200 | [diff] [blame] | 9 | import {define} from '../dependency'; |
Dhruv Srivastava | b26f09b | 2023-09-28 10:04:19 +0200 | [diff] [blame] | 10 | import {Model} from '../base/model'; |
Ben Rohlfs | ec56d3e | 2022-09-12 12:56:16 +0200 | [diff] [blame] | 11 | import {ViewState} from './base'; |
| 12 | |
| 13 | export enum GroupDetailView { |
| 14 | MEMBERS = 'members', |
| 15 | LOG = 'log', |
| 16 | } |
| 17 | |
| 18 | export interface GroupViewState extends ViewState { |
| 19 | view: GerritView.GROUP; |
Ben Rohlfs | 8e7db34 | 2023-06-12 18:26:04 +0200 | [diff] [blame] | 20 | /** |
| 21 | * This refers to the (string) `id` of `GroupInfo`, not the `groupId`, which |
| 22 | * is a number. |
| 23 | */ |
Ben Rohlfs | bd8dbcf | 2022-09-16 09:01:14 +0200 | [diff] [blame] | 24 | groupId: GroupId; |
Ben Rohlfs | ec56d3e | 2022-09-12 12:56:16 +0200 | [diff] [blame] | 25 | detail?: GroupDetailView; |
Ben Rohlfs | ec56d3e | 2022-09-12 12:56:16 +0200 | [diff] [blame] | 26 | } |
| 27 | |
Ben Rohlfs | bd8dbcf | 2022-09-16 09:01:14 +0200 | [diff] [blame] | 28 | export function createGroupUrl(state: Omit<GroupViewState, 'view'>) { |
Ben Rohlfs | c02facb | 2023-01-27 18:46:02 +0100 | [diff] [blame] | 29 | let url = `/admin/groups/${encodeURL(`${state.groupId}`)}`; |
Ben Rohlfs | bd8dbcf | 2022-09-16 09:01:14 +0200 | [diff] [blame] | 30 | 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 Rohlfs | ec56d3e | 2022-09-12 12:56:16 +0200 | [diff] [blame] | 37 | |
Ben Rohlfs | 2586e57 | 2022-09-16 12:55:37 +0200 | [diff] [blame] | 38 | export const groupViewModelToken = define<GroupViewModel>('group-view-model'); |
| 39 | |
Ben Rohlfs | bd8dbcf | 2022-09-16 09:01:14 +0200 | [diff] [blame] | 40 | export class GroupViewModel extends Model<GroupViewState | undefined> { |
Ben Rohlfs | ec56d3e | 2022-09-12 12:56:16 +0200 | [diff] [blame] | 41 | constructor() { |
Ben Rohlfs | bd8dbcf | 2022-09-16 09:01:14 +0200 | [diff] [blame] | 42 | super(undefined); |
Ben Rohlfs | ec56d3e | 2022-09-12 12:56:16 +0200 | [diff] [blame] | 43 | } |
Ben Rohlfs | ec56d3e | 2022-09-12 12:56:16 +0200 | [diff] [blame] | 44 | } |