From c1a8e3d1ebaa6d69e1ae23369a5dedd93ba7226f Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sat, 24 Jun 2017 02:36:54 +0900 Subject: [PATCH] Use Class and Property Decorators (#3730) ref https://tc39.github.io/proposal-decorators/ --- .babelrc | 1 + app/javascript/mastodon/components/account.js | 5 ++--- .../mastodon/components/attachment_list.js | 4 +--- .../components/autosuggest_textarea.js | 4 +--- app/javascript/mastodon/components/avatar.js | 4 +--- .../mastodon/components/avatar_overlay.js | 4 +--- app/javascript/mastodon/components/button.js | 4 +--- app/javascript/mastodon/components/column.js | 4 +--- .../mastodon/components/column_back_button.js | 4 +--- .../components/column_back_button_slim.js | 4 +--- .../mastodon/components/column_collapsable.js | 4 +--- .../mastodon/components/column_header.js | 4 +--- .../mastodon/components/display_name.js | 4 +--- .../mastodon/components/dropdown_menu.js | 4 +--- .../components/extended_video_player.js | 4 +--- .../mastodon/components/icon_button.js | 4 +--- .../mastodon/components/load_more.js | 4 +--- .../mastodon/components/media_gallery.js | 5 ++--- .../mastodon/components/permalink.js | 4 +--- .../mastodon/components/relative_timestamp.js | 5 ++--- .../mastodon/components/setting_text.js | 4 +--- app/javascript/mastodon/components/status.js | 4 +--- .../mastodon/components/status_action_bar.js | 5 ++--- .../mastodon/components/status_content.js | 4 +--- .../mastodon/components/status_list.js | 4 +--- .../mastodon/components/video_player.js | 5 ++--- .../mastodon/containers/mastodon.js | 12 +++++------ .../features/account/components/action_bar.js | 5 ++--- .../features/account/components/header.js | 6 +++--- .../account_gallery/components/media_item.js | 4 +--- .../features/account_gallery/index.js | 5 ++--- .../account_timeline/components/header.js | 4 +--- .../features/account_timeline/index.js | 5 ++--- .../mastodon/features/blocks/index.js | 6 +++--- .../components/column_settings.js | 5 ++--- .../features/community_timeline/index.js | 6 +++--- .../compose/components/autosuggest_account.js | 4 +--- .../compose/components/character_counter.js | 4 +--- .../compose/components/compose_form.js | 5 ++--- .../components/emoji_picker_dropdown.js | 5 ++--- .../compose/components/navigation_bar.js | 4 +--- .../compose/components/privacy_dropdown.js | 5 ++--- .../compose/components/reply_indicator.js | 5 ++--- .../features/compose/components/search.js | 5 ++--- .../compose/components/search_results.js | 4 +--- .../compose/components/text_icon_button.js | 4 +--- .../compose/components/upload_button.js | 6 +++--- .../compose/components/upload_form.js | 5 ++--- .../compose/components/upload_progress.js | 4 +--- .../features/compose/components/warning.js | 4 +--- .../mastodon/features/compose/index.js | 6 +++--- .../features/favourited_statuses/index.js | 6 +++--- .../mastodon/features/favourites/index.js | 5 ++--- .../components/account_authorize.js | 5 ++--- .../features/follow_requests/index.js | 6 +++--- .../mastodon/features/followers/index.js | 5 ++--- .../mastodon/features/following/index.js | 5 ++--- .../features/getting_started/index.js | 6 +++--- .../features/hashtag_timeline/index.js | 5 ++--- .../components/column_settings.js | 5 ++--- .../mastodon/features/home_timeline/index.js | 6 +++--- .../mastodon/features/mutes/index.js | 20 +++++++++---------- .../components/clear_column_button.js | 4 +--- .../components/column_settings.js | 4 +--- .../notifications/components/notification.js | 4 +--- .../components/setting_toggle.js | 4 +--- .../mastodon/features/notifications/index.js | 6 +++--- .../features/public_timeline/index.js | 6 +++--- .../mastodon/features/reblogs/index.js | 5 ++--- .../report/components/status_check_box.js | 4 +--- .../mastodon/features/report/index.js | 6 +++--- .../features/status/components/action_bar.js | 5 ++--- .../features/status/components/card.js | 4 +--- .../status/components/detailed_status.js | 4 +--- .../mastodon/features/status/index.js | 6 +++--- .../features/ui/components/boost_modal.js | 5 ++--- .../mastodon/features/ui/components/column.js | 4 +--- .../features/ui/components/column_header.js | 4 +--- .../features/ui/components/columns_area.js | 4 +--- .../ui/components/confirmation_modal.js | 5 ++--- .../features/ui/components/image_loader.js | 4 +--- .../features/ui/components/media_modal.js | 5 ++--- .../features/ui/components/modal_root.js | 4 +--- .../ui/components/onboarding_modal.js | 6 +++--- .../features/ui/components/tabs_bar.js | 4 +--- .../features/ui/components/upload_area.js | 4 +--- .../features/ui/components/video_modal.js | 5 ++--- app/javascript/mastodon/features/ui/index.js | 5 ++--- package.json | 1 + yarn.lock | 12 +++++++++-- 90 files changed, 168 insertions(+), 274 deletions(-) diff --git a/.babelrc b/.babelrc index 081c4f963c..292d52e277 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 960d136d33..b6ca0661fb 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 a57c25ad0b..b3d00b3357 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 9a5760a2cf..fa41e59e1f 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 3531a42b56..4f81706576 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 c82c896372..de43e0ef51 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 52af193e79..51e2e6a7a8 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 157a89c0e2..3cbb745c5a 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 191c0f597e..ba2736d7a0 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 ffb05fa027..3b4f46d99f 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 c7c953acdf..d6b4edb9fe 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 076f1cdadd..a309f74e8a 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 6fbc1dfc0b..dc3665a2b0 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 deaab938e4..12e1b44fa2 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 4d92bd779b..4c62fa7b3d 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 302e63df5c..ac734f5ad4 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 fa0caaae99..2996d4dc8d 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 cbed90f82b..78ff351308 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 7149e83801..5d3e4738d0 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 3eed88df80..2717d2326d 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 d4f177f8ab..dd975bc991 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 3be3685ece..81196c82a4 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 800f0d0fbf..edb2d6eb0a 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 605d42138c..0acea033c5 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 40e9d38c1b..5bc46e8eeb 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 66c3a64bc6..452a843196 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 e3cb815c9d..3bd89902f6 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 0ea8ad3478..374da103ea 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 80a671a01b..3239b1085c 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 31c05c8669..dda3d4e37b 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 1e4af30a4c..0cfd98f231 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 55fdc41675..7f80e39e8d 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 1aab8f130d..955d0000e7 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 de02e53cc3..b16af4b287 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 aa487e34ee..a992b27bbd 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 6c4b5dacf2..0e2300f8ce 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 23665811e8..ebfa3c247b 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 e35f2b879c..6c488b661d 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 d75bbdf9cb..c379c1855a 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 afaff1be12..c83dbb63ec 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 00f27dea1b..fa4f560f39 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 f368186a57..9524f7501a 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 474549a5fb..da00e46c51 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 21b3cf34b2..cdc7952c02 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 1a2605c159..ae4d1e86ae 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 cc0fbd11a8..9c8ffab1f9 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 0f11b9e8b6..badd6cfc5c 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 7e665683a5..78473dab40 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 8c8ce38351..3e49098c72 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 d0e75a5c3f..75f36b8404 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 0452de8566..747fe42164 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 caf0d2ca2b..137e55089a 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 94f9f268b3..dc8109d16e 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 e41597c17e..566953ddd6 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 286f128f45..4c9e514cb5 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 e9910dce48..2d85b9cc0b 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 764f702fff..e4e2a4811e 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 c1eb06fcbb..f8ea010247 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 853434d4b7..b17e8e1a5b 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 47cd340afb..43172bd25b 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 ddebf23793..6021299d64 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 f0d8856beb..25ca921ae8 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 54beb1c4d6..22a10753f5 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 2051e0c863..2605948947 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 ede37f66a3..9d631644a0 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 8707a993e9..5108203587 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 b85d6d692f..1dd1b9a71a 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 3de54ef8bc..c6cad02d6d 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 13fd1b20e8..dc940ae01a 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 a31eabc21a..6a1a84c28c 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 0a52684303..bfb09e193d 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 21c2fd6822..29080529df 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 415587d6e1..bfb40468bd 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 a77c4f0bbf..619957dbe7 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 afd8a78118..cbabdd5bc7 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 9a8b96333d..6c80a10844 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 970d625b09..ce1dca171e 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 578432fec4..dc601d6e1c 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 43be348408..3c3e9425d3 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 a45c220faf..86588c46a2 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 94bf55badb..5c3879970e 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 0209bc99b2..8bb81ca01d 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 0f68cfbdf7..2e4f9876d9 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 2795991699..d2e02d63b4 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 09acee0670..c2e6c88b51 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 c40fe1fb92..030c3db2ef 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 3599ab775a..9a9a49dfb9 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 e48e9dbe99..8453679b05 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 dc08fc1067..2e89b5c0a2 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 85de4b546b..00dff65c83 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: