From 91fe50f91974e2c2337a2524c5ada6fab7684df7 Mon Sep 17 00:00:00 2001 From: Manoj Kumawat Date: Tue, 3 Oct 2023 11:05:00 +0530 Subject: [PATCH] MM-52825 : Migrate "components/admin_console/database_settings.jsx" and tests to Typescript (#23939) * moved database_settings to typescript * remove any and fix types * fix config type * fix type related issues and use proper parseInt method * Uppdate snapshots --------- Co-authored-by: Manoj Kumawat Co-authored-by: Mattermost Build Co-authored-by: Ben Schumacher --- .../database_settings.test.jsx.snap | 6 +++ .../admin_console/admin_definition.jsx | 2 +- .../admin_console/admin_settings.tsx | 4 +- .../admin_console/database_settings.test.jsx | 2 +- ...ase_settings.jsx => database_settings.tsx} | 38 +++++++++++++++++-- 5 files changed, 44 insertions(+), 8 deletions(-) rename webapp/channels/src/components/admin_console/{database_settings.jsx => database_settings.tsx} (95%) diff --git a/webapp/channels/src/components/admin_console/__snapshots__/database_settings.test.jsx.snap b/webapp/channels/src/components/admin_console/__snapshots__/database_settings.test.jsx.snap index 631db159f3..737332b77f 100644 --- a/webapp/channels/src/components/admin_console/__snapshots__/database_settings.test.jsx.snap +++ b/webapp/channels/src/components/admin_console/__snapshots__/database_settings.test.jsx.snap @@ -102,6 +102,7 @@ exports[`components/DatabaseSettings should match snapshot 1`] = ` onChange={[Function]} placeholder="E.g.: \\"10\\"" setByEnv={false} + type="text" value={10} /> { - const n = parseInt(str, 10); + protected parseIntNonNegative = (str: string | number, defaultValue?: number) => { + const n = typeof str === 'string' ? parseInt(str, 10) : str; if (isNaN(n) || n < 0) { if (defaultValue) { diff --git a/webapp/channels/src/components/admin_console/database_settings.test.jsx b/webapp/channels/src/components/admin_console/database_settings.test.jsx index 5c7375e878..412a9cb8aa 100644 --- a/webapp/channels/src/components/admin_console/database_settings.test.jsx +++ b/webapp/channels/src/components/admin_console/database_settings.test.jsx @@ -4,7 +4,7 @@ import {shallow} from 'enzyme'; import React from 'react'; -import DatabaseSettings from 'components/admin_console/database_settings.jsx'; +import DatabaseSettings from 'components/admin_console/database_settings'; jest.mock('actions/admin_actions.jsx', () => { const pingFn = () => { diff --git a/webapp/channels/src/components/admin_console/database_settings.jsx b/webapp/channels/src/components/admin_console/database_settings.tsx similarity index 95% rename from webapp/channels/src/components/admin_console/database_settings.jsx rename to webapp/channels/src/components/admin_console/database_settings.tsx index 4e19fcc8e3..d90db6031a 100644 --- a/webapp/channels/src/components/admin_console/database_settings.jsx +++ b/webapp/channels/src/components/admin_console/database_settings.tsx @@ -4,6 +4,8 @@ import React from 'react'; import {FormattedMessage} from 'react-intl'; +import type {AdminConfig} from '@mattermost/types/config'; + import {recycleDatabaseConnection, ping} from 'actions/admin_actions'; import ExternalLink from 'components/external_link'; @@ -12,6 +14,7 @@ import {DocLinks} from 'utils/constants'; import {t} from 'utils/i18n'; import * as Utils from 'utils/utils'; +import type {BaseState} from './admin_settings'; import AdminSettings from './admin_settings'; import BooleanSetting from './boolean_setting'; import MigrationsTable from './database'; @@ -19,8 +22,29 @@ import RequestButton from './request_button/request_button'; import SettingsGroup from './settings_group'; import TextSetting from './text_setting'; -export default class DatabaseSettings extends AdminSettings { - constructor(props) { +interface Props { + license: { + IsLicensed: string; + }; + isDisabled: boolean; +} + +interface State extends BaseState { + searchBackend: string; + maxIdleConns: number; + maxOpenConns: number; + trace: boolean; + disableDatabaseSearch: boolean; + queryTimeout: number; + connMaxLifetimeMilliseconds: number; + connMaxIdleTimeMilliseconds: number; + minimumHashtagLength: number; + dataSource: string; + driverName: string; +} + +export default class DatabaseSettings extends AdminSettings { + constructor(props: Props) { super(props); this.state = { @@ -29,7 +53,7 @@ export default class DatabaseSettings extends AdminSettings { }; } - getConfigFromState = (config) => { + getConfigFromState = (config: AdminConfig) => { // driverName and dataSource are read-only from the UI config.SqlSettings.MaxIdleConns = this.parseIntNonZero(this.state.maxIdleConns); @@ -55,7 +79,7 @@ export default class DatabaseSettings extends AdminSettings { return res.ActiveSearchBackend; } - getStateFromConfig(config) { + getStateFromConfig(config: AdminConfig) { return { driverName: config.SqlSettings.DriverName, dataSource: config.SqlSettings.DataSource, @@ -207,6 +231,7 @@ export default class DatabaseSettings extends AdminSettings { onChange={this.handleChange} setByEnv={this.isSetByEnv('SqlSettings.MaxIdleConns')} disabled={this.props.isDisabled} + type='text' />