diff --git a/.babelrc b/.babelrc index 081c4f963..292d52e27 100644 --- a/.babelrc +++ b/.babelrc @@ -15,6 +15,7 @@ "plugins": [ "syntax-dynamic-import", ["transform-object-rest-spread", { "useBuiltIns": true }], + "transform-decorators-legacy", "transform-class-properties", [ "react-intl", diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 960d136d3..b6ca0661f 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -16,7 +16,8 @@ const messages = defineMessages({ unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, }); -class Account extends ImmutablePureComponent { +@injectIntl +export default class Account extends ImmutablePureComponent { static propTypes = { account: ImmutablePropTypes.map.isRequired, @@ -82,5 +83,3 @@ class Account extends ImmutablePureComponent { } } - -export default injectIntl(Account); diff --git a/app/javascript/mastodon/components/attachment_list.js b/app/javascript/mastodon/components/attachment_list.js index a57c25ad0..b3d00b335 100644 --- a/app/javascript/mastodon/components/attachment_list.js +++ b/app/javascript/mastodon/components/attachment_list.js @@ -4,7 +4,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; const filename = url => url.split('/').pop().split('#')[0].split('?')[0]; -class AttachmentList extends ImmutablePureComponent { +export default class AttachmentList extends ImmutablePureComponent { static propTypes = { media: ImmutablePropTypes.list.isRequired, @@ -31,5 +31,3 @@ class AttachmentList extends ImmutablePureComponent { } } - -export default AttachmentList; diff --git a/app/javascript/mastodon/components/autosuggest_textarea.js b/app/javascript/mastodon/components/autosuggest_textarea.js index 9a5760a2c..fa41e59e1 100644 --- a/app/javascript/mastodon/components/autosuggest_textarea.js +++ b/app/javascript/mastodon/components/autosuggest_textarea.js @@ -31,7 +31,7 @@ const textAtCursorMatchesToken = (str, caretPosition) => { } }; -class AutosuggestTextarea extends ImmutablePureComponent { +export default class AutosuggestTextarea extends ImmutablePureComponent { static propTypes = { value: PropTypes.string, @@ -196,5 +196,3 @@ class AutosuggestTextarea extends ImmutablePureComponent { } } - -export default AutosuggestTextarea; diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.js index 3531a42b5..4f8170657 100644 --- a/app/javascript/mastodon/components/avatar.js +++ b/app/javascript/mastodon/components/avatar.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -class Avatar extends React.PureComponent { +export default class Avatar extends React.PureComponent { static propTypes = { src: PropTypes.string.isRequired, @@ -66,5 +66,3 @@ class Avatar extends React.PureComponent { } } - -export default Avatar; diff --git a/app/javascript/mastodon/components/avatar_overlay.js b/app/javascript/mastodon/components/avatar_overlay.js index c82c89637..de43e0ef5 100644 --- a/app/javascript/mastodon/components/avatar_overlay.js +++ b/app/javascript/mastodon/components/avatar_overlay.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -class AvatarOverlay extends React.PureComponent { +export default class AvatarOverlay extends React.PureComponent { static propTypes = { staticSrc: PropTypes.string.isRequired, @@ -28,5 +28,3 @@ class AvatarOverlay extends React.PureComponent { } } - -export default AvatarOverlay; diff --git a/app/javascript/mastodon/components/button.js b/app/javascript/mastodon/components/button.js index 52af193e7..51e2e6a7a 100644 --- a/app/javascript/mastodon/components/button.js +++ b/app/javascript/mastodon/components/button.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; -class Button extends React.PureComponent { +export default class Button extends React.PureComponent { static propTypes = { text: PropTypes.node, @@ -61,5 +61,3 @@ class Button extends React.PureComponent { } } - -export default Button; diff --git a/app/javascript/mastodon/components/column.js b/app/javascript/mastodon/components/column.js index 157a89c0e..3cbb745c5 100644 --- a/app/javascript/mastodon/components/column.js +++ b/app/javascript/mastodon/components/column.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import scrollTop from '../scroll'; -class Column extends React.PureComponent { +export default class Column extends React.PureComponent { static propTypes = { children: PropTypes.node, @@ -41,5 +41,3 @@ class Column extends React.PureComponent { } } - -export default Column; diff --git a/app/javascript/mastodon/components/column_back_button.js b/app/javascript/mastodon/components/column_back_button.js index 191c0f597..ba2736d7a 100644 --- a/app/javascript/mastodon/components/column_back_button.js +++ b/app/javascript/mastodon/components/column_back_button.js @@ -2,7 +2,7 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; -class ColumnBackButton extends React.PureComponent { +export default class ColumnBackButton extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -23,5 +23,3 @@ class ColumnBackButton extends React.PureComponent { } } - -export default ColumnBackButton; diff --git a/app/javascript/mastodon/components/column_back_button_slim.js b/app/javascript/mastodon/components/column_back_button_slim.js index ffb05fa02..3b4f46d99 100644 --- a/app/javascript/mastodon/components/column_back_button_slim.js +++ b/app/javascript/mastodon/components/column_back_button_slim.js @@ -2,7 +2,7 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; -class ColumnBackButtonSlim extends React.PureComponent { +export default class ColumnBackButtonSlim extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -25,5 +25,3 @@ class ColumnBackButtonSlim extends React.PureComponent { } } - -export default ColumnBackButtonSlim; diff --git a/app/javascript/mastodon/components/column_collapsable.js b/app/javascript/mastodon/components/column_collapsable.js index c7c953acd..d6b4edb9f 100644 --- a/app/javascript/mastodon/components/column_collapsable.js +++ b/app/javascript/mastodon/components/column_collapsable.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -class ColumnCollapsable extends React.PureComponent { +export default class ColumnCollapsable extends React.PureComponent { static propTypes = { icon: PropTypes.string.isRequired, @@ -48,5 +48,3 @@ class ColumnCollapsable extends React.PureComponent { } } - -export default ColumnCollapsable; diff --git a/app/javascript/mastodon/components/column_header.js b/app/javascript/mastodon/components/column_header.js index 076f1cdad..a309f74e8 100644 --- a/app/javascript/mastodon/components/column_header.js +++ b/app/javascript/mastodon/components/column_header.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import classNames from 'classnames'; import { FormattedMessage } from 'react-intl'; -class ColumnHeader extends React.PureComponent { +export default class ColumnHeader extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -141,5 +141,3 @@ class ColumnHeader extends React.PureComponent { } } - -export default ColumnHeader; diff --git a/app/javascript/mastodon/components/display_name.js b/app/javascript/mastodon/components/display_name.js index 6fbc1dfc0..dc3665a2b 100644 --- a/app/javascript/mastodon/components/display_name.js +++ b/app/javascript/mastodon/components/display_name.js @@ -3,7 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import escapeTextContentForBrowser from 'escape-html'; import emojify from '../emoji'; -class DisplayName extends React.PureComponent { +export default class DisplayName extends React.PureComponent { static propTypes = { account: ImmutablePropTypes.map.isRequired, @@ -21,5 +21,3 @@ class DisplayName extends React.PureComponent { } } - -export default DisplayName; diff --git a/app/javascript/mastodon/components/dropdown_menu.js b/app/javascript/mastodon/components/dropdown_menu.js index deaab938e..12e1b44fa 100644 --- a/app/javascript/mastodon/components/dropdown_menu.js +++ b/app/javascript/mastodon/components/dropdown_menu.js @@ -2,7 +2,7 @@ import React from 'react'; import Dropdown, { DropdownTrigger, DropdownContent } from 'react-simple-dropdown'; import PropTypes from 'prop-types'; -class DropdownMenu extends React.PureComponent { +export default class DropdownMenu extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -92,5 +92,3 @@ class DropdownMenu extends React.PureComponent { } } - -export default DropdownMenu; diff --git a/app/javascript/mastodon/components/extended_video_player.js b/app/javascript/mastodon/components/extended_video_player.js index 4d92bd779..4c62fa7b3 100644 --- a/app/javascript/mastodon/components/extended_video_player.js +++ b/app/javascript/mastodon/components/extended_video_player.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -class ExtendedVideoPlayer extends React.PureComponent { +export default class ExtendedVideoPlayer extends React.PureComponent { static propTypes = { src: PropTypes.string.isRequired, @@ -44,5 +44,3 @@ class ExtendedVideoPlayer extends React.PureComponent { } } - -export default ExtendedVideoPlayer; diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js index 302e63df5..ac734f5ad 100644 --- a/app/javascript/mastodon/components/icon_button.js +++ b/app/javascript/mastodon/components/icon_button.js @@ -3,7 +3,7 @@ import Motion from 'react-motion/lib/Motion'; import spring from 'react-motion/lib/spring'; import PropTypes from 'prop-types'; -class IconButton extends React.PureComponent { +export default class IconButton extends React.PureComponent { static propTypes = { className: PropTypes.string, @@ -86,5 +86,3 @@ class IconButton extends React.PureComponent { } } - -export default IconButton; diff --git a/app/javascript/mastodon/components/load_more.js b/app/javascript/mastodon/components/load_more.js index fa0caaae9..2996d4dc8 100644 --- a/app/javascript/mastodon/components/load_more.js +++ b/app/javascript/mastodon/components/load_more.js @@ -2,7 +2,7 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; -class LoadMore extends React.PureComponent { +export default class LoadMore extends React.PureComponent { static propTypes = { onClick: PropTypes.func, @@ -17,5 +17,3 @@ class LoadMore extends React.PureComponent { } } - -export default LoadMore; diff --git a/app/javascript/mastodon/components/media_gallery.js b/app/javascript/mastodon/components/media_gallery.js index cbed90f82..78ff35130 100644 --- a/app/javascript/mastodon/components/media_gallery.js +++ b/app/javascript/mastodon/components/media_gallery.js @@ -123,7 +123,8 @@ class Item extends React.PureComponent { } -class MediaGallery extends React.PureComponent { +@injectIntl +export default class MediaGallery extends React.PureComponent { static propTypes = { sensitive: PropTypes.bool, @@ -183,5 +184,3 @@ class MediaGallery extends React.PureComponent { } } - -export default injectIntl(MediaGallery); diff --git a/app/javascript/mastodon/components/permalink.js b/app/javascript/mastodon/components/permalink.js index 7149e8380..5d3e4738d 100644 --- a/app/javascript/mastodon/components/permalink.js +++ b/app/javascript/mastodon/components/permalink.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -class Permalink extends React.PureComponent { +export default class Permalink extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -32,5 +32,3 @@ class Permalink extends React.PureComponent { } } - -export default Permalink; diff --git a/app/javascript/mastodon/components/relative_timestamp.js b/app/javascript/mastodon/components/relative_timestamp.js index 3eed88df8..2717d2326 100644 --- a/app/javascript/mastodon/components/relative_timestamp.js +++ b/app/javascript/mastodon/components/relative_timestamp.js @@ -11,7 +11,8 @@ const dateFormatOptions = { minute: '2-digit', }; -class RelativeTimestamp extends React.Component { +@injectIntl +export default class RelativeTimestamp extends React.Component { static propTypes = { intl: PropTypes.object.isRequired, @@ -37,5 +38,3 @@ class RelativeTimestamp extends React.Component { } } - -export default injectIntl(RelativeTimestamp); diff --git a/app/javascript/mastodon/components/setting_text.js b/app/javascript/mastodon/components/setting_text.js index d4f177f8a..dd975bc99 100644 --- a/app/javascript/mastodon/components/setting_text.js +++ b/app/javascript/mastodon/components/setting_text.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -class SettingText extends React.PureComponent { +export default class SettingText extends React.PureComponent { static propTypes = { settings: ImmutablePropTypes.map.isRequired, @@ -29,5 +29,3 @@ class SettingText extends React.PureComponent { } } - -export default SettingText; diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 3be3685ec..81196c82a 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -15,7 +15,7 @@ import escapeTextContentForBrowser from 'escape-html'; import ImmutablePureComponent from 'react-immutable-pure-component'; import scheduleIdleTask from '../features/ui/util/schedule_idle_task'; -class Status extends ImmutablePureComponent { +export default class Status extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, @@ -233,5 +233,3 @@ class Status extends ImmutablePureComponent { } } - -export default Status; diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 800f0d0fb..edb2d6eb0 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -22,7 +22,8 @@ const messages = defineMessages({ unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' }, }); -class StatusActionBar extends ImmutablePureComponent { +@injectIntl +export default class StatusActionBar extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, @@ -149,5 +150,3 @@ class StatusActionBar extends ImmutablePureComponent { } } - -export default injectIntl(StatusActionBar); diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 605d42138..0acea033c 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -7,7 +7,7 @@ import { isRtl } from '../rtl'; import { FormattedMessage } from 'react-intl'; import Permalink from './permalink'; -class StatusContent extends React.PureComponent { +export default class StatusContent extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -171,5 +171,3 @@ class StatusContent extends React.PureComponent { } } - -export default StatusContent; diff --git a/app/javascript/mastodon/components/status_list.js b/app/javascript/mastodon/components/status_list.js index 40e9d38c1..5bc46e8ee 100644 --- a/app/javascript/mastodon/components/status_list.js +++ b/app/javascript/mastodon/components/status_list.js @@ -8,7 +8,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; import IntersectionObserverWrapper from '../features/ui/util/intersection_observer_wrapper'; import { debounce } from 'lodash'; -class StatusList extends ImmutablePureComponent { +export default class StatusList extends ImmutablePureComponent { static propTypes = { scrollKey: PropTypes.string.isRequired, @@ -142,5 +142,3 @@ class StatusList extends ImmutablePureComponent { } } - -export default StatusList; diff --git a/app/javascript/mastodon/components/video_player.js b/app/javascript/mastodon/components/video_player.js index 66c3a64bc..452a84319 100644 --- a/app/javascript/mastodon/components/video_player.js +++ b/app/javascript/mastodon/components/video_player.js @@ -11,7 +11,8 @@ const messages = defineMessages({ expand_video: { id: 'video_player.expand', defaultMessage: 'Expand video' }, }); -class VideoPlayer extends React.PureComponent { +@injectIntl +export default class VideoPlayer extends React.PureComponent { static propTypes = { media: ImmutablePropTypes.map.isRequired, @@ -193,5 +194,3 @@ class VideoPlayer extends React.PureComponent { } } - -export default injectIntl(VideoPlayer); diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.js index e3cb815c9..3bd89902f 100644 --- a/app/javascript/mastodon/containers/mastodon.js +++ b/app/javascript/mastodon/containers/mastodon.js @@ -26,7 +26,11 @@ const store = configureStore(); const initialState = JSON.parse(document.getElementById('initial-state').textContent); store.dispatch(hydrateStore(initialState)); -class Mastodon extends React.PureComponent { +export default class Mastodon extends React.PureComponent { + + static propTypes = { + locale: PropTypes.string.isRequired, + }; componentDidMount() { const { locale } = this.props; @@ -117,9 +121,3 @@ class Mastodon extends React.PureComponent { } } - -Mastodon.propTypes = { - locale: PropTypes.string.isRequired, -}; - -export default Mastodon; diff --git a/app/javascript/mastodon/features/account/components/action_bar.js b/app/javascript/mastodon/features/account/components/action_bar.js index 0ea8ad347..374da103e 100644 --- a/app/javascript/mastodon/features/account/components/action_bar.js +++ b/app/javascript/mastodon/features/account/components/action_bar.js @@ -21,7 +21,8 @@ const messages = defineMessages({ unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' }, }); -class ActionBar extends React.PureComponent { +@injectIntl +export default class ActionBar extends React.PureComponent { static propTypes = { account: ImmutablePropTypes.map.isRequired, @@ -105,5 +106,3 @@ class ActionBar extends React.PureComponent { } } - -export default injectIntl(ActionBar); diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 80a671a01..3239b1085 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -70,7 +70,9 @@ class Avatar extends ImmutablePureComponent { } -class Header extends ImmutablePureComponent { +@connect(makeMapStateToProps) +@injectIntl +export default class Header extends ImmutablePureComponent { static propTypes = { account: ImmutablePropTypes.map, @@ -140,5 +142,3 @@ class Header extends ImmutablePureComponent { } } - -export default connect(makeMapStateToProps)(injectIntl(Header)); diff --git a/app/javascript/mastodon/features/account_gallery/components/media_item.js b/app/javascript/mastodon/features/account_gallery/components/media_item.js index 31c05c866..dda3d4e37 100644 --- a/app/javascript/mastodon/features/account_gallery/components/media_item.js +++ b/app/javascript/mastodon/features/account_gallery/components/media_item.js @@ -3,7 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import Permalink from '../../../components/permalink'; -class MediaItem extends ImmutablePureComponent { +export default class MediaItem extends ImmutablePureComponent { static propTypes = { media: ImmutablePropTypes.map.isRequired, @@ -37,5 +37,3 @@ class MediaItem extends ImmutablePureComponent { } } - -export default MediaItem; diff --git a/app/javascript/mastodon/features/account_gallery/index.js b/app/javascript/mastodon/features/account_gallery/index.js index 1e4af30a4..0cfd98f23 100644 --- a/app/javascript/mastodon/features/account_gallery/index.js +++ b/app/javascript/mastodon/features/account_gallery/index.js @@ -22,7 +22,8 @@ const mapStateToProps = (state, props) => ({ autoPlayGif: state.getIn(['meta', 'auto_play_gif']), }); -class AccountGallery extends ImmutablePureComponent { +@connect(mapStateToProps) +export default class AccountGallery extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, @@ -111,5 +112,3 @@ class AccountGallery extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(AccountGallery); diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js index 55fdc4167..7f80e39e8 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.js +++ b/app/javascript/mastodon/features/account_timeline/components/header.js @@ -6,7 +6,7 @@ import ActionBar from '../../account/components/action_bar'; import MissingIndicator from '../../../components/missing_indicator'; import ImmutablePureComponent from 'react-immutable-pure-component'; -class Header extends ImmutablePureComponent { +export default class Header extends ImmutablePureComponent { static propTypes = { account: ImmutablePropTypes.map, @@ -91,5 +91,3 @@ class Header extends ImmutablePureComponent { } } - -export default Header; diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index 1aab8f130..955d0000e 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -19,7 +19,8 @@ const mapStateToProps = (state, props) => ({ me: state.getIn(['meta', 'me']), }); -class AccountTimeline extends ImmutablePureComponent { +@connect(mapStateToProps) +export default class AccountTimeline extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, @@ -77,5 +78,3 @@ class AccountTimeline extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(AccountTimeline); diff --git a/app/javascript/mastodon/features/blocks/index.js b/app/javascript/mastodon/features/blocks/index.js index de02e53cc..b16af4b28 100644 --- a/app/javascript/mastodon/features/blocks/index.js +++ b/app/javascript/mastodon/features/blocks/index.js @@ -19,7 +19,9 @@ const mapStateToProps = state => ({ accountIds: state.getIn(['user_lists', 'blocks', 'items']), }); -class Blocks extends ImmutablePureComponent { +@connect(mapStateToProps) +@injectIntl +export default class Blocks extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, @@ -66,5 +68,3 @@ class Blocks extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(injectIntl(Blocks)); diff --git a/app/javascript/mastodon/features/community_timeline/components/column_settings.js b/app/javascript/mastodon/features/community_timeline/components/column_settings.js index aa487e34e..a992b27bb 100644 --- a/app/javascript/mastodon/features/community_timeline/components/column_settings.js +++ b/app/javascript/mastodon/features/community_timeline/components/column_settings.js @@ -9,7 +9,8 @@ const messages = defineMessages({ settings: { id: 'home.settings', defaultMessage: 'Column settings' }, }); -class ColumnSettings extends React.PureComponent { +@injectIntl +export default class ColumnSettings extends React.PureComponent { static propTypes = { settings: ImmutablePropTypes.map.isRequired, @@ -32,5 +33,3 @@ class ColumnSettings extends React.PureComponent { } } - -export default injectIntl(ColumnSettings); diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js index 6c4b5dacf..0e2300f8c 100644 --- a/app/javascript/mastodon/features/community_timeline/index.js +++ b/app/javascript/mastodon/features/community_timeline/index.js @@ -27,7 +27,9 @@ const mapStateToProps = state => ({ accessToken: state.getIn(['meta', 'access_token']), }); -class CommunityTimeline extends React.PureComponent { +@connect(mapStateToProps) +@injectIntl +export default class CommunityTimeline extends React.PureComponent { static propTypes = { dispatch: PropTypes.func.isRequired, @@ -141,5 +143,3 @@ class CommunityTimeline extends React.PureComponent { } } - -export default connect(mapStateToProps)(injectIntl(CommunityTimeline)); diff --git a/app/javascript/mastodon/features/compose/components/autosuggest_account.js b/app/javascript/mastodon/features/compose/components/autosuggest_account.js index 23665811e..ebfa3c247 100644 --- a/app/javascript/mastodon/features/compose/components/autosuggest_account.js +++ b/app/javascript/mastodon/features/compose/components/autosuggest_account.js @@ -4,7 +4,7 @@ import DisplayName from '../../../components/display_name'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -class AutosuggestAccount extends ImmutablePureComponent { +export default class AutosuggestAccount extends ImmutablePureComponent { static propTypes = { account: ImmutablePropTypes.map.isRequired, @@ -22,5 +22,3 @@ class AutosuggestAccount extends ImmutablePureComponent { } } - -export default AutosuggestAccount; diff --git a/app/javascript/mastodon/features/compose/components/character_counter.js b/app/javascript/mastodon/features/compose/components/character_counter.js index e35f2b879..6c488b661 100644 --- a/app/javascript/mastodon/features/compose/components/character_counter.js +++ b/app/javascript/mastodon/features/compose/components/character_counter.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { length } from 'stringz'; -class CharacterCounter extends React.PureComponent { +export default class CharacterCounter extends React.PureComponent { static propTypes = { text: PropTypes.string.isRequired, @@ -23,5 +23,3 @@ class CharacterCounter extends React.PureComponent { } } - -export default CharacterCounter; diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index d75bbdf9c..c379c1855 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -25,7 +25,8 @@ const messages = defineMessages({ publishLoud: { id: 'compose_form.publish_loud', defaultMessage: '{publish}!' }, }); -class ComposeForm extends ImmutablePureComponent { +@injectIntl +export default class ComposeForm extends ImmutablePureComponent { static propTypes = { intl: PropTypes.object.isRequired, @@ -199,5 +200,3 @@ class ComposeForm extends ImmutablePureComponent { } } - -export default injectIntl(ComposeForm); diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js index afaff1be1..c83dbb63e 100644 --- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js @@ -24,7 +24,8 @@ const settings = { let EmojiPicker; // load asynchronously -class EmojiPickerDropdown extends React.PureComponent { +@injectIntl +export default class EmojiPickerDropdown extends React.PureComponent { static propTypes = { intl: PropTypes.object.isRequired, @@ -123,5 +124,3 @@ class EmojiPickerDropdown extends React.PureComponent { } } - -export default injectIntl(EmojiPickerDropdown); diff --git a/app/javascript/mastodon/features/compose/components/navigation_bar.js b/app/javascript/mastodon/features/compose/components/navigation_bar.js index 00f27dea1..fa4f560f3 100644 --- a/app/javascript/mastodon/features/compose/components/navigation_bar.js +++ b/app/javascript/mastodon/features/compose/components/navigation_bar.js @@ -5,7 +5,7 @@ import Permalink from '../../../components/permalink'; import { FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -class NavigationBar extends ImmutablePureComponent { +export default class NavigationBar extends ImmutablePureComponent { static propTypes = { account: ImmutablePropTypes.map.isRequired, @@ -30,5 +30,3 @@ class NavigationBar extends ImmutablePureComponent { } } - -export default NavigationBar; diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js index f368186a5..9524f7501 100644 --- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js @@ -20,7 +20,8 @@ const iconStyle = { lineHeight: '27px', }; -class PrivacyDropdown extends React.PureComponent { +@injectIntl +export default class PrivacyDropdown extends React.PureComponent { static propTypes = { value: PropTypes.string.isRequired, @@ -95,5 +96,3 @@ class PrivacyDropdown extends React.PureComponent { } } - -export default injectIntl(PrivacyDropdown); diff --git a/app/javascript/mastodon/features/compose/components/reply_indicator.js b/app/javascript/mastodon/features/compose/components/reply_indicator.js index 474549a5f..da00e46c5 100644 --- a/app/javascript/mastodon/features/compose/components/reply_indicator.js +++ b/app/javascript/mastodon/features/compose/components/reply_indicator.js @@ -12,7 +12,8 @@ const messages = defineMessages({ cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' }, }); -class ReplyIndicator extends ImmutablePureComponent { +@injectIntl +export default class ReplyIndicator extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, @@ -61,5 +62,3 @@ class ReplyIndicator extends ImmutablePureComponent { } } - -export default injectIntl(ReplyIndicator); diff --git a/app/javascript/mastodon/features/compose/components/search.js b/app/javascript/mastodon/features/compose/components/search.js index 21b3cf34b..cdc7952c0 100644 --- a/app/javascript/mastodon/features/compose/components/search.js +++ b/app/javascript/mastodon/features/compose/components/search.js @@ -6,7 +6,8 @@ const messages = defineMessages({ placeholder: { id: 'search.placeholder', defaultMessage: 'Search' }, }); -class Search extends React.PureComponent { +@injectIntl +export default class Search extends React.PureComponent { static propTypes = { value: PropTypes.string.isRequired, @@ -70,5 +71,3 @@ class Search extends React.PureComponent { } } - -export default injectIntl(Search); diff --git a/app/javascript/mastodon/features/compose/components/search_results.js b/app/javascript/mastodon/features/compose/components/search_results.js index 1a2605c15..ae4d1e86a 100644 --- a/app/javascript/mastodon/features/compose/components/search_results.js +++ b/app/javascript/mastodon/features/compose/components/search_results.js @@ -6,7 +6,7 @@ import StatusContainer from '../../../containers/status_container'; import Link from 'react-router-dom/Link'; import ImmutablePureComponent from 'react-immutable-pure-component'; -class SearchResults extends ImmutablePureComponent { +export default class SearchResults extends ImmutablePureComponent { static propTypes = { results: ImmutablePropTypes.map.isRequired, @@ -63,5 +63,3 @@ class SearchResults extends ImmutablePureComponent { } } - -export default SearchResults; diff --git a/app/javascript/mastodon/features/compose/components/text_icon_button.js b/app/javascript/mastodon/features/compose/components/text_icon_button.js index cc0fbd11a..9c8ffab1f 100644 --- a/app/javascript/mastodon/features/compose/components/text_icon_button.js +++ b/app/javascript/mastodon/features/compose/components/text_icon_button.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -class TextIconButton extends React.PureComponent { +export default class TextIconButton extends React.PureComponent { static propTypes = { label: PropTypes.string.isRequired, @@ -27,5 +27,3 @@ class TextIconButton extends React.PureComponent { } } - -export default TextIconButton; diff --git a/app/javascript/mastodon/features/compose/components/upload_button.js b/app/javascript/mastodon/features/compose/components/upload_button.js index 0f11b9e8b..badd6cfc5 100644 --- a/app/javascript/mastodon/features/compose/components/upload_button.js +++ b/app/javascript/mastodon/features/compose/components/upload_button.js @@ -23,7 +23,9 @@ const iconStyle = { lineHeight: '27px', }; -class UploadButton extends ImmutablePureComponent { +@connect(makeMapStateToProps) +@injectIntl +export default class UploadButton extends ImmutablePureComponent { static propTypes = { disabled: PropTypes.bool, @@ -70,5 +72,3 @@ class UploadButton extends ImmutablePureComponent { } } - -export default connect(makeMapStateToProps)(injectIntl(UploadButton)); diff --git a/app/javascript/mastodon/features/compose/components/upload_form.js b/app/javascript/mastodon/features/compose/components/upload_form.js index 7e665683a..78473dab4 100644 --- a/app/javascript/mastodon/features/compose/components/upload_form.js +++ b/app/javascript/mastodon/features/compose/components/upload_form.js @@ -11,7 +11,8 @@ const messages = defineMessages({ undo: { id: 'upload_form.undo', defaultMessage: 'Undo' }, }); -class UploadForm extends React.PureComponent { +@injectIntl +export default class UploadForm extends React.PureComponent { static propTypes = { media: ImmutablePropTypes.list.isRequired, @@ -48,5 +49,3 @@ class UploadForm extends React.PureComponent { } } - -export default injectIntl(UploadForm); diff --git a/app/javascript/mastodon/features/compose/components/upload_progress.js b/app/javascript/mastodon/features/compose/components/upload_progress.js index 8c8ce3835..3e49098c7 100644 --- a/app/javascript/mastodon/features/compose/components/upload_progress.js +++ b/app/javascript/mastodon/features/compose/components/upload_progress.js @@ -4,7 +4,7 @@ import Motion from 'react-motion/lib/Motion'; import spring from 'react-motion/lib/spring'; import { FormattedMessage } from 'react-intl'; -class UploadProgress extends React.PureComponent { +export default class UploadProgress extends React.PureComponent { static propTypes = { active: PropTypes.bool, @@ -40,5 +40,3 @@ class UploadProgress extends React.PureComponent { } } - -export default UploadProgress; diff --git a/app/javascript/mastodon/features/compose/components/warning.js b/app/javascript/mastodon/features/compose/components/warning.js index d0e75a5c3..75f36b840 100644 --- a/app/javascript/mastodon/features/compose/components/warning.js +++ b/app/javascript/mastodon/features/compose/components/warning.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -class Warning extends React.PureComponent { +export default class Warning extends React.PureComponent { static propTypes = { message: PropTypes.node.isRequired, @@ -18,5 +18,3 @@ class Warning extends React.PureComponent { } } - -export default Warning; diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index 0452de856..747fe4216 100644 --- a/app/javascript/mastodon/features/compose/index.js +++ b/app/javascript/mastodon/features/compose/index.js @@ -23,7 +23,9 @@ const mapStateToProps = state => ({ showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']), }); -class Compose extends React.PureComponent { +@connect(mapStateToProps) +@injectIntl +export default class Compose extends React.PureComponent { static propTypes = { dispatch: PropTypes.func.isRequired, @@ -82,5 +84,3 @@ class Compose extends React.PureComponent { } } - -export default connect(mapStateToProps)(injectIntl(Compose)); diff --git a/app/javascript/mastodon/features/favourited_statuses/index.js b/app/javascript/mastodon/features/favourited_statuses/index.js index caf0d2ca2..137e55089 100644 --- a/app/javascript/mastodon/features/favourited_statuses/index.js +++ b/app/javascript/mastodon/features/favourited_statuses/index.js @@ -17,7 +17,9 @@ const mapStateToProps = state => ({ loaded: state.getIn(['status_lists', 'favourites', 'loaded']), }); -class Favourites extends ImmutablePureComponent { +@connect(mapStateToProps) +@injectIntl +export default class Favourites extends ImmutablePureComponent { static propTypes = { dispatch: PropTypes.func.isRequired, @@ -53,5 +55,3 @@ class Favourites extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(injectIntl(Favourites)); diff --git a/app/javascript/mastodon/features/favourites/index.js b/app/javascript/mastodon/features/favourites/index.js index 94f9f268b..dc8109d16 100644 --- a/app/javascript/mastodon/features/favourites/index.js +++ b/app/javascript/mastodon/features/favourites/index.js @@ -14,7 +14,8 @@ const mapStateToProps = (state, props) => ({ accountIds: state.getIn(['user_lists', 'favourited_by', Number(props.params.statusId)]), }); -class Favourites extends ImmutablePureComponent { +@connect(mapStateToProps) +export default class Favourites extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, @@ -57,5 +58,3 @@ class Favourites extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(Favourites); diff --git a/app/javascript/mastodon/features/follow_requests/components/account_authorize.js b/app/javascript/mastodon/features/follow_requests/components/account_authorize.js index e41597c17..566953ddd 100644 --- a/app/javascript/mastodon/features/follow_requests/components/account_authorize.js +++ b/app/javascript/mastodon/features/follow_requests/components/account_authorize.js @@ -14,7 +14,8 @@ const messages = defineMessages({ reject: { id: 'follow_request.reject', defaultMessage: 'Reject' }, }); -class AccountAuthorize extends ImmutablePureComponent { +@injectIntl +export default class AccountAuthorize extends ImmutablePureComponent { static propTypes = { account: ImmutablePropTypes.map.isRequired, @@ -47,5 +48,3 @@ class AccountAuthorize extends ImmutablePureComponent { } } - -export default injectIntl(AccountAuthorize); diff --git a/app/javascript/mastodon/features/follow_requests/index.js b/app/javascript/mastodon/features/follow_requests/index.js index 286f128f4..4c9e514cb 100644 --- a/app/javascript/mastodon/features/follow_requests/index.js +++ b/app/javascript/mastodon/features/follow_requests/index.js @@ -19,7 +19,9 @@ const mapStateToProps = state => ({ accountIds: state.getIn(['user_lists', 'follow_requests', 'items']), }); -class FollowRequests extends ImmutablePureComponent { +@connect(mapStateToProps) +@injectIntl +export default class FollowRequests extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, @@ -67,5 +69,3 @@ class FollowRequests extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(injectIntl(FollowRequests)); diff --git a/app/javascript/mastodon/features/followers/index.js b/app/javascript/mastodon/features/followers/index.js index e9910dce4..2d85b9cc0 100644 --- a/app/javascript/mastodon/features/followers/index.js +++ b/app/javascript/mastodon/features/followers/index.js @@ -21,7 +21,8 @@ const mapStateToProps = (state, props) => ({ hasMore: !!state.getIn(['user_lists', 'followers', Number(props.params.accountId), 'next']), }); -class Followers extends ImmutablePureComponent { +@connect(mapStateToProps) +export default class Followers extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, @@ -90,5 +91,3 @@ class Followers extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(Followers); diff --git a/app/javascript/mastodon/features/following/index.js b/app/javascript/mastodon/features/following/index.js index 764f702ff..e4e2a4811 100644 --- a/app/javascript/mastodon/features/following/index.js +++ b/app/javascript/mastodon/features/following/index.js @@ -21,7 +21,8 @@ const mapStateToProps = (state, props) => ({ hasMore: !!state.getIn(['user_lists', 'following', Number(props.params.accountId), 'next']), }); -class Following extends ImmutablePureComponent { +@connect(mapStateToProps) +export default class Following extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, @@ -90,5 +91,3 @@ class Following extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(Following); diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index c1eb06fcb..f8ea01024 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -30,7 +30,9 @@ const mapStateToProps = state => ({ columns: state.getIn(['settings', 'columns']), }); -class GettingStarted extends ImmutablePureComponent { +@connect(mapStateToProps) +@injectIntl +export default class GettingStarted extends ImmutablePureComponent { static propTypes = { intl: PropTypes.object.isRequired, @@ -105,5 +107,3 @@ class GettingStarted extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(injectIntl(GettingStarted)); diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js index 853434d4b..b17e8e1a5 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.js +++ b/app/javascript/mastodon/features/hashtag_timeline/index.js @@ -20,7 +20,8 @@ const mapStateToProps = state => ({ accessToken: state.getIn(['meta', 'access_token']), }); -class HashtagTimeline extends React.PureComponent { +@connect(mapStateToProps) +export default class HashtagTimeline extends React.PureComponent { static propTypes = { params: PropTypes.object.isRequired, @@ -136,5 +137,3 @@ class HashtagTimeline extends React.PureComponent { } } - -export default connect(mapStateToProps)(HashtagTimeline); diff --git a/app/javascript/mastodon/features/home_timeline/components/column_settings.js b/app/javascript/mastodon/features/home_timeline/components/column_settings.js index 47cd340af..43172bd25 100644 --- a/app/javascript/mastodon/features/home_timeline/components/column_settings.js +++ b/app/javascript/mastodon/features/home_timeline/components/column_settings.js @@ -10,7 +10,8 @@ const messages = defineMessages({ settings: { id: 'home.settings', defaultMessage: 'Column settings' }, }); -class ColumnSettings extends React.PureComponent { +@injectIntl +export default class ColumnSettings extends React.PureComponent { static propTypes = { settings: ImmutablePropTypes.map.isRequired, @@ -43,5 +44,3 @@ class ColumnSettings extends React.PureComponent { } } - -export default injectIntl(ColumnSettings); diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js index ddebf2379..6021299d6 100644 --- a/app/javascript/mastodon/features/home_timeline/index.js +++ b/app/javascript/mastodon/features/home_timeline/index.js @@ -19,7 +19,9 @@ const mapStateToProps = state => ({ hasFollows: state.getIn(['accounts_counters', state.getIn(['meta', 'me']), 'following_count']) > 0, }); -class HomeTimeline extends React.PureComponent { +@connect(mapStateToProps) +@injectIntl +export default class HomeTimeline extends React.PureComponent { static propTypes = { dispatch: PropTypes.func.isRequired, @@ -96,5 +98,3 @@ class HomeTimeline extends React.PureComponent { } } - -export default connect(mapStateToProps)(injectIntl(HomeTimeline)); diff --git a/app/javascript/mastodon/features/mutes/index.js b/app/javascript/mastodon/features/mutes/index.js index f0d8856be..25ca921ae 100644 --- a/app/javascript/mastodon/features/mutes/index.js +++ b/app/javascript/mastodon/features/mutes/index.js @@ -19,7 +19,16 @@ const mapStateToProps = state => ({ accountIds: state.getIn(['user_lists', 'mutes', 'items']), }); -class Mutes extends ImmutablePureComponent { +@connect(mapStateToProps) +@injectIntl +export default class Mutes extends ImmutablePureComponent { + + static propTypes = { + params: PropTypes.object.isRequired, + dispatch: PropTypes.func.isRequired, + accountIds: ImmutablePropTypes.list, + intl: PropTypes.object.isRequired, + }; componentWillMount () { this.props.dispatch(fetchMutes()); @@ -59,12 +68,3 @@ class Mutes extends ImmutablePureComponent { } } - -Mutes.propTypes = { - params: PropTypes.object.isRequired, - dispatch: PropTypes.func.isRequired, - accountIds: ImmutablePropTypes.list, - intl: PropTypes.object.isRequired, -}; - -export default connect(mapStateToProps)(injectIntl(Mutes)); diff --git a/app/javascript/mastodon/features/notifications/components/clear_column_button.js b/app/javascript/mastodon/features/notifications/components/clear_column_button.js index 54beb1c4d..22a10753f 100644 --- a/app/javascript/mastodon/features/notifications/components/clear_column_button.js +++ b/app/javascript/mastodon/features/notifications/components/clear_column_button.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -class ClearColumnButton extends React.Component { +export default class ClearColumnButton extends React.Component { static propTypes = { onClick: PropTypes.func.isRequired, @@ -15,5 +15,3 @@ class ClearColumnButton extends React.Component { } } - -export default ClearColumnButton; diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index 2051e0c86..260594894 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -5,7 +5,7 @@ import { FormattedMessage } from 'react-intl'; import ClearColumnButton from './clear_column_button'; import SettingToggle from './setting_toggle'; -class ColumnSettings extends React.PureComponent { +export default class ColumnSettings extends React.PureComponent { static propTypes = { settings: ImmutablePropTypes.map.isRequired, @@ -63,5 +63,3 @@ class ColumnSettings extends React.PureComponent { } } - -export default ColumnSettings; diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js index ede37f66a..9d631644a 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.js +++ b/app/javascript/mastodon/features/notifications/components/notification.js @@ -8,7 +8,7 @@ import emojify from '../../../emoji'; import escapeTextContentForBrowser from 'escape-html'; import ImmutablePureComponent from 'react-immutable-pure-component'; -class Notification extends ImmutablePureComponent { +export default class Notification extends ImmutablePureComponent { static propTypes = { notification: ImmutablePropTypes.map.isRequired, @@ -86,5 +86,3 @@ class Notification extends ImmutablePureComponent { } } - -export default Notification; diff --git a/app/javascript/mastodon/features/notifications/components/setting_toggle.js b/app/javascript/mastodon/features/notifications/components/setting_toggle.js index 8707a993e..510820358 100644 --- a/app/javascript/mastodon/features/notifications/components/setting_toggle.js +++ b/app/javascript/mastodon/features/notifications/components/setting_toggle.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import Toggle from 'react-toggle'; -class SettingToggle extends React.PureComponent { +export default class SettingToggle extends React.PureComponent { static propTypes = { prefix: PropTypes.string, @@ -30,5 +30,3 @@ class SettingToggle extends React.PureComponent { } } - -export default SettingToggle; diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js index b85d6d692..1dd1b9a71 100644 --- a/app/javascript/mastodon/features/notifications/index.js +++ b/app/javascript/mastodon/features/notifications/index.js @@ -30,7 +30,9 @@ const mapStateToProps = state => ({ hasMore: !!state.getIn(['notifications', 'next']), }); -class Notifications extends React.PureComponent { +@connect(mapStateToProps) +@injectIntl +export default class Notifications extends React.PureComponent { static propTypes = { columnId: PropTypes.string, @@ -173,5 +175,3 @@ class Notifications extends React.PureComponent { } } - -export default connect(mapStateToProps)(injectIntl(Notifications)); diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js index 3de54ef8b..c6cad02d6 100644 --- a/app/javascript/mastodon/features/public_timeline/index.js +++ b/app/javascript/mastodon/features/public_timeline/index.js @@ -27,7 +27,9 @@ const mapStateToProps = state => ({ accessToken: state.getIn(['meta', 'access_token']), }); -class PublicTimeline extends React.PureComponent { +@connect(mapStateToProps) +@injectIntl +export default class PublicTimeline extends React.PureComponent { static propTypes = { dispatch: PropTypes.func.isRequired, @@ -141,5 +143,3 @@ class PublicTimeline extends React.PureComponent { } } - -export default connect(mapStateToProps)(injectIntl(PublicTimeline)); diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js index 13fd1b20e..dc940ae01 100644 --- a/app/javascript/mastodon/features/reblogs/index.js +++ b/app/javascript/mastodon/features/reblogs/index.js @@ -14,7 +14,8 @@ const mapStateToProps = (state, props) => ({ accountIds: state.getIn(['user_lists', 'reblogged_by', Number(props.params.statusId)]), }); -class Reblogs extends ImmutablePureComponent { +@connect(mapStateToProps) +export default class Reblogs extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, @@ -57,5 +58,3 @@ class Reblogs extends ImmutablePureComponent { } } - -export default connect(mapStateToProps)(Reblogs); diff --git a/app/javascript/mastodon/features/report/components/status_check_box.js b/app/javascript/mastodon/features/report/components/status_check_box.js index a31eabc21..6a1a84c28 100644 --- a/app/javascript/mastodon/features/report/components/status_check_box.js +++ b/app/javascript/mastodon/features/report/components/status_check_box.js @@ -4,7 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import emojify from '../../../emoji'; import Toggle from 'react-toggle'; -class StatusCheckBox extends React.PureComponent { +export default class StatusCheckBox extends React.PureComponent { static propTypes = { status: ImmutablePropTypes.map.isRequired, @@ -36,5 +36,3 @@ class StatusCheckBox extends React.PureComponent { } } - -export default StatusCheckBox; diff --git a/app/javascript/mastodon/features/report/index.js b/app/javascript/mastodon/features/report/index.js index 0a5268430..bfb09e193 100644 --- a/app/javascript/mastodon/features/report/index.js +++ b/app/javascript/mastodon/features/report/index.js @@ -35,7 +35,9 @@ const makeMapStateToProps = () => { return mapStateToProps; }; -class Report extends React.PureComponent { +@connect(makeMapStateToProps) +@injectIntl +export default class Report extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -121,5 +123,3 @@ class Report extends React.PureComponent { } } - -export default connect(makeMapStateToProps)(injectIntl(Report)); diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 21c2fd682..29080529d 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -15,7 +15,8 @@ const messages = defineMessages({ report: { id: 'status.report', defaultMessage: 'Report @{name}' }, }); -class ActionBar extends React.PureComponent { +@injectIntl +export default class ActionBar extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -91,5 +92,3 @@ class ActionBar extends React.PureComponent { } } - -export default injectIntl(ActionBar); diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js index 415587d6e..bfb40468b 100644 --- a/app/javascript/mastodon/features/status/components/card.js +++ b/app/javascript/mastodon/features/status/components/card.js @@ -17,7 +17,7 @@ const getHostname = url => { return parser.hostname; }; -class Card extends React.PureComponent { +export default class Card extends React.PureComponent { static propTypes = { card: ImmutablePropTypes.map, @@ -97,5 +97,3 @@ class Card extends React.PureComponent { } } - -export default Card; diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index a77c4f0bb..619957dbe 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -12,7 +12,7 @@ import { FormattedDate, FormattedNumber } from 'react-intl'; import CardContainer from '../containers/card_container'; import ImmutablePureComponent from 'react-immutable-pure-component'; -class DetailedStatus extends ImmutablePureComponent { +export default class DetailedStatus extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, @@ -87,5 +87,3 @@ class DetailedStatus extends ImmutablePureComponent { } } - -export default DetailedStatus; diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index afd8a7811..cbabdd5bc 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -48,7 +48,9 @@ const makeMapStateToProps = () => { return mapStateToProps; }; -class Status extends ImmutablePureComponent { +@injectIntl +@connect(makeMapStateToProps) +export default class Status extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, @@ -195,5 +197,3 @@ class Status extends ImmutablePureComponent { } } - -export default injectIntl(connect(makeMapStateToProps)(Status)); diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.js b/app/javascript/mastodon/features/ui/components/boost_modal.js index 9a8b96333..6c80a1084 100644 --- a/app/javascript/mastodon/features/ui/components/boost_modal.js +++ b/app/javascript/mastodon/features/ui/components/boost_modal.js @@ -13,7 +13,8 @@ const messages = defineMessages({ reblog: { id: 'status.reblog', defaultMessage: 'Boost' }, }); -class BoostModal extends ImmutablePureComponent { +@injectIntl +export default class BoostModal extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, @@ -81,5 +82,3 @@ class BoostModal extends ImmutablePureComponent { } } - -export default injectIntl(BoostModal); diff --git a/app/javascript/mastodon/features/ui/components/column.js b/app/javascript/mastodon/features/ui/components/column.js index 970d625b0..ce1dca171 100644 --- a/app/javascript/mastodon/features/ui/components/column.js +++ b/app/javascript/mastodon/features/ui/components/column.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import { debounce } from 'lodash'; import scrollTop from '../../../scroll'; -class Column extends React.PureComponent { +export default class Column extends React.PureComponent { static propTypes = { heading: PropTypes.string, @@ -59,5 +59,3 @@ class Column extends React.PureComponent { } } - -export default Column; diff --git a/app/javascript/mastodon/features/ui/components/column_header.js b/app/javascript/mastodon/features/ui/components/column_header.js index 578432fec..dc601d6e1 100644 --- a/app/javascript/mastodon/features/ui/components/column_header.js +++ b/app/javascript/mastodon/features/ui/components/column_header.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -class ColumnHeader extends React.PureComponent { +export default class ColumnHeader extends React.PureComponent { static propTypes = { icon: PropTypes.string, @@ -34,5 +34,3 @@ class ColumnHeader extends React.PureComponent { } } - -export default ColumnHeader; diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index 43be34840..3c3e9425d 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -20,7 +20,7 @@ const componentMap = { 'HASHTAG': HashtagTimeline, }; -class ColumnsArea extends ImmutablePureComponent { +export default class ColumnsArea extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object.isRequired, @@ -73,5 +73,3 @@ class ColumnsArea extends ImmutablePureComponent { } } - -export default ColumnsArea; diff --git a/app/javascript/mastodon/features/ui/components/confirmation_modal.js b/app/javascript/mastodon/features/ui/components/confirmation_modal.js index a45c220fa..86588c46a 100644 --- a/app/javascript/mastodon/features/ui/components/confirmation_modal.js +++ b/app/javascript/mastodon/features/ui/components/confirmation_modal.js @@ -3,7 +3,8 @@ import PropTypes from 'prop-types'; import { injectIntl, FormattedMessage } from 'react-intl'; import Button from '../../../components/button'; -class ConfirmationModal extends React.PureComponent { +@injectIntl +export default class ConfirmationModal extends React.PureComponent { static propTypes = { message: PropTypes.node.isRequired, @@ -50,5 +51,3 @@ class ConfirmationModal extends React.PureComponent { } } - -export default injectIntl(ConfirmationModal); diff --git a/app/javascript/mastodon/features/ui/components/image_loader.js b/app/javascript/mastodon/features/ui/components/image_loader.js index 94bf55bad..5c3879970 100644 --- a/app/javascript/mastodon/features/ui/components/image_loader.js +++ b/app/javascript/mastodon/features/ui/components/image_loader.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -class ImageLoader extends React.PureComponent { +export default class ImageLoader extends React.PureComponent { static propTypes = { alt: PropTypes.string, @@ -65,5 +65,3 @@ class ImageLoader extends React.PureComponent { } } - -export default ImageLoader; diff --git a/app/javascript/mastodon/features/ui/components/media_modal.js b/app/javascript/mastodon/features/ui/components/media_modal.js index 0209bc99b..8bb81ca01 100644 --- a/app/javascript/mastodon/features/ui/components/media_modal.js +++ b/app/javascript/mastodon/features/ui/components/media_modal.js @@ -12,7 +12,8 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -class MediaModal extends ImmutablePureComponent { +@injectIntl +export default class MediaModal extends ImmutablePureComponent { static propTypes = { media: ImmutablePropTypes.list.isRequired, @@ -95,5 +96,3 @@ class MediaModal extends ImmutablePureComponent { } } - -export default injectIntl(MediaModal); diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 0f68cfbdf..2e4f9876d 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -16,7 +16,7 @@ const MODAL_COMPONENTS = { 'CONFIRM': ConfirmationModal, }; -class ModalRoot extends React.PureComponent { +export default class ModalRoot extends React.PureComponent { static propTypes = { type: PropTypes.string, @@ -87,5 +87,3 @@ class ModalRoot extends React.PureComponent { } } - -export default ModalRoot; diff --git a/app/javascript/mastodon/features/ui/components/onboarding_modal.js b/app/javascript/mastodon/features/ui/components/onboarding_modal.js index 279599169..d2e02d63b 100644 --- a/app/javascript/mastodon/features/ui/components/onboarding_modal.js +++ b/app/javascript/mastodon/features/ui/components/onboarding_modal.js @@ -167,7 +167,9 @@ const mapStateToProps = state => ({ domain: state.getIn(['meta', 'domain']), }); -class OnboardingModal extends React.PureComponent { +@connect(mapStateToProps) +@injectIntl +export default class OnboardingModal extends React.PureComponent { static propTypes = { onClose: PropTypes.func.isRequired, @@ -322,5 +324,3 @@ class OnboardingModal extends React.PureComponent { } } - -export default connect(mapStateToProps)(injectIntl(OnboardingModal)); diff --git a/app/javascript/mastodon/features/ui/components/tabs_bar.js b/app/javascript/mastodon/features/ui/components/tabs_bar.js index 09acee067..c2e6c88b5 100644 --- a/app/javascript/mastodon/features/ui/components/tabs_bar.js +++ b/app/javascript/mastodon/features/ui/components/tabs_bar.js @@ -33,7 +33,7 @@ export function getNextLink (path) { return null; }; -class TabsBar extends React.Component { +export default class TabsBar extends React.Component { render () { return ( @@ -44,5 +44,3 @@ class TabsBar extends React.Component { } } - -export default TabsBar; diff --git a/app/javascript/mastodon/features/ui/components/upload_area.js b/app/javascript/mastodon/features/ui/components/upload_area.js index c40fe1fb9..030c3db2e 100644 --- a/app/javascript/mastodon/features/ui/components/upload_area.js +++ b/app/javascript/mastodon/features/ui/components/upload_area.js @@ -4,7 +4,7 @@ import Motion from 'react-motion/lib/Motion'; import spring from 'react-motion/lib/spring'; import { FormattedMessage } from 'react-intl'; -class UploadArea extends React.PureComponent { +export default class UploadArea extends React.PureComponent { static propTypes = { active: PropTypes.bool, @@ -51,5 +51,3 @@ class UploadArea extends React.PureComponent { } } - -export default UploadArea; diff --git a/app/javascript/mastodon/features/ui/components/video_modal.js b/app/javascript/mastodon/features/ui/components/video_modal.js index 3599ab775..9a9a49dfb 100644 --- a/app/javascript/mastodon/features/ui/components/video_modal.js +++ b/app/javascript/mastodon/features/ui/components/video_modal.js @@ -10,7 +10,8 @@ const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, }); -class VideoModal extends ImmutablePureComponent { +@injectIntl +export default class VideoModal extends ImmutablePureComponent { static propTypes = { media: ImmutablePropTypes.map.isRequired, @@ -35,5 +36,3 @@ class VideoModal extends ImmutablePureComponent { } } - -export default injectIntl(VideoModal); diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index e48e9dbe9..8453679b0 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -74,7 +74,8 @@ class WrappedRoute extends React.Component { } -class UI extends React.PureComponent { +@connect() +export default class UI extends React.PureComponent { static propTypes = { dispatch: PropTypes.func.isRequired, @@ -219,5 +220,3 @@ class UI extends React.PureComponent { } } - -export default connect()(UI); diff --git a/package.json b/package.json index dc08fc106..2e89b5c0a 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "babel-plugin-react-transform": "^2.0.2", "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators-legacy": "^1.3.4", "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-plugin-transform-object-rest-spread": "^6.23.0", "babel-plugin-transform-react-jsx-self": "^6.22.0", diff --git a/yarn.lock b/yarn.lock index 85de4b546..00dff65c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -717,7 +717,7 @@ babel-plugin-syntax-class-properties@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" -babel-plugin-syntax-decorators@^6.13.0: +babel-plugin-syntax-decorators@^6.1.18, babel-plugin-syntax-decorators@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" @@ -790,6 +790,14 @@ babel-plugin-transform-class-properties@6.24.1, babel-plugin-transform-class-pro babel-runtime "^6.22.0" babel-template "^6.24.1" +babel-plugin-transform-decorators-legacy@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925" + dependencies: + babel-plugin-syntax-decorators "^6.1.18" + babel-runtime "^6.2.0" + babel-template "^6.3.0" + babel-plugin-transform-decorators@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" @@ -1270,7 +1278,7 @@ babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.24.1, babel-template@^6.25.0: +babel-template@^6.24.1, babel-template@^6.25.0, babel-template@^6.3.0: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" dependencies: