Skip to content

Commit e52639e

Browse files
feat(UserSettings): display app version (#889)
1 parent f879369 commit e52639e

File tree

4 files changed

+60
-6
lines changed

4 files changed

+60
-6
lines changed

src/containers/UserSettings/Setting.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,18 @@ export const Setting = ({
9191
</Settings.Item>
9292
);
9393
};
94+
95+
export interface SettingsInfoFieldProps {
96+
type: 'info';
97+
title: string;
98+
description?: React.ReactNode;
99+
content: React.ReactNode;
100+
}
101+
102+
export const SettingsInfoField = ({title, description, content}: SettingsInfoFieldProps) => {
103+
return (
104+
<Settings.Item title={title} highlightedTitle={title} description={description}>
105+
{content}
106+
</Settings.Item>
107+
);
108+
};

src/containers/UserSettings/UserSettings.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {Settings} from '@gravity-ui/navigation';
22

33
import {cn} from '../../utils/cn';
44

5-
import {Setting} from './Setting';
5+
import {Setting, SettingsInfoField} from './Setting';
66
import type {YDBEmbeddedUISettings} from './settings';
77
import {settings} from './settings';
88

@@ -28,6 +28,14 @@ export const UserSettings = ({settings: userSettings = settings}: UserSettingsPr
2828
return (
2929
<Settings.Section key={id} title={sectionTitle}>
3030
{sectionSettings.map((setting) => {
31+
if (setting.type === 'info') {
32+
return (
33+
<SettingsInfoField
34+
key={setting.title}
35+
{...setting}
36+
/>
37+
);
38+
}
3139
return <Setting key={setting.settingKey} {...setting} />;
3240
})}
3341
</Settings.Section>

src/containers/UserSettings/i18n/en.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
"page.editor": "Editor",
99
"section.dev-setting": "Development settings",
1010

11+
"page.about": "About",
12+
"section.about": "About",
13+
1114
"settings.editor.autocomplete.title": "Enable autocomplete",
1215
"settings.editor.autocomplete.description": "You’re always able to get suggestions by pressing Ctrl+Space.",
1316

@@ -35,5 +38,7 @@
3538
"settings.useVirtualTables.popover": "It will increase performance, but could work unstable",
3639

3740
"settings.queryUseMultiSchema.title": "Allow queries with multiple result sets",
38-
"settings.queryUseMultiSchema.popover": "Use 'multi' schema for queries that enables queries with multiple result sets. Returns nothing on versions 23-3 and older"
41+
"settings.queryUseMultiSchema.popover": "Use 'multi' schema for queries that enables queries with multiple result sets. Returns nothing on versions 23-3 and older",
42+
43+
"settings.about.interfaceVersionInfoField.title": "Interface version"
3944
}

src/containers/UserSettings/settings.tsx

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Flask, PencilToSquare, StarFill} from '@gravity-ui/icons';
1+
import {CircleInfo, Flask, PencilToSquare, StarFill} from '@gravity-ui/icons';
22
import type {IconProps} from '@gravity-ui/uikit';
33

44
import {
@@ -15,13 +15,15 @@ import {
1515
import {Lang, defaultLang} from '../../utils/i18n';
1616
import {ClusterModeGuard} from '../ClusterModeGuard';
1717

18-
import type {SettingProps} from './Setting';
18+
import type {SettingProps, SettingsInfoFieldProps} from './Setting';
1919
import i18n from './i18n';
2020

21+
import packageJson from '../../../package.json';
22+
2123
export interface SettingsSection {
2224
id: string;
2325
title: string;
24-
settings: SettingProps[];
26+
settings: (SettingProps | SettingsInfoFieldProps)[];
2527
}
2628

2729
export interface SettingsPage {
@@ -119,6 +121,12 @@ export const autocompleteOnEnterSetting: SettingProps = {
119121
description: i18n('settings.editor.autocomplete-on-enter.description'),
120122
};
121123

124+
export const interfaceVersionInfoField: SettingsInfoFieldProps = {
125+
title: i18n('settings.about.interfaceVersionInfoField.title'),
126+
type: 'info',
127+
content: packageJson.version,
128+
};
129+
122130
export const appearanceSection: SettingsSection = {
123131
id: 'appearanceSection',
124132
title: i18n('section.appearance'),
@@ -135,6 +143,12 @@ export const devSettingsSection: SettingsSection = {
135143
settings: [enableAutocompleteSetting, autocompleteOnEnterSetting],
136144
};
137145

146+
export const aboutSettingsSection: SettingsSection = {
147+
id: 'aboutSettingsSection',
148+
title: i18n('section.about'),
149+
settings: [interfaceVersionInfoField],
150+
};
151+
138152
export const generalPage: SettingsPage = {
139153
id: 'generalPage',
140154
title: i18n('page.general'),
@@ -154,4 +168,16 @@ export const editorPage: SettingsPage = {
154168
sections: [devSettingsSection],
155169
};
156170

157-
export const settings: YDBEmbeddedUISettings = [generalPage, editorPage, experimentsPage];
171+
export const aboutPage: SettingsPage = {
172+
id: 'aboutPage',
173+
title: i18n('page.about'),
174+
icon: {data: CircleInfo},
175+
sections: [aboutSettingsSection],
176+
};
177+
178+
export const settings: YDBEmbeddedUISettings = [
179+
generalPage,
180+
editorPage,
181+
experimentsPage,
182+
aboutPage,
183+
];

0 commit comments

Comments
 (0)