Skip to content

Commit 7603a75

Browse files
feat: use meta settings service if configured
1 parent 0db085a commit 7603a75

File tree

80 files changed

+1191
-782
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+1191
-782
lines changed

src/components/DiskStateProgressBar/DiskStateProgressBar.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import React from 'react';
22

3+
import {SETTING_KEYS} from '../../store/reducers/settings/constants';
4+
import {useSetting} from '../../store/reducers/settings/useSetting';
35
import {cn} from '../../utils/cn';
4-
import {INVERTED_DISKS_KEY} from '../../utils/constants';
56
import {getSeverityColor} from '../../utils/disks/helpers';
6-
import {useSetting} from '../../utils/hooks';
77

88
import './DiskStateProgressBar.scss';
99

@@ -30,7 +30,7 @@ export function DiskStateProgressBar({
3030
content,
3131
className,
3232
}: DiskStateProgressBarProps) {
33-
const [inverted] = useSetting<boolean | undefined>(INVERTED_DISKS_KEY);
33+
const {value: inverted} = useSetting<boolean | undefined>(SETTING_KEYS.INVERTED_DISKS);
3434

3535
const mods: Record<string, boolean | undefined> = {inverted, compact, faded, empty, inactive};
3636

src/components/JsonViewer/JsonViewer.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import type * as DT100 from '@gravity-ui/react-data-table';
55
import DataTable from '@gravity-ui/react-data-table';
66
import {ActionTooltip, Button, Flex, Icon} from '@gravity-ui/uikit';
77

8-
import {CASE_SENSITIVE_JSON_SEARCH} from '../../utils/constants';
9-
import {useSetting} from '../../utils/hooks';
8+
import {SETTING_KEYS} from '../../store/reducers/settings/constants';
9+
import {useSetting} from '../../store/reducers/settings/useSetting';
1010
import type {ClipboardButtonProps} from '../ClipboardButton/ClipboardButton';
1111
import {ClipboardButton} from '../ClipboardButton/ClipboardButton';
1212

@@ -121,9 +121,8 @@ function JsonViewerComponent({
121121
toolbarClassName,
122122
withClipboardButton,
123123
}: JsonViewerComponentProps) {
124-
const [caseSensitiveSearch, setCaseSensitiveSearch] = useSetting(
125-
CASE_SENSITIVE_JSON_SEARCH,
126-
false,
124+
const {value: caseSensitiveSearch, saveValue: setCaseSensitiveSearch} = useSetting<boolean>(
125+
SETTING_KEYS.CASE_SENSITIVE_JSON_SEARCH,
127126
);
128127

129128
const [collapsedState, setCollapsedState] = React.useState<CollapsedState>(() => {

src/components/NetworkTable/hooks.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ import {
22
useNodesHandlerHasWorkingClusterNetworkStats,
33
useViewerNodesHandlerHasNetworkStats,
44
} from '../../store/reducers/capabilities/hooks';
5-
import {ENABLE_NETWORK_TABLE_KEY} from '../../utils/constants';
6-
import {useSetting} from '../../utils/hooks';
5+
import {SETTING_KEYS} from '../../store/reducers/settings/constants';
6+
import {useSetting} from '../../store/reducers/settings/useSetting';
77

88
export function useShouldShowDatabaseNetworkTable() {
99
const viewerNodesHasNetworkStats = useViewerNodesHandlerHasNetworkStats();
10-
const [networkTableEnabled] = useSetting(ENABLE_NETWORK_TABLE_KEY);
10+
const {value: networkTableEnabled} = useSetting(SETTING_KEYS.ENABLE_NETWORK_TABLE);
1111

1212
return Boolean(viewerNodesHasNetworkStats && networkTableEnabled);
1313
}
1414

1515
export function useShouldShowClusterNetworkTable() {
1616
const nodesHasWorkingClusterNetworkStats = useNodesHandlerHasWorkingClusterNetworkStats();
17-
const [networkTableEnabled] = useSetting(ENABLE_NETWORK_TABLE_KEY);
17+
const {value: networkTableEnabled} = useSetting(SETTING_KEYS.ENABLE_NETWORK_TABLE);
1818

1919
return Boolean(nodesHasWorkingClusterNetworkStats && networkTableEnabled);
2020
}

src/components/PaginatedTable/ResizeablePaginatedTable.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type {ColumnWidthByName} from '@gravity-ui/react-data-table';
22

33
import {useTableResize} from '../../utils/hooks/useTableResize';
4+
import {TableSkeleton} from '../TableSkeleton/TableSkeleton';
45

56
import type {PaginatedTableProps} from './PaginatedTable';
67
import {PaginatedTable} from './PaginatedTable';
@@ -23,10 +24,15 @@ export function ResizeablePaginatedTable<T, F>({
2324
columns,
2425
...props
2526
}: ResizeablePaginatedTableProps<T, F>) {
26-
const [tableColumnsWidth, setTableColumnsWidth] = useTableResize(columnsWidthLSKey);
27+
const [tableColumnsWidth, setTableColumnsWidth, isTableWidthLoading] =
28+
useTableResize(columnsWidthLSKey);
2729

2830
const updatedColumns = updateColumnsWidth(columns, tableColumnsWidth);
2931

32+
if (isTableWidthLoading) {
33+
return <TableSkeleton />;
34+
}
35+
3036
return (
3137
<PaginatedTable
3238
columns={updatedColumns}

src/components/ResizeableDataTable/ResizeableDataTable.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ export function ResizeableDataTable<T>({
4444
data,
4545
...props
4646
}: ResizeableDataTableProps<T>) {
47-
const [tableColumnsWidth, setTableColumnsWidth] = useTableResize(columnsWidthLSKey);
47+
const [tableColumnsWidth, setTableColumnsWidth, isTableWidthLoading] =
48+
useTableResize(columnsWidthLSKey);
4849

4950
const handleSort = React.useCallback(
5051
(params: SortOrder | SortOrder[] | undefined) => {
@@ -82,7 +83,7 @@ export function ResizeableDataTable<T>({
8283
};
8384
}, [settings]);
8485

85-
if (isLoading) {
86+
if (isLoading || isTableWidthLoading) {
8687
return <TableSkeleton rows={loadingSkeletonRowsCount} />;
8788
}
8889

src/containers/App/Providers.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ import {ReactRouter5Adapter} from 'use-query-params/adapters/react-router-5';
1313
import {ComponentsProvider} from '../../components/ComponentsProvider/ComponentsProvider';
1414
import {componentsRegistry as defaultComponentsRegistry} from '../../components/ComponentsProvider/componentsRegistry';
1515
import type {ComponentsRegistry} from '../../components/ComponentsProvider/componentsRegistry';
16-
import {THEME_KEY} from '../../utils/constants';
16+
import {SETTING_KEYS} from '../../store/reducers/settings/constants';
17+
import {useSetting} from '../../store/reducers/settings/useSetting';
1718
import {toaster} from '../../utils/createToast';
18-
import {useSetting} from '../../utils/hooks';
1919

2020
import {AppTitleProvider} from './AppTitleContext';
2121

@@ -57,7 +57,7 @@ export function Providers({
5757
}
5858

5959
function Theme({children}: {children: React.ReactNode}) {
60-
const [theme] = useSetting<string | undefined>(THEME_KEY);
60+
const {value: theme} = useSetting<string | undefined>(SETTING_KEYS.THEME);
6161

6262
return <ThemeProvider theme={theme}>{children}</ThemeProvider>;
6363
}

src/containers/AppWithClusters/utils/useAdditionalTenantsProps.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import {isNil} from 'lodash';
22

33
import {useClusterBaseInfo} from '../../../store/reducers/cluster/cluster';
4+
import {SETTING_KEYS} from '../../../store/reducers/settings/constants';
5+
import {useSetting} from '../../../store/reducers/settings/useSetting';
46
import type {AdditionalTenantsProps} from '../../../types/additionalProps';
57
import type {ETenantType} from '../../../types/api/tenant';
68
import type {GetDatabaseLinks} from '../../../uiFactory/types';
79
import {uiFactory} from '../../../uiFactory/uiFactory';
8-
import {USE_CLUSTER_BALANCER_AS_BACKEND_KEY} from '../../../utils/constants';
9-
import {useSetting} from '../../../utils/hooks';
1010
import type {GetLogsLink} from '../../../utils/logs';
1111
import type {GetMonitoringLink} from '../../../utils/monitoring';
1212
import {prepareBackendFromBalancer} from '../../../utils/parseBalancer';
@@ -23,7 +23,9 @@ export function useAdditionalTenantsProps({
2323
getDatabaseLinks,
2424
}: GetAdditionalTenantsProps) {
2525
const clusterInfo = useClusterBaseInfo();
26-
const [useClusterBalancerAsBackend] = useSetting<boolean>(USE_CLUSTER_BALANCER_AS_BACKEND_KEY);
26+
const {value: useClusterBalancerAsBackend} = useSetting<boolean>(
27+
SETTING_KEYS.USE_CLUSTER_BALANCER_AS_BACKEND,
28+
);
2729

2830
const {balancer, monitoring, logging, name: clusterName} = clusterInfo;
2931

src/containers/AsideNavigation/AsideNavigation.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import {AsideHeader, FooterItem} from '@gravity-ui/navigation';
66
import type {IconData} from '@gravity-ui/uikit';
77
import {useHistory} from 'react-router-dom';
88

9+
import {SETTING_KEYS} from '../../store/reducers/settings/constants';
10+
import {useSetting} from '../../store/reducers/settings/useSetting';
911
import {cn} from '../../utils/cn';
10-
import {ASIDE_HEADER_COMPACT_KEY} from '../../utils/constants';
11-
import {useSetting} from '../../utils/hooks';
1212

1313
import {InformationPopup} from './InformationPopup';
1414
import {useHotkeysPanel} from './hooks/useHotkeysPanel';
@@ -76,7 +76,9 @@ export function AsideNavigation(props: AsideNavigationProps) {
7676

7777
const [visiblePanel, setVisiblePanel] = React.useState<Panel>();
7878
const [informationPopupVisible, setInformationPopupVisible] = React.useState(false);
79-
const [compact, setIsCompact] = useSetting<boolean>(ASIDE_HEADER_COMPACT_KEY);
79+
const {value: compact, saveValue: setIsCompact} = useSetting<boolean>(
80+
SETTING_KEYS.ASIDE_HEADER_COMPACT,
81+
);
8082

8183
const toggleInformationPopup = () => setInformationPopupVisible((prev) => !prev);
8284

@@ -110,7 +112,7 @@ export function AsideNavigation(props: AsideNavigationProps) {
110112
onClick: () => history.push('/'),
111113
}}
112114
menuItems={props.menuItems}
113-
compact={compact}
115+
compact={Boolean(compact)}
114116
onChangeCompact={setIsCompact}
115117
className={b()}
116118
renderContent={() => props.content}

src/containers/AsideNavigation/InformationPopup/InformationPopup.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import {Keyboard} from '@gravity-ui/icons';
22
import {Flex, Hotkey, Icon, Link, List, Text} from '@gravity-ui/uikit';
33

4-
import {settingsManager} from '../../../services/settings';
54
import {cn} from '../../../utils/cn';
6-
import {LANGUAGE_KEY} from '../../../utils/constants';
75
import {SHORTCUTS_HOTKEY} from '../hooks/useHotkeysPanel';
86
import i18n from '../i18n';
97

@@ -16,11 +14,6 @@ export interface InformationPopupProps {
1614
}
1715

1816
export function InformationPopup({onKeyboardShortcutsClick}: InformationPopupProps) {
19-
const getDocumentationLink = () => {
20-
const lang = settingsManager.readUserSettingsValue(LANGUAGE_KEY, navigator.language);
21-
return lang === 'ru' ? 'https://ydb.tech/docs/ru/' : 'https://ydb.tech/docs/en/';
22-
};
23-
2417
return (
2518
<div className={b('content', {})}>
2619
<div className={b('docs')}>
@@ -32,7 +25,7 @@ export function InformationPopup({onKeyboardShortcutsClick}: InformationPopupPro
3225
items={[
3326
{
3427
text: i18n('help-center.item.documentation'),
35-
url: getDocumentationLink(),
28+
url: 'https://ydb.tech/docs',
3629
},
3730
]}
3831
filterable={false}

src/containers/Cluster/ClusterOverview/ClusterOverview.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import {
88
useClusterDashboardAvailable,
99
} from '../../../store/reducers/capabilities/hooks';
1010
import type {ClusterGroupsStats} from '../../../store/reducers/cluster/types';
11+
import {SETTING_KEYS} from '../../../store/reducers/settings/constants';
12+
import {useSetting} from '../../../store/reducers/settings/useSetting';
1113
import type {AdditionalClusterProps} from '../../../types/additionalProps';
1214
import {isClusterInfoV2, isClusterInfoV5} from '../../../types/api/cluster';
1315
import type {TClusterInfo} from '../../../types/api/cluster';
1416
import type {IResponseError} from '../../../types/api/error';
1517
import {valueIsDefined} from '../../../utils';
16-
import {EXPAND_CLUSTER_DASHBOARD} from '../../../utils/constants';
17-
import {useSetting} from '../../../utils/hooks/useSetting';
1818
import {ClusterInfo} from '../ClusterInfo/ClusterInfo';
1919
import i18n from '../i18n';
2020
import {getTotalStorageGroupsUsed} from '../utils';
@@ -40,7 +40,9 @@ interface ClusterOverviewProps {
4040
}
4141

4242
export function ClusterOverview(props: ClusterOverviewProps) {
43-
const [expandDashboard, setExpandDashboard] = useSetting<boolean>(EXPAND_CLUSTER_DASHBOARD);
43+
const {value: expandDashboard, saveValue: setExpandDashboard} = useSetting<boolean>(
44+
SETTING_KEYS.EXPAND_CLUSTER_DASHBOARD,
45+
);
4446
const bridgeModeEnabled = useBridgeModeEnabled();
4547

4648
const bridgePiles = React.useMemo(() => {

0 commit comments

Comments
 (0)