@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes' ;
import { FormattedMessage } from 'react-intl' ;
import ClearColumnButton from './clear_column_button' ;
import GrantPermissionButton from './grant_permission_button' ;
import SettingToggle from './setting_toggle' ;
export default class ColumnSettings extends React . PureComponent {
@ -23,7 +24,7 @@ export default class ColumnSettings extends React.PureComponent {
}
render ( ) {
const { settings , pushSettings , onChange , onClear , alertsEnabled , browserSupport , browserPermission } = this . props ;
const { settings , pushSettings , onChange , onClear , alertsEnabled , browserSupport , browserPermission , onRequestNotificationPermission } = this . props ;
const filterShowStr = < FormattedMessage id = 'notifications.column_settings.filter_bar.show' defaultMessage = 'Show' / > ;
const filterAdvancedStr = < FormattedMessage id = 'notifications.column_settings.filter_bar.advanced' defaultMessage = 'Display all categories' / > ;
@ -42,6 +43,14 @@ export default class ColumnSettings extends React.PureComponent {
< / d i v >
) }
{ alertsEnabled && browserSupport && browserPermission === 'default' && (
< div className = 'column-settings__row column-settings__row--with-margin' >
< span className = 'warning-hint' >
< FormattedMessage id = 'notifications.permission_required' defaultMessage = 'Desktop notifications are unavailable because the required permission has not been granted.' / > < GrantPermissionButton onClick = { onRequestNotificationPermission } / >
< / s p a n >
< / d i v >
) }
< div className = 'column-settings__row' >
< ClearColumnButton onClick = { onClear } / >
< / d i v >
@ -61,7 +70,7 @@ export default class ColumnSettings extends React.PureComponent {
< span id = 'notifications-follow' className = 'column-settings__section' > < FormattedMessage id = 'notifications.column_settings.follow' defaultMessage = 'New followers:' / > < / s p a n >
< div className = 'column-settings__row' >
< SettingToggle disabled = { browserPermission !== 'grant ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'follow' ] } onChange = { onChange } label = { alertStr } / >
< SettingToggle disabled = { browserPermission === 'deni ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'follow' ] } onChange = { onChange } label = { alertStr } / >
{ showPushSettings && < SettingToggle prefix = 'notifications_push' settings = { pushSettings } settingPath = { [ 'alerts' , 'follow' ] } onChange = { this . onPushChange } label = { pushStr } / > }
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'shows' , 'follow' ] } onChange = { onChange } label = { showStr } / >
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'sounds' , 'follow' ] } onChange = { onChange } label = { soundStr } / >
@ -72,7 +81,7 @@ export default class ColumnSettings extends React.PureComponent {
< span id = 'notifications-follow-request' className = 'column-settings__section' > < FormattedMessage id = 'notifications.column_settings.follow_request' defaultMessage = 'New follow requests:' / > < / s p a n >
< div className = 'column-settings__row' >
< SettingToggle disabled = { browserPermission !== 'grant ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'follow_request' ] } onChange = { onChange } label = { alertStr } / >
< SettingToggle disabled = { browserPermission === 'deni ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'follow_request' ] } onChange = { onChange } label = { alertStr } / >
{ showPushSettings && < SettingToggle prefix = 'notifications_push' settings = { pushSettings } settingPath = { [ 'alerts' , 'follow_request' ] } onChange = { this . onPushChange } label = { pushStr } / > }
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'shows' , 'follow_request' ] } onChange = { onChange } label = { showStr } / >
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'sounds' , 'follow_request' ] } onChange = { onChange } label = { soundStr } / >
@ -83,7 +92,7 @@ export default class ColumnSettings extends React.PureComponent {
< span id = 'notifications-favourite' className = 'column-settings__section' > < FormattedMessage id = 'notifications.column_settings.favourite' defaultMessage = 'Favourites:' / > < / s p a n >
< div className = 'column-settings__row' >
< SettingToggle disabled = { browserPermission !== 'grant ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'favourite' ] } onChange = { onChange } label = { alertStr } / >
< SettingToggle disabled = { browserPermission === 'deni ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'favourite' ] } onChange = { onChange } label = { alertStr } / >
{ showPushSettings && < SettingToggle prefix = 'notifications_push' settings = { pushSettings } settingPath = { [ 'alerts' , 'favourite' ] } onChange = { this . onPushChange } label = { pushStr } / > }
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'shows' , 'favourite' ] } onChange = { onChange } label = { showStr } / >
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'sounds' , 'favourite' ] } onChange = { onChange } label = { soundStr } / >
@ -94,7 +103,7 @@ export default class ColumnSettings extends React.PureComponent {
< span id = 'notifications-mention' className = 'column-settings__section' > < FormattedMessage id = 'notifications.column_settings.mention' defaultMessage = 'Mentions:' / > < / s p a n >
< div className = 'column-settings__row' >
< SettingToggle disabled = { browserPermission !== 'grant ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'mention' ] } onChange = { onChange } label = { alertStr } / >
< SettingToggle disabled = { browserPermission === 'deni ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'mention' ] } onChange = { onChange } label = { alertStr } / >
{ showPushSettings && < SettingToggle prefix = 'notifications_push' settings = { pushSettings } settingPath = { [ 'alerts' , 'mention' ] } onChange = { this . onPushChange } label = { pushStr } / > }
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'shows' , 'mention' ] } onChange = { onChange } label = { showStr } / >
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'sounds' , 'mention' ] } onChange = { onChange } label = { soundStr } / >
@ -105,7 +114,7 @@ export default class ColumnSettings extends React.PureComponent {
< span id = 'notifications-reblog' className = 'column-settings__section' > < FormattedMessage id = 'notifications.column_settings.reblog' defaultMessage = 'Boosts:' / > < / s p a n >
< div className = 'column-settings__row' >
< SettingToggle disabled = { browserPermission !== 'grant ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'reblog' ] } onChange = { onChange } label = { alertStr } / >
< SettingToggle disabled = { browserPermission === 'deni ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'reblog' ] } onChange = { onChange } label = { alertStr } / >
{ showPushSettings && < SettingToggle prefix = 'notifications_push' settings = { pushSettings } settingPath = { [ 'alerts' , 'reblog' ] } onChange = { this . onPushChange } label = { pushStr } / > }
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'shows' , 'reblog' ] } onChange = { onChange } label = { showStr } / >
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'sounds' , 'reblog' ] } onChange = { onChange } label = { soundStr } / >
@ -116,7 +125,7 @@ export default class ColumnSettings extends React.PureComponent {
< span id = 'notifications-poll' className = 'column-settings__section' > < FormattedMessage id = 'notifications.column_settings.poll' defaultMessage = 'Poll results:' / > < / s p a n >
< div className = 'column-settings__row' >
< SettingToggle disabled = { browserPermission !== 'grant ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'poll' ] } onChange = { onChange } label = { alertStr } / >
< SettingToggle disabled = { browserPermission === 'deni ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'poll' ] } onChange = { onChange } label = { alertStr } / >
{ showPushSettings && < SettingToggle prefix = 'notifications_push' settings = { pushSettings } settingPath = { [ 'alerts' , 'poll' ] } onChange = { this . onPushChange } label = { pushStr } / > }
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'shows' , 'poll' ] } onChange = { onChange } label = { showStr } / >
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'sounds' , 'poll' ] } onChange = { onChange } label = { soundStr } / >
@ -127,7 +136,7 @@ export default class ColumnSettings extends React.PureComponent {
< span id = 'notifications-status' className = 'column-settings__section' > < FormattedMessage id = 'notifications.column_settings.status' defaultMessage = 'New toots:' / > < / s p a n >
< div className = 'column-settings__row' >
< SettingToggle disabled = { browserPermission !== 'grant ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'status' ] } onChange = { onChange } label = { alertStr } / >
< SettingToggle disabled = { browserPermission === 'deni ed'} prefix = 'notifications_desktop' settings = { settings } settingPath = { [ 'alerts' , 'status' ] } onChange = { onChange } label = { alertStr } / >
{ showPushSettings && < SettingToggle prefix = 'notifications_push' settings = { pushSettings } settingPath = { [ 'alerts' , 'status' ] } onChange = { this . onPushChange } label = { pushStr } / > }
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'shows' , 'status' ] } onChange = { onChange } label = { showStr } / >
< SettingToggle prefix = 'notifications' settings = { settings } settingPath = { [ 'sounds' , 'status' ] } onChange = { onChange } label = { soundStr } / >