summaryrefslogtreecommitdiffstats
path: root/webapp/components/user_settings/desktop_notification_settings.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/user_settings/desktop_notification_settings.jsx')
-rw-r--r--webapp/components/user_settings/desktop_notification_settings.jsx464
1 files changed, 0 insertions, 464 deletions
diff --git a/webapp/components/user_settings/desktop_notification_settings.jsx b/webapp/components/user_settings/desktop_notification_settings.jsx
deleted file mode 100644
index abdbff512..000000000
--- a/webapp/components/user_settings/desktop_notification_settings.jsx
+++ /dev/null
@@ -1,464 +0,0 @@
-// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import SettingItemMin from 'components/setting_item_min.jsx';
-import SettingItemMax from 'components/setting_item_max.jsx';
-
-import * as Utils from 'utils/utils.jsx';
-
-import PropTypes from 'prop-types';
-
-import React from 'react';
-import {FormattedMessage} from 'react-intl';
-
-export default class DesktopNotificationSettings extends React.Component {
- constructor(props) {
- super(props);
-
- this.buildMaximizedSetting = this.buildMaximizedSetting.bind(this);
- this.buildMinimizedSetting = this.buildMinimizedSetting.bind(this);
-
- this.state = {};
- }
-
- buildMaximizedSetting() {
- const inputs = [];
- let extraInfo = null;
-
- const activityRadio = [false, false, false];
- if (this.props.activity === 'mention') {
- activityRadio[1] = true;
- } else if (this.props.activity === 'none') {
- activityRadio[2] = true;
- } else {
- activityRadio[0] = true;
- }
-
- let soundSection;
- let durationSection;
- if (this.props.activity !== 'none') {
- const soundRadio = [false, false];
- if (this.props.sound === 'false') {
- soundRadio[1] = true;
- } else {
- soundRadio[0] = true;
- }
-
- if (Utils.hasSoundOptions()) {
- soundSection = (
- <div>
- <hr/>
- <label>
- <FormattedMessage
- id='user.settings.notifications.desktop.sound'
- defaultMessage='Notification sound'
- />
- </label>
- <br/>
- <div className='radio'>
- <label>
- <input
- id='soundOn'
- type='radio'
- name='notificationSounds'
- checked={soundRadio[0]}
- onChange={() => this.props.setParentState('desktopSound', 'true')}
- />
- <FormattedMessage
- id='user.settings.notifications.on'
- defaultMessage='On'
- />
- </label>
- <br/>
- </div>
- <div className='radio'>
- <label>
- <input
- id='soundOff'
- type='radio'
- name='notificationSounds'
- checked={soundRadio[1]}
- onChange={() => this.props.setParentState('desktopSound', 'false')}
- />
- <FormattedMessage
- id='user.settings.notifications.off'
- defaultMessage='Off'
- />
- </label>
- <br/>
- </div>
- <br/>
- <span>
- <FormattedMessage
- id='user.settings.notifications.sounds_info'
- defaultMessage='Notification sounds are available on IE11, Safari, Chrome and Mattermost Desktop Apps.'
- />
- </span>
- </div>
- );
- } else {
- soundSection = (
- <div>
- <hr/>
- <label>
- <FormattedMessage
- id='user.settings.notifications.desktop.sound'
- defaultMessage='Notification sound'
- />
- </label>
- <br/>
- <FormattedMessage
- id='user.settings.notifications.soundConfig'
- defaultMessage='Please configure notification sounds in your browser settings'
- />
- </div>
- );
- }
-
- const durationRadio = [false, false, false, false];
- if (this.props.duration === '3') {
- durationRadio[0] = true;
- } else if (this.props.duration === '10') {
- durationRadio[2] = true;
- } else if (this.props.duration === '0') {
- durationRadio[3] = true;
- } else {
- durationRadio[1] = true;
- }
-
- durationSection = (
- <div>
- <hr/>
- <label>
- <FormattedMessage
- id='user.settings.notifications.desktop.duration'
- defaultMessage='Notification duration'
- />
- </label>
- <br/>
- <div className='radio'>
- <label>
- <input
- id='soundDuration3'
- type='radio'
- name='desktopDuration'
- checked={durationRadio[0]}
- onChange={() => this.props.setParentState('desktopDuration', '3')}
- />
- <FormattedMessage
- id='user.settings.notifications.desktop.seconds'
- defaultMessage='{seconds} seconds'
- values={{
- seconds: '3'
- }}
- />
- </label>
- <br/>
- </div>
- <div className='radio'>
- <label>
- <input
- id='soundDuration5'
- type='radio'
- name='desktopDuration'
- checked={durationRadio[1]}
- onChange={() => this.props.setParentState('desktopDuration', '5')}
- />
- <FormattedMessage
- id='user.settings.notifications.desktop.seconds'
- defaultMessage='{seconds} seconds'
- values={{
- seconds: '5'
- }}
- />
- </label>
- <br/>
- </div>
- <div className='radio'>
- <label>
- <input
- id='soundDuration10'
- type='radio'
- name='desktopDuration'
- checked={durationRadio[2]}
- onChange={() => this.props.setParentState('desktopDuration', '10')}
- />
- <FormattedMessage
- id='user.settings.notifications.desktop.seconds'
- defaultMessage='{seconds} seconds'
- values={{
- seconds: '10'
- }}
- />
- </label>
- </div>
- <div className='radio'>
- <label>
- <input
- id='soundDurationUnlimited'
- type='radio'
- name='desktopDuration'
- checked={durationRadio[3]}
- onChange={() => this.props.setParentState('desktopDuration', '0')}
- />
- <FormattedMessage
- id='user.settings.notifications.desktop.unlimited'
- defaultMessage='Unlimited'
- />
- </label>
- </div>
- </div>
- );
-
- extraInfo = (
- <span>
- <FormattedMessage
- id='user.settings.notifications.desktop.durationInfo'
- defaultMessage='Sets how long desktop notifications will remain on screen when using Firefox or Chrome. Desktop notifications in Edge and Safari can only stay on screen for a maximum of 5 seconds.'
- />
- </span>
- );
- }
-
- inputs.push(
- <div key='userNotificationLevelOption'>
- <label>
- <FormattedMessage
- id='user.settings.notifications.desktop'
- defaultMessage='Send desktop notifications'
- />
- </label>
- <br/>
- <div className='radio'>
- <label>
- <input
- id='desktopNotificationAllActivity'
- type='radio'
- name='desktopNotificationLevel'
- checked={activityRadio[0]}
- onChange={() => this.props.setParentState('desktopActivity', 'all')}
- />
- <FormattedMessage
- id='user.settings.notifications.allActivity'
- defaultMessage='For all activity'
- />
- </label>
- <br/>
- </div>
- <div className='radio'>
- <label>
- <input
- id='desktopNotificationMentions'
- type='radio'
- name='desktopNotificationLevel'
- checked={activityRadio[1]}
- onChange={() => this.props.setParentState('desktopActivity', 'mention')}
- />
- <FormattedMessage
- id='user.settings.notifications.onlyMentions'
- defaultMessage='Only for mentions and direct messages'
- />
- </label>
- <br/>
- </div>
- <div className='radio'>
- <label>
- <input
- id='desktopNotificationNever'
- type='radio'
- name='desktopNotificationLevel'
- checked={activityRadio[2]}
- onChange={() => this.props.setParentState('desktopActivity', 'none')}
- />
- <FormattedMessage
- id='user.settings.notifications.never'
- defaultMessage='Never'
- />
- </label>
- </div>
- <br/>
- <span>
- <FormattedMessage
- id='user.settings.notifications.info'
- defaultMessage='Desktop notifications are available on Edge, Firefox, Safari, Chrome and Mattermost Desktop Apps.'
- />
- </span>
- {soundSection}
- {durationSection}
- </div>
- );
-
- return (
- <SettingItemMax
- title={Utils.localizeMessage('user.settings.notifications.desktop.title', 'Desktop notifications')}
- extraInfo={extraInfo}
- inputs={inputs}
- submit={this.props.submit}
- server_error={this.props.error}
- updateSection={this.props.cancel}
- />
- );
- }
-
- buildMinimizedSetting() {
- let describe = '';
- if (this.props.activity === 'mention') {
- if (Utils.hasSoundOptions() && this.props.sound !== 'false') {
- if (this.props.duration === '0') { //eslint-disable-line no-lonely-if
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.mentionsSoundForever'
- defaultMessage='For mentions and direct messages, with sound, shown indefinitely'
- />
- );
- } else {
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.mentionsSoundTimed'
- defaultMessage='For mentions and direct messages, with sound, shown for {seconds} seconds'
- values={{
- seconds: this.props.duration
- }}
- />
- );
- }
- } else if (Utils.hasSoundOptions() && this.props.sound === 'false') {
- if (this.props.duration === '0') {
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.mentionsNoSoundForever'
- defaultMessage='For mentions and direct messages, without sound, shown indefinitely'
- />
- );
- } else {
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.mentionsNoSoundTimed'
- defaultMessage='For mentions and direct messages, without sound, shown for {seconds} seconds'
- values={{
- seconds: this.props.duration
- }}
- />
- );
- }
- } else {
- if (this.props.duration === '0') { //eslint-disable-line no-lonely-if
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.mentionsSoundHiddenForever'
- defaultMessage='For mentions and direct messages, shown indefinitely'
- />
- );
- } else {
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.mentionsSoundHiddenTimed'
- defaultMessage='For mentions and direct messages, shown for {seconds} seconds'
- values={{
- seconds: this.props.duration
- }}
- />
- );
- }
- }
- } else if (this.props.activity === 'none') {
- describe = (
- <FormattedMessage
- id='user.settings.notifications.off'
- defaultMessage='Off'
- />
- );
- } else {
- if (Utils.hasSoundOptions() && this.props.sound !== 'false') { //eslint-disable-line no-lonely-if
- if (this.props.duration === '0') { //eslint-disable-line no-lonely-if
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.allSoundForever'
- defaultMessage='For all activity, with sound, shown indefinitely'
- />
- );
- } else {
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.allSoundTimed'
- defaultMessage='For all activity, with sound, shown for {seconds} seconds'
- values={{
- seconds: this.props.duration
- }}
- />
- );
- }
- } else if (Utils.hasSoundOptions() && this.props.sound === 'false') {
- if (this.props.duration === '0') {
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.allNoSoundForever'
- defaultMessage='For all activity, without sound, shown indefinitely'
- />
- );
- } else {
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.allNoSoundTimed'
- defaultMessage='For all activity, without sound, shown for {seconds} seconds'
- values={{
- seconds: this.props.duration
- }}
- />
- );
- }
- } else {
- if (this.props.duration === '0') { //eslint-disable-line no-lonely-if
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.allSoundHiddenForever'
- defaultMessage='For all activity, shown indefinitely'
- />
- );
- } else {
- describe = (
- <FormattedMessage
- id='user.settings.notifications.desktop.allSoundHiddenTimed'
- defaultMessage='For all activity, shown for {seconds} seconds'
- values={{
- seconds: this.props.duration
- }}
- />
- );
- }
- }
- }
-
- const handleUpdateDesktopSection = function updateDesktopSection() {
- this.props.updateSection('desktop');
- }.bind(this);
-
- return (
- <SettingItemMin
- title={Utils.localizeMessage('user.settings.notifications.desktop.title', 'Desktop notifications')}
- describe={describe}
- updateSection={handleUpdateDesktopSection}
- />
- );
- }
-
- render() {
- if (this.props.active) {
- return this.buildMaximizedSetting();
- }
-
- return this.buildMinimizedSetting();
- }
-}
-
-DesktopNotificationSettings.propTypes = {
- activity: PropTypes.string.isRequired,
- sound: PropTypes.string.isRequired,
- duration: PropTypes.string.isRequired,
- updateSection: PropTypes.func,
- setParentState: PropTypes.func,
- submit: PropTypes.func,
- cancel: PropTypes.func,
- error: PropTypes.string,
- active: PropTypes.bool
-};