fix: Fix outdated icon in notifications permissions banner (#35193)
This commit is contained in:
		@@ -18,7 +18,7 @@ import { useIdentity } from 'mastodon/identity_context';
 | 
			
		||||
 | 
			
		||||
import { useAppHistory } from './router';
 | 
			
		||||
 | 
			
		||||
const messages = defineMessages({
 | 
			
		||||
export const messages = defineMessages({
 | 
			
		||||
  show: { id: 'column_header.show_settings', defaultMessage: 'Show settings' },
 | 
			
		||||
  hide: { id: 'column_header.hide_settings', defaultMessage: 'Hide settings' },
 | 
			
		||||
  moveLeft: {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,53 +0,0 @@
 | 
			
		||||
import PropTypes from 'prop-types';
 | 
			
		||||
import { PureComponent } from 'react';
 | 
			
		||||
 | 
			
		||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
 | 
			
		||||
 | 
			
		||||
import { connect } from 'react-redux';
 | 
			
		||||
 | 
			
		||||
import SettingsIcon from '@/material-icons/400-20px/settings.svg?react';
 | 
			
		||||
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
 | 
			
		||||
import { requestBrowserPermission } from 'mastodon/actions/notifications';
 | 
			
		||||
import { changeSetting } from 'mastodon/actions/settings';
 | 
			
		||||
import { Button } from 'mastodon/components/button';
 | 
			
		||||
import { Icon }  from 'mastodon/components/icon';
 | 
			
		||||
import { IconButton } from 'mastodon/components/icon_button';
 | 
			
		||||
 | 
			
		||||
const messages = defineMessages({
 | 
			
		||||
  close: { id: 'lightbox.close', defaultMessage: 'Close' },
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
class NotificationsPermissionBanner extends PureComponent {
 | 
			
		||||
 | 
			
		||||
  static propTypes = {
 | 
			
		||||
    dispatch: PropTypes.func.isRequired,
 | 
			
		||||
    intl: PropTypes.object.isRequired,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  handleClick = () => {
 | 
			
		||||
    this.props.dispatch(requestBrowserPermission());
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  handleClose = () => {
 | 
			
		||||
    this.props.dispatch(changeSetting(['notifications', 'dismissPermissionBanner'], true));
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  render () {
 | 
			
		||||
    const { intl } = this.props;
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <div className='notifications-permission-banner'>
 | 
			
		||||
        <div className='notifications-permission-banner__close'>
 | 
			
		||||
          <IconButton icon='times' iconComponent={CloseIcon} onClick={this.handleClose} title={intl.formatMessage(messages.close)} />
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <h2><FormattedMessage id='notifications_permission_banner.title' defaultMessage='Never miss a thing' /></h2>
 | 
			
		||||
        <p><FormattedMessage id='notifications_permission_banner.how_to_control' defaultMessage="To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled." values={{ icon: <Icon id='sliders' icon={SettingsIcon} /> }} /></p>
 | 
			
		||||
        <Button onClick={this.handleClick}><FormattedMessage id='notifications_permission_banner.enable' defaultMessage='Enable desktop notifications' /></Button>
 | 
			
		||||
      </div>
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default connect()(injectIntl(NotificationsPermissionBanner));
 | 
			
		||||
@@ -0,0 +1,74 @@
 | 
			
		||||
import { useCallback } from 'react';
 | 
			
		||||
 | 
			
		||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
 | 
			
		||||
 | 
			
		||||
import { useAppDispatch } from '@/mastodon/store';
 | 
			
		||||
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
 | 
			
		||||
import UnfoldMoreIcon from '@/material-icons/400-24px/unfold_more.svg?react';
 | 
			
		||||
import { requestBrowserPermission } from 'mastodon/actions/notifications';
 | 
			
		||||
import { changeSetting } from 'mastodon/actions/settings';
 | 
			
		||||
import { Button } from 'mastodon/components/button';
 | 
			
		||||
import { messages as columnHeaderMessages } from 'mastodon/components/column_header';
 | 
			
		||||
import { Icon } from 'mastodon/components/icon';
 | 
			
		||||
import { IconButton } from 'mastodon/components/icon_button';
 | 
			
		||||
 | 
			
		||||
const messages = defineMessages({
 | 
			
		||||
  close: { id: 'lightbox.close', defaultMessage: 'Close' },
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const NotificationsPermissionBanner: React.FC = () => {
 | 
			
		||||
  const intl = useIntl();
 | 
			
		||||
  const dispatch = useAppDispatch();
 | 
			
		||||
 | 
			
		||||
  const handleClick = useCallback(() => {
 | 
			
		||||
    dispatch(requestBrowserPermission());
 | 
			
		||||
  }, [dispatch]);
 | 
			
		||||
 | 
			
		||||
  const handleClose = useCallback(() => {
 | 
			
		||||
    dispatch(changeSetting(['notifications', 'dismissPermissionBanner'], true));
 | 
			
		||||
  }, [dispatch]);
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <div className='notifications-permission-banner'>
 | 
			
		||||
      <div className='notifications-permission-banner__close'>
 | 
			
		||||
        <IconButton
 | 
			
		||||
          icon='times'
 | 
			
		||||
          iconComponent={CloseIcon}
 | 
			
		||||
          onClick={handleClose}
 | 
			
		||||
          title={intl.formatMessage(messages.close)}
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <h2>
 | 
			
		||||
        <FormattedMessage
 | 
			
		||||
          id='notifications_permission_banner.title'
 | 
			
		||||
          defaultMessage='Never miss a thing'
 | 
			
		||||
        />
 | 
			
		||||
      </h2>
 | 
			
		||||
      <p>
 | 
			
		||||
        <FormattedMessage
 | 
			
		||||
          id='notifications_permission_banner.how_to_control'
 | 
			
		||||
          defaultMessage="To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled."
 | 
			
		||||
          values={{
 | 
			
		||||
            icon: (
 | 
			
		||||
              <Icon
 | 
			
		||||
                id='sliders'
 | 
			
		||||
                icon={UnfoldMoreIcon}
 | 
			
		||||
                aria-label={intl.formatMessage(columnHeaderMessages.show)}
 | 
			
		||||
              />
 | 
			
		||||
            ),
 | 
			
		||||
          }}
 | 
			
		||||
        />
 | 
			
		||||
      </p>
 | 
			
		||||
      <Button onClick={handleClick}>
 | 
			
		||||
        <FormattedMessage
 | 
			
		||||
          id='notifications_permission_banner.enable'
 | 
			
		||||
          defaultMessage='Enable desktop notifications'
 | 
			
		||||
        />
 | 
			
		||||
      </Button>
 | 
			
		||||
    </div>
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// eslint-disable-next-line import/no-default-export
 | 
			
		||||
export default NotificationsPermissionBanner;
 | 
			
		||||
		Reference in New Issue
	
	Block a user