// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import AdminSettings from './admin_settings.jsx'; import BooleanSetting from './boolean_setting.jsx'; import TextSetting from './text_setting.jsx'; import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; import SettingsGroup from './settings_group.jsx'; import ClusterTableContainer from './cluster_table_container.jsx'; import * as Utils from 'utils/utils.jsx'; import {Client4} from 'mattermost-redux/client'; export default class ClusterSettings extends AdminSettings { constructor(props) { super(props); this.getConfigFromState = this.getConfigFromState.bind(this); this.renderSettings = this.renderSettings.bind(this); this.overrideHandleChange = this.overrideHandleChange.bind(this); } getConfigFromState(config) { config.ClusterSettings.Enable = this.state.Enable; config.ClusterSettings.ClusterName = this.state.ClusterName; config.ClusterSettings.OverrideHostname = this.state.OverrideHostname; config.ClusterSettings.UseIpAddress = this.state.UseIpAddress; config.ClusterSettings.UseExperimentalGossip = this.state.UseExperimentalGossip; config.ClusterSettings.ReadOnlyConfig = this.state.ReadOnlyConfig; config.ClusterSettings.GossipPort = this.parseIntNonZero(this.state.GossipPort, 8074); config.ClusterSettings.StreamingPort = this.parseIntNonZero(this.state.StreamingPort, 8075); return config; } getStateFromConfig(config) { const settings = config.ClusterSettings; return { Enable: settings.Enable, ClusterName: settings.ClusterName, OverrideHostname: settings.OverrideHostname, UseIpAddress: settings.UseIpAddress, UseExperimentalGossip: settings.UseExperimentalGossip, ReadOnlyConfig: settings.ReadOnlyConfig, GossipPort: settings.GossipPort, StreamingPort: settings.StreamingPort, showWarning: false }; } renderTitle() { return ( ); } overrideHandleChange(id, value) { this.setState({ showWarning: true }); this.handleChange(id, value); } renderSettings() { const licenseEnabled = global.window.mm_license.IsLicensed === 'true' && global.window.mm_license.Cluster === 'true'; if (!licenseEnabled) { return null; } var configLoadedFromCluster = null; if (Client4.clusterId) { configLoadedFromCluster = (
); } var warning = null; if (this.state.showWarning) { warning = (
); } var clusterTableContainer = null; if (this.state.Enable) { clusterTableContainer = (); } return ( {configLoadedFromCluster} {clusterTableContainer}

{warning} } helpText={ } value={this.state.Enable} onChange={this.overrideHandleChange} /> } placeholder={Utils.localizeMessage('admin.cluster.ClusterNameEx', 'Ex "Production" or "Staging"')} helpText={ } value={this.state.ClusterName} onChange={this.overrideHandleChange} /> } placeholder={Utils.localizeMessage('admin.cluster.OverrideHostnameEx', 'Ex "app-server-01"')} helpText={ } value={this.state.OverrideHostname} onChange={this.overrideHandleChange} /> } helpText={ } value={this.state.UseIpAddress} onChange={this.overrideHandleChange} /> } helpText={ } value={this.state.UseExperimentalGossip} onChange={this.overrideHandleChange} /> } helpText={ } value={this.state.ReadOnlyConfig} onChange={this.overrideHandleChange} /> } placeholder={Utils.localizeMessage('admin.cluster.GossipPortEx', 'Ex "8074"')} helpText={ } value={this.state.GossipPort} onChange={this.overrideHandleChange} /> } placeholder={Utils.localizeMessage('admin.cluster.StreamingPortEx', 'Ex "8075"')} helpText={ } value={this.state.StreamingPort} onChange={this.overrideHandleChange} />
); } }