mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
[MM-52844] : Migrate "components/admin_console/push_settings.jsx" and tests to Typescript (#23616)
* migrate bleve_settings and tests to typescript * fix linter issues * update JobType type definition * migrate push_settings to typescript * add tests * update to general type, fix test * fix failing test * Merge branch 'master' into fix-for-issue-23416 * update snapshot * revert unwanted changes * revert unwanted changes --------- Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com> Co-authored-by: Mattermost Build <build@mattermost.com>
This commit is contained in:
parent
178dbb9f95
commit
f333085f8a
@ -312,6 +312,8 @@ const defaultServerConfig: AdminConfig = {
|
|||||||
ConnectionSecurity: '',
|
ConnectionSecurity: '',
|
||||||
SendPushNotifications: true,
|
SendPushNotifications: true,
|
||||||
PushNotificationServer: 'https://push-test.mattermost.com',
|
PushNotificationServer: 'https://push-test.mattermost.com',
|
||||||
|
PushNotificationServerType: 'custom',
|
||||||
|
PushNotificationServerLocation: 'us',
|
||||||
PushNotificationContents: 'full',
|
PushNotificationContents: 'full',
|
||||||
PushNotificationBuffer: 1000,
|
PushNotificationBuffer: 1000,
|
||||||
EnableEmailBatching: false,
|
EnableEmailBatching: false,
|
||||||
|
@ -0,0 +1,330 @@
|
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`components/PushSettings should match snapshot, licensed 1`] = `
|
||||||
|
<form
|
||||||
|
className="form-horizontal"
|
||||||
|
onSubmit={[Function]}
|
||||||
|
role="form"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="wrapper--fixed"
|
||||||
|
>
|
||||||
|
<AdminHeader>
|
||||||
|
<MemoizedFormattedMessage
|
||||||
|
defaultMessage="Push Notification Server"
|
||||||
|
id="admin.environment.pushNotificationServer"
|
||||||
|
/>
|
||||||
|
</AdminHeader>
|
||||||
|
<SettingsGroup>
|
||||||
|
<DropdownSetting
|
||||||
|
helpText={null}
|
||||||
|
id="pushNotificationServerType"
|
||||||
|
isDisabled={false}
|
||||||
|
label={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Enable Push Notifications: "
|
||||||
|
id="admin.email.pushTitle"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
onChange={[Function]}
|
||||||
|
setByEnv={false}
|
||||||
|
value="mhpns"
|
||||||
|
values={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"text": "Do not send push notifications",
|
||||||
|
"value": "off",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"text": "Use HPNS connection with uptime SLA to send notifications to iOS and Android apps",
|
||||||
|
"value": "mhpns",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"text": "Use TPNS connection to send notifications to iOS and Android apps",
|
||||||
|
"value": "mtpns",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"text": "Manually enter Push Notification Service location",
|
||||||
|
"value": "custom",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<DropdownSetting
|
||||||
|
id="pushNotificationServerLocation"
|
||||||
|
isDisabled={false}
|
||||||
|
label={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Push Notification Server location:"
|
||||||
|
id="admin.email.pushServerLocationTitle"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
onChange={[Function]}
|
||||||
|
setByEnv={false}
|
||||||
|
value="us"
|
||||||
|
values={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"text": "US",
|
||||||
|
"value": "us",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"text": "Germany",
|
||||||
|
"value": "de",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
className="form-group"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="col-sm-4"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
className="col-sm-8"
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
checked={false}
|
||||||
|
onChange={[Function]}
|
||||||
|
type="checkbox"
|
||||||
|
/>
|
||||||
|
<MemoizedFormattedMessage
|
||||||
|
defaultMessage=" I understand and accept the Mattermost Hosted Push Notification Service <linkTerms>Terms of Service</linkTerms> and <linkPrivacy>Privacy Policy</linkPrivacy>."
|
||||||
|
id="admin.email.agreeHPNS"
|
||||||
|
values={
|
||||||
|
Object {
|
||||||
|
"linkPrivacy": [Function],
|
||||||
|
"linkTerms": [Function],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<AdminTextSetting
|
||||||
|
disabled={true}
|
||||||
|
helpText={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Download <linkIOS>Mattermost iOS app</linkIOS> from iTunes. Download <linkAndroid>Mattermost Android app</linkAndroid> from Google Play. Learn more about the <linkHPNS>Mattermost Hosted Push Notification Service</linkHPNS>."
|
||||||
|
id="admin.email.mhpnsHelp"
|
||||||
|
values={
|
||||||
|
Object {
|
||||||
|
"linkAndroid": [Function],
|
||||||
|
"linkHPNS": [Function],
|
||||||
|
"linkIOS": [Function],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
id="pushNotificationServer"
|
||||||
|
label={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Push Notification Server:"
|
||||||
|
id="admin.email.pushServerTitle"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
onChange={[Function]}
|
||||||
|
placeholder="E.g.: \\"https://push-test.mattermost.com\\""
|
||||||
|
setByEnv={false}
|
||||||
|
type="input"
|
||||||
|
value="https://push.mattermost.com"
|
||||||
|
/>
|
||||||
|
<AdminTextSetting
|
||||||
|
helpText={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Maximum total number of users in a channel before users typing messages, @all, @here, and @channel no longer send notifications because of performance."
|
||||||
|
id="admin.team.maxNotificationsPerChannelDescription"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
id="maxNotificationsPerChannel"
|
||||||
|
label={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Max Notifications Per Channel:"
|
||||||
|
id="admin.team.maxNotificationsPerChannelTitle"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
onChange={[Function]}
|
||||||
|
placeholder="E.g.: \\"1000\\""
|
||||||
|
setByEnv={false}
|
||||||
|
type="number"
|
||||||
|
value={1000}
|
||||||
|
/>
|
||||||
|
</SettingsGroup>
|
||||||
|
<div
|
||||||
|
className="admin-console-save"
|
||||||
|
>
|
||||||
|
<SaveButton
|
||||||
|
btnClass="btn-primary"
|
||||||
|
defaultMessage={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Save"
|
||||||
|
id="save_button.save"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
disabled={true}
|
||||||
|
extraClasses=""
|
||||||
|
onClick={[Function]}
|
||||||
|
saving={false}
|
||||||
|
savingMessage="Saving Config..."
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
className="error-message"
|
||||||
|
onMouseOut={[Function]}
|
||||||
|
onMouseOver={[Function]}
|
||||||
|
>
|
||||||
|
<FormError
|
||||||
|
error={null}
|
||||||
|
errors={Array []}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<Overlay
|
||||||
|
animation={[Function]}
|
||||||
|
placement="top"
|
||||||
|
rootClose={false}
|
||||||
|
show={false}
|
||||||
|
target={null}
|
||||||
|
>
|
||||||
|
<Tooltip
|
||||||
|
id="error-tooltip"
|
||||||
|
/>
|
||||||
|
</Overlay>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`components/PushSettings should match snapshot, unlicensed 1`] = `
|
||||||
|
<form
|
||||||
|
className="form-horizontal"
|
||||||
|
onSubmit={[Function]}
|
||||||
|
role="form"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="wrapper--fixed"
|
||||||
|
>
|
||||||
|
<AdminHeader>
|
||||||
|
<MemoizedFormattedMessage
|
||||||
|
defaultMessage="Push Notification Server"
|
||||||
|
id="admin.environment.pushNotificationServer"
|
||||||
|
/>
|
||||||
|
</AdminHeader>
|
||||||
|
<SettingsGroup>
|
||||||
|
<DropdownSetting
|
||||||
|
helpText={null}
|
||||||
|
id="pushNotificationServerType"
|
||||||
|
isDisabled={false}
|
||||||
|
label={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Enable Push Notifications: "
|
||||||
|
id="admin.email.pushTitle"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
onChange={[Function]}
|
||||||
|
setByEnv={false}
|
||||||
|
value="custom"
|
||||||
|
values={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"text": "Do not send push notifications",
|
||||||
|
"value": "off",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"text": "Use TPNS connection to send notifications to iOS and Android apps",
|
||||||
|
"value": "mtpns",
|
||||||
|
},
|
||||||
|
Object {
|
||||||
|
"text": "Manually enter Push Notification Service location",
|
||||||
|
"value": "custom",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<AdminTextSetting
|
||||||
|
disabled={false}
|
||||||
|
helpText={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Learn more about compiling and deploying your own mobile apps from an <link>Enterprise App Store</link>."
|
||||||
|
id="admin.email.easHelp"
|
||||||
|
values={
|
||||||
|
Object {
|
||||||
|
"link": [Function],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
id="pushNotificationServer"
|
||||||
|
label={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Push Notification Server:"
|
||||||
|
id="admin.email.pushServerTitle"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
onChange={[Function]}
|
||||||
|
placeholder="E.g.: \\"https://push-test.mattermost.com\\""
|
||||||
|
setByEnv={false}
|
||||||
|
type="input"
|
||||||
|
value="https://push.mattermost.com"
|
||||||
|
/>
|
||||||
|
<AdminTextSetting
|
||||||
|
helpText={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Maximum total number of users in a channel before users typing messages, @all, @here, and @channel no longer send notifications because of performance."
|
||||||
|
id="admin.team.maxNotificationsPerChannelDescription"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
id="maxNotificationsPerChannel"
|
||||||
|
label={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Max Notifications Per Channel:"
|
||||||
|
id="admin.team.maxNotificationsPerChannelTitle"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
onChange={[Function]}
|
||||||
|
placeholder="E.g.: \\"1000\\""
|
||||||
|
setByEnv={false}
|
||||||
|
type="number"
|
||||||
|
value={1000}
|
||||||
|
/>
|
||||||
|
</SettingsGroup>
|
||||||
|
<div
|
||||||
|
className="admin-console-save"
|
||||||
|
>
|
||||||
|
<SaveButton
|
||||||
|
btnClass="btn-primary"
|
||||||
|
defaultMessage={
|
||||||
|
<Memo(MemoizedFormattedMessage)
|
||||||
|
defaultMessage="Save"
|
||||||
|
id="save_button.save"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
disabled={true}
|
||||||
|
extraClasses=""
|
||||||
|
onClick={[Function]}
|
||||||
|
saving={false}
|
||||||
|
savingMessage="Saving Config..."
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
className="error-message"
|
||||||
|
onMouseOut={[Function]}
|
||||||
|
onMouseOver={[Function]}
|
||||||
|
>
|
||||||
|
<FormError
|
||||||
|
error={null}
|
||||||
|
errors={Array []}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<Overlay
|
||||||
|
animation={[Function]}
|
||||||
|
placement="top"
|
||||||
|
rootClose={false}
|
||||||
|
show={false}
|
||||||
|
target={null}
|
||||||
|
>
|
||||||
|
<Tooltip
|
||||||
|
id="error-tooltip"
|
||||||
|
/>
|
||||||
|
</Overlay>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
`;
|
@ -56,7 +56,7 @@ import TeamDetails from './team_channel_settings/team/details';
|
|||||||
import ChannelSettings from './team_channel_settings/channel';
|
import ChannelSettings from './team_channel_settings/channel';
|
||||||
import ChannelDetails from './team_channel_settings/channel/details';
|
import ChannelDetails from './team_channel_settings/channel/details';
|
||||||
import PasswordSettings from './password_settings.jsx';
|
import PasswordSettings from './password_settings.jsx';
|
||||||
import PushNotificationsSettings from './push_settings.jsx';
|
import PushNotificationsSettings from './push_settings';
|
||||||
import DataRetentionSettings from './data_retention_settings';
|
import DataRetentionSettings from './data_retention_settings';
|
||||||
import GlobalDataRetentionForm from './data_retention_settings/global_policy_form';
|
import GlobalDataRetentionForm from './data_retention_settings/global_policy_form';
|
||||||
import CustomDataRetentionForm from './data_retention_settings/custom_policy_form';
|
import CustomDataRetentionForm from './data_retention_settings/custom_policy_form';
|
||||||
|
@ -79,7 +79,7 @@ export default abstract class AdminSettings <Props extends BaseProps, State exte
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
protected handleChange = (id: string, value: boolean) => {
|
protected handleChange = (id: string, value: unknown) => {
|
||||||
this.setState((prevState) => ({
|
this.setState((prevState) => ({
|
||||||
...prevState,
|
...prevState,
|
||||||
saveNeeded: true,
|
saveNeeded: true,
|
||||||
|
@ -0,0 +1,61 @@
|
|||||||
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See LICENSE.txt for license information.
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import {shallow} from 'enzyme';
|
||||||
|
|
||||||
|
import PushSettings from 'components/admin_console/push_settings';
|
||||||
|
import {AdminConfig} from '@mattermost/types/config';
|
||||||
|
|
||||||
|
describe('components/PushSettings', () => {
|
||||||
|
test('should match snapshot, licensed', () => {
|
||||||
|
const config = {
|
||||||
|
EmailSettings: {
|
||||||
|
PushNotificationServer: 'https://push.mattermost.com',
|
||||||
|
PushNotificationServerType: 'mhpns',
|
||||||
|
SendPushNotifications: true,
|
||||||
|
},
|
||||||
|
TeamSettings: {
|
||||||
|
MaxNotificationsPerChannel: 1000,
|
||||||
|
},
|
||||||
|
} as AdminConfig;
|
||||||
|
|
||||||
|
const props = {
|
||||||
|
config,
|
||||||
|
license: {
|
||||||
|
IsLicensed: 'true',
|
||||||
|
MHPNS: 'true',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const wrapper = shallow(
|
||||||
|
<PushSettings {...props}/>,
|
||||||
|
);
|
||||||
|
|
||||||
|
wrapper.find('#pushNotificationServerType').simulate('change', 'pushNotificationServerType', 'mhpns');
|
||||||
|
expect(wrapper).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should match snapshot, unlicensed', () => {
|
||||||
|
const config = {
|
||||||
|
EmailSettings: {
|
||||||
|
PushNotificationServer: 'https://push.mattermost.com',
|
||||||
|
PushNotificationServerType: 'mhpns',
|
||||||
|
SendPushNotifications: true,
|
||||||
|
},
|
||||||
|
TeamSettings: {
|
||||||
|
MaxNotificationsPerChannel: 1000,
|
||||||
|
},
|
||||||
|
} as AdminConfig;
|
||||||
|
|
||||||
|
const props = {
|
||||||
|
config,
|
||||||
|
license: {},
|
||||||
|
};
|
||||||
|
|
||||||
|
const wrapper = shallow(
|
||||||
|
<PushSettings {...props}/>,
|
||||||
|
);
|
||||||
|
expect(wrapper).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
});
|
@ -9,16 +9,29 @@ import ExternalLink from 'components/external_link';
|
|||||||
import {Constants, DocLinks} from 'utils/constants';
|
import {Constants, DocLinks} from 'utils/constants';
|
||||||
import * as Utils from 'utils/utils';
|
import * as Utils from 'utils/utils';
|
||||||
|
|
||||||
import AdminSettings from './admin_settings';
|
import AdminSettings, {BaseProps, BaseState} from './admin_settings';
|
||||||
import DropdownSetting from './dropdown_setting.jsx';
|
import DropdownSetting from './dropdown_setting.jsx';
|
||||||
import SettingsGroup from './settings_group';
|
import SettingsGroup from './settings_group';
|
||||||
import TextSetting from './text_setting';
|
import TextSetting from './text_setting';
|
||||||
|
import {AdminConfig, ClientLicense, EmailSettings} from '@mattermost/types/config';
|
||||||
|
|
||||||
|
type Props = BaseProps & {
|
||||||
|
config: AdminConfig;
|
||||||
|
license: ClientLicense;
|
||||||
|
};
|
||||||
|
|
||||||
|
type State = BaseState & {
|
||||||
|
pushNotificationServer: string;
|
||||||
|
pushNotificationServerType: EmailSettings['PushNotificationServerType'];
|
||||||
|
pushNotificationServerLocation: EmailSettings['PushNotificationServerLocation'];
|
||||||
|
agree: boolean;
|
||||||
|
maxNotificationsPerChannel: number;
|
||||||
|
};
|
||||||
|
|
||||||
const PUSH_NOTIFICATIONS_OFF = 'off';
|
const PUSH_NOTIFICATIONS_OFF = 'off';
|
||||||
const PUSH_NOTIFICATIONS_MHPNS = 'mhpns';
|
const PUSH_NOTIFICATIONS_MHPNS = 'mhpns';
|
||||||
const PUSH_NOTIFICATIONS_MTPNS = 'mtpns';
|
const PUSH_NOTIFICATIONS_MTPNS = 'mtpns';
|
||||||
const PUSH_NOTIFICATIONS_CUSTOM = 'custom';
|
const PUSH_NOTIFICATIONS_CUSTOM = 'custom';
|
||||||
|
|
||||||
const PUSH_NOTIFICATIONS_LOCATION_US = 'us';
|
const PUSH_NOTIFICATIONS_LOCATION_US = 'us';
|
||||||
const PUSH_NOTIFICATIONS_LOCATION_DE = 'de';
|
const PUSH_NOTIFICATIONS_LOCATION_DE = 'de';
|
||||||
|
|
||||||
@ -30,18 +43,18 @@ const PUSH_NOTIFICATIONS_SERVER_DIC = {
|
|||||||
const DROPDOWN_ID_SERVER_TYPE = 'pushNotificationServerType';
|
const DROPDOWN_ID_SERVER_TYPE = 'pushNotificationServerType';
|
||||||
const DROPDOWN_ID_SERVER_LOCATION = 'pushNotificationServerLocation';
|
const DROPDOWN_ID_SERVER_LOCATION = 'pushNotificationServerLocation';
|
||||||
|
|
||||||
export default class PushSettings extends AdminSettings {
|
export default class PushSettings extends AdminSettings<Props, State> {
|
||||||
canSave = () => {
|
canSave = () => {
|
||||||
return this.state.pushNotificationServerType !== PUSH_NOTIFICATIONS_MHPNS || this.state.agree;
|
return this.state.pushNotificationServerType !== PUSH_NOTIFICATIONS_MHPNS || this.state.agree;
|
||||||
};
|
};
|
||||||
|
|
||||||
handleAgreeChange = (e) => {
|
handleAgreeChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
this.setState({
|
this.setState({
|
||||||
agree: e.target.checked,
|
agree: e.target.checked,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
handleDropdownChange = (id, value) => {
|
handleDropdownChange = (id: string, value: EmailSettings['PushNotificationServerType'] | EmailSettings['PushNotificationServerLocation']) => {
|
||||||
if (id === DROPDOWN_ID_SERVER_TYPE) {
|
if (id === DROPDOWN_ID_SERVER_TYPE) {
|
||||||
this.setState({
|
this.setState({
|
||||||
agree: false,
|
agree: false,
|
||||||
@ -66,15 +79,15 @@ export default class PushSettings extends AdminSettings {
|
|||||||
|
|
||||||
if (id === DROPDOWN_ID_SERVER_LOCATION) {
|
if (id === DROPDOWN_ID_SERVER_LOCATION) {
|
||||||
this.setState({
|
this.setState({
|
||||||
pushNotificationServer: PUSH_NOTIFICATIONS_SERVER_DIC[value],
|
pushNotificationServer: PUSH_NOTIFICATIONS_SERVER_DIC[value as EmailSettings['PushNotificationServerLocation']],
|
||||||
pushNotificationServerLocation: value,
|
pushNotificationServerLocation: value as EmailSettings['PushNotificationServerLocation'],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.handleChange(id, value);
|
this.handleChange(id, value);
|
||||||
};
|
};
|
||||||
|
|
||||||
getConfigFromState = (config) => {
|
getConfigFromState = (config: Props['config']) => {
|
||||||
config.EmailSettings.SendPushNotifications = this.state.pushNotificationServerType !== PUSH_NOTIFICATIONS_OFF;
|
config.EmailSettings.SendPushNotifications = this.state.pushNotificationServerType !== PUSH_NOTIFICATIONS_OFF;
|
||||||
config.EmailSettings.PushNotificationServer = this.state.pushNotificationServer.trim();
|
config.EmailSettings.PushNotificationServer = this.state.pushNotificationServer.trim();
|
||||||
config.TeamSettings.MaxNotificationsPerChannel = this.state.maxNotificationsPerChannel;
|
config.TeamSettings.MaxNotificationsPerChannel = this.state.maxNotificationsPerChannel;
|
||||||
@ -82,10 +95,10 @@ export default class PushSettings extends AdminSettings {
|
|||||||
return config;
|
return config;
|
||||||
};
|
};
|
||||||
|
|
||||||
getStateFromConfig(config) {
|
getStateFromConfig(config: Props['config']) {
|
||||||
let pushNotificationServerType = PUSH_NOTIFICATIONS_CUSTOM;
|
let pushNotificationServerType: EmailSettings['PushNotificationServerType'] = PUSH_NOTIFICATIONS_CUSTOM;
|
||||||
let agree = false;
|
let agree = false;
|
||||||
let pushNotificationServerLocation = PUSH_NOTIFICATIONS_LOCATION_US;
|
let pushNotificationServerLocation: EmailSettings['PushNotificationServerLocation'] = PUSH_NOTIFICATIONS_LOCATION_US;
|
||||||
if (!config.EmailSettings.SendPushNotifications) {
|
if (!config.EmailSettings.SendPushNotifications) {
|
||||||
pushNotificationServerType = PUSH_NOTIFICATIONS_OFF;
|
pushNotificationServerType = PUSH_NOTIFICATIONS_OFF;
|
||||||
} else if (config.EmailSettings.PushNotificationServer === Constants.MHPNS_US &&
|
} else if (config.EmailSettings.PushNotificationServer === Constants.MHPNS_US &&
|
||||||
@ -346,6 +359,7 @@ export default class PushSettings extends AdminSettings {
|
|||||||
onChange={this.handleChange}
|
onChange={this.handleChange}
|
||||||
disabled={this.props.isDisabled || this.state.pushNotificationServerType !== PUSH_NOTIFICATIONS_CUSTOM}
|
disabled={this.props.isDisabled || this.state.pushNotificationServerType !== PUSH_NOTIFICATIONS_CUSTOM}
|
||||||
setByEnv={this.isSetByEnv('EmailSettings.PushNotificationServer')}
|
setByEnv={this.isSetByEnv('EmailSettings.PushNotificationServer')}
|
||||||
|
type='input'
|
||||||
/>
|
/>
|
||||||
<TextSetting
|
<TextSetting
|
||||||
id='maxNotificationsPerChannel'
|
id='maxNotificationsPerChannel'
|
@ -526,6 +526,8 @@ export type EmailSettings = {
|
|||||||
ConnectionSecurity: string;
|
ConnectionSecurity: string;
|
||||||
SendPushNotifications: boolean;
|
SendPushNotifications: boolean;
|
||||||
PushNotificationServer: string;
|
PushNotificationServer: string;
|
||||||
|
PushNotificationServerType: 'off' | 'mhpns' | 'mtpns' | 'custom';
|
||||||
|
PushNotificationServerLocation: 'us' | 'de';
|
||||||
PushNotificationContents: string;
|
PushNotificationContents: string;
|
||||||
PushNotificationBuffer: number;
|
PushNotificationBuffer: number;
|
||||||
EnableEmailBatching: boolean;
|
EnableEmailBatching: boolean;
|
||||||
|
Loading…
Reference in New Issue
Block a user