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'
/>