From d27216dc4616d80659c0cc5d2a55394e0e1ae874 Mon Sep 17 00:00:00 2001 From: Renaud Chaput <renchap@gmail.com> Date: Tue, 23 May 2023 17:15:17 +0200 Subject: [PATCH] Enforce import order with ESLint (#25096) --- .eslintrc.js | 98 +++++++++---------- app/javascript/mastodon/actions/accounts.js | 1 + .../mastodon/actions/announcements.js | 1 + app/javascript/mastodon/actions/blocks.js | 1 + app/javascript/mastodon/actions/bookmarks.js | 1 + app/javascript/mastodon/actions/compose.js | 5 +- .../mastodon/actions/conversations.js | 1 + app/javascript/mastodon/actions/directory.js | 3 +- app/javascript/mastodon/actions/favourites.js | 1 + app/javascript/mastodon/actions/filters.js | 1 + app/javascript/mastodon/actions/history.js | 1 + .../mastodon/actions/importer/normalizer.js | 3 +- .../mastodon/actions/interactions.js | 1 + app/javascript/mastodon/actions/lists.js | 3 +- app/javascript/mastodon/actions/markers.js | 8 +- app/javascript/mastodon/actions/mutes.js | 1 + .../mastodon/actions/notifications.js | 18 ++-- .../mastodon/actions/pin_statuses.js | 4 +- app/javascript/mastodon/actions/polls.js | 1 + .../actions/push_notifications/index.js | 2 +- .../actions/push_notifications/registerer.js | 7 +- app/javascript/mastodon/actions/reports.js | 1 + app/javascript/mastodon/actions/search.js | 1 + app/javascript/mastodon/actions/server.js | 1 + app/javascript/mastodon/actions/settings.js | 4 +- app/javascript/mastodon/actions/statuses.js | 4 +- app/javascript/mastodon/actions/store.js | 1 + app/javascript/mastodon/actions/streaming.js | 21 ++-- .../mastodon/actions/suggestions.js | 3 +- app/javascript/mastodon/actions/timelines.js | 8 +- app/javascript/mastodon/actions/trends.js | 1 + app/javascript/mastodon/api.js | 1 + .../__tests__/autosuggest_emoji-test.jsx | 1 + .../components/__tests__/avatar-test.jsx | 4 +- .../__tests__/avatar_overlay-test.jsx | 4 +- .../components/__tests__/button-test.jsx | 1 + .../__tests__/display_name-test.jsx | 4 +- .../mastodon/components/account.jsx | 26 +++-- .../mastodon/components/admin/Counter.jsx | 10 +- .../mastodon/components/admin/Dimension.jsx | 8 +- .../components/admin/ReportReasonSelector.jsx | 7 +- .../mastodon/components/admin/Retention.jsx | 7 +- .../mastodon/components/admin/Trends.jsx | 7 +- .../mastodon/components/attachment_list.jsx | 8 +- .../mastodon/components/autosuggest_emoji.jsx | 6 +- .../components/autosuggest_hashtag.jsx | 6 +- .../mastodon/components/autosuggest_input.jsx | 12 ++- .../components/autosuggest_textarea.jsx | 15 ++- .../mastodon/components/avatar_composite.jsx | 5 +- app/javascript/mastodon/components/button.jsx | 3 +- app/javascript/mastodon/components/column.jsx | 4 +- .../components/column_back_button.jsx | 8 +- .../components/column_back_button_slim.jsx | 4 +- .../mastodon/components/column_header.jsx | 7 +- .../components/dismissable_banner.jsx | 7 +- .../mastodon/components/dropdown_menu.jsx | 15 ++- .../containers/dropdown_menu_container.js | 1 + .../components/edited_timestamp/index.jsx | 12 ++- .../mastodon/components/error_boundary.jsx | 10 +- .../mastodon/components/hashtag.jsx | 15 ++- .../mastodon/components/inline_account.jsx | 4 +- .../intersection_observer_article.jsx | 5 +- .../mastodon/components/load_gap.jsx | 4 +- .../mastodon/components/load_more.jsx | 5 +- .../mastodon/components/load_pending.jsx | 5 +- .../mastodon/components/media_attachments.jsx | 7 +- .../mastodon/components/media_gallery.jsx | 17 +++- .../mastodon/components/modal_root.jsx | 5 +- .../mastodon/components/navigation_portal.jsx | 6 +- .../picture_in_picture_placeholder.jsx | 11 ++- app/javascript/mastodon/components/poll.jsx | 18 ++-- .../components/regeneration_indicator.jsx | 1 + .../mastodon/components/scrollable_list.jsx | 24 +++-- .../mastodon/components/server_banner.jsx | 8 +- .../mastodon/components/short_number.jsx | 7 +- app/javascript/mastodon/components/status.jsx | 32 +++--- .../mastodon/components/status_action_bar.jsx | 18 ++-- .../mastodon/components/status_content.jsx | 14 ++- .../mastodon/components/status_list.jsx | 13 ++- .../mastodon/containers/account_container.jsx | 8 +- .../mastodon/containers/admin_component.jsx | 4 +- .../mastodon/containers/compose_container.jsx | 15 +-- .../mastodon/containers/domain_container.jsx | 8 +- .../containers/dropdown_menu_container.js | 8 +- ...intersection_observer_article_container.js | 3 +- .../mastodon/containers/mastodon.jsx | 13 ++- .../mastodon/containers/media_container.jsx | 17 ++-- .../mastodon/containers/poll_container.js | 3 +- .../mastodon/containers/status_container.jsx | 44 +++++---- .../mastodon/features/about/index.jsx | 26 ++--- .../account/components/account_note.jsx | 11 ++- .../account/components/featured_tags.jsx | 5 +- .../components/follow_request_note.jsx | 4 +- .../features/account/components/header.jsx | 23 +++-- .../containers/account_note_container.js | 2 + .../containers/featured_tags_container.js | 8 +- .../follow_request_note_container.js | 4 +- .../mastodon/features/account/navigation.jsx | 4 +- .../account_gallery/components/media_item.jsx | 11 ++- .../features/account_gallery/index.jsx | 35 ++++--- .../account_timeline/components/header.jsx | 13 ++- .../components/limited_account_hint.jsx | 9 +- .../components/moved_note.jsx | 7 +- .../containers/header_container.jsx | 19 ++-- .../features/account_timeline/index.jsx | 37 ++++--- .../mastodon/features/audio/index.jsx | 21 ++-- .../mastodon/features/blocks/index.jsx | 22 +++-- .../features/bookmarked_statuses/index.jsx | 9 +- .../closed_registrations_modal/index.jsx | 6 +- .../components/column_settings.jsx | 7 +- .../containers/column_settings_container.js | 5 +- .../features/community_timeline/index.jsx | 26 +++-- .../compose/components/action_bar.jsx | 9 +- .../components/autosuggest_account.jsx | 5 +- .../compose/components/character_counter.jsx | 3 +- .../compose/components/compose_form.jsx | 37 ++++--- .../components/emoji_picker_dropdown.jsx | 14 ++- .../compose/components/language_dropdown.jsx | 15 ++- .../compose/components/navigation_bar.jsx | 15 ++- .../compose/components/poll_button.jsx | 6 +- .../features/compose/components/poll_form.jsx | 14 ++- .../compose/components/privacy_dropdown.jsx | 13 ++- .../compose/components/reply_indicator.jsx | 12 ++- .../features/compose/components/search.jsx | 12 ++- .../compose/components/search_results.jsx | 14 ++- .../compose/components/text_icon_button.jsx | 2 +- .../features/compose/components/upload.jsx | 13 ++- .../compose/components/upload_button.jsx | 9 +- .../compose/components/upload_form.jsx | 5 +- .../compose/components/upload_progress.jsx | 12 ++- .../features/compose/components/warning.jsx | 6 +- .../autosuggest_account_container.js | 3 +- .../containers/compose_form_container.js | 3 +- .../emoji_picker_dropdown_container.js | 9 +- .../containers/language_dropdown_container.js | 8 +- .../containers/navigation_container.js | 9 +- .../containers/poll_button_container.js | 3 +- .../compose/containers/poll_form_container.js | 3 +- .../containers/privacy_dropdown_container.js | 3 +- .../containers/reply_indicator_container.js | 1 + .../compose/containers/search_container.js | 2 + .../containers/search_results_container.js | 6 +- .../containers/sensitive_button_container.jsx | 12 ++- .../containers/spoiler_button_container.js | 8 +- .../containers/upload_button_container.js | 3 +- .../compose/containers/upload_container.js | 3 +- .../containers/upload_form_container.js | 1 + .../containers/upload_progress_container.js | 1 + .../compose/containers/warning_container.jsx | 8 +- .../mastodon/features/compose/index.jsx | 33 ++++--- .../features/compose/util/url_regex.js | 2 +- .../components/conversation.jsx | 17 ++-- .../components/conversations_list.jsx | 7 +- .../containers/conversation_container.js | 11 ++- .../conversations_list_container.js | 3 +- .../features/direct_timeline/index.jsx | 7 +- .../directory/components/account_card.jsx | 26 ++--- .../mastodon/features/directory/index.jsx | 25 +++-- .../mastodon/features/domain_blocks/index.jsx | 27 ++--- .../emoji/__tests__/emoji_index-test.js | 3 +- .../mastodon/features/emoji/emoji.js | 9 +- .../features/emoji/emoji_compressed.js | 9 +- .../features/emoji/emoji_mart_data_light.js | 2 +- .../mastodon/features/emoji/emoji_picker.js | 2 +- .../emoji/emoji_unicode_mapping_light.js | 1 - .../features/explore/components/story.jsx | 6 +- .../mastodon/features/explore/index.jsx | 23 +++-- .../mastodon/features/explore/links.jsx | 16 +-- .../mastodon/features/explore/results.jsx | 20 ++-- .../mastodon/features/explore/statuses.jsx | 12 ++- .../mastodon/features/explore/suggestions.jsx | 15 +-- .../mastodon/features/explore/tags.jsx | 13 ++- .../features/favourited_statuses/index.jsx | 9 +- .../mastodon/features/favourites/index.jsx | 12 ++- .../features/filters/added_to_filter.jsx | 11 ++- .../features/filters/select_filter.jsx | 12 ++- .../components/account_authorize.jsx | 10 +- .../containers/account_authorize_container.js | 3 +- .../features/follow_requests/index.jsx | 20 ++-- .../mastodon/features/followed_tags/index.jsx | 17 ++-- .../mastodon/features/followers/index.jsx | 27 ++--- .../mastodon/features/following/index.jsx | 27 ++--- .../components/announcements.jsx | 27 ++--- .../getting_started/components/trends.jsx | 10 +- .../containers/announcements_container.js | 10 +- .../containers/trends_container.js | 2 + .../features/getting_started/index.jsx | 26 +++-- .../components/column_settings.jsx | 12 ++- .../containers/column_settings_container.js | 3 +- .../features/hashtag_timeline/index.jsx | 33 ++++--- .../components/column_settings.jsx | 7 +- .../containers/column_settings_container.js | 3 +- .../mastodon/features/home_timeline/index.jsx | 30 +++--- .../features/interaction_modal/index.jsx | 12 ++- .../features/keyboard_shortcuts/index.jsx | 12 ++- .../list_adder/components/account.jsx | 10 +- .../features/list_adder/components/list.jsx | 14 ++- .../mastodon/features/list_adder/index.jsx | 16 +-- .../list_editor/components/account.jsx | 13 ++- .../list_editor/components/edit_list_form.jsx | 9 +- .../list_editor/components/search.jsx | 11 ++- .../mastodon/features/list_editor/index.jsx | 21 ++-- .../mastodon/features/list_timeline/index.jsx | 10 +- .../lists/components/new_list_form.jsx | 9 +- .../mastodon/features/lists/index.jsx | 11 ++- .../mastodon/features/mutes/index.jsx | 27 ++--- .../components/clear_column_button.jsx | 4 +- .../components/column_settings.jsx | 10 +- .../notifications/components/filter_bar.jsx | 4 +- .../components/follow_request.jsx | 12 ++- .../components/grant_permission_button.jsx | 3 +- .../notifications/components/notification.jsx | 29 +++--- .../notifications_permission_banner.jsx | 15 +-- .../notifications/components/report.jsx | 5 +- .../components/setting_toggle.jsx | 4 +- .../containers/column_settings_container.js | 12 ++- .../containers/filter_bar_container.js | 3 +- .../containers/follow_request_container.js | 6 +- .../containers/notification_container.js | 5 +- .../mastodon/features/notifications/index.jsx | 43 ++++---- .../components/progress_indicator.jsx | 6 +- .../features/onboarding/components/step.jsx | 3 +- .../mastodon/features/onboarding/follows.jsx | 18 ++-- .../mastodon/features/onboarding/index.jsx | 30 +++--- .../mastodon/features/onboarding/share.jsx | 22 +++-- .../picture_in_picture/components/footer.jsx | 20 ++-- .../picture_in_picture/components/header.jsx | 14 ++- .../features/picture_in_picture/index.jsx | 13 ++- .../features/pinned_statuses/index.jsx | 14 ++- .../features/privacy_policy/index.jsx | 9 +- .../components/column_settings.jsx | 7 +- .../containers/column_settings_container.js | 5 +- .../features/public_timeline/index.jsx | 24 +++-- .../mastodon/features/reblogs/index.jsx | 23 +++-- .../mastodon/features/report/category.jsx | 10 +- .../mastodon/features/report/comment.jsx | 7 +- .../features/report/components/option.jsx | 4 +- .../report/components/status_check_box.jsx | 16 +-- .../containers/status_check_box_container.js | 4 +- .../mastodon/features/report/rules.jsx | 8 +- .../mastodon/features/report/statuses.jsx | 11 ++- .../mastodon/features/report/thanks.jsx | 9 +- .../features/standalone/compose/index.jsx | 3 +- .../features/status/components/action_bar.jsx | 17 ++-- .../features/status/components/card.jsx | 15 ++- .../status/components/detailed_status.jsx | 34 ++++--- .../containers/detailed_status_container.js | 20 ++-- .../mastodon/features/status/index.jsx | 97 +++++++++--------- .../subscribed_languages_modal/index.jsx | 17 ++-- .../ui/components/__tests__/column-test.jsx | 1 + .../features/ui/components/actions_modal.jsx | 5 +- .../features/ui/components/audio_modal.jsx | 8 +- .../features/ui/components/block_modal.jsx | 18 ++-- .../features/ui/components/boost_modal.jsx | 27 ++--- .../features/ui/components/bundle.jsx | 2 +- .../ui/components/bundle_column_error.jsx | 11 ++- .../ui/components/bundle_modal_error.jsx | 3 +- .../features/ui/components/column.jsx | 9 +- .../features/ui/components/column_header.jsx | 4 +- .../features/ui/components/column_link.jsx | 6 +- .../features/ui/components/column_loading.jsx | 3 +- .../features/ui/components/columns_area.jsx | 16 +-- .../ui/components/compare_history_modal.jsx | 16 +-- .../features/ui/components/compose_panel.jsx | 13 ++- .../ui/components/confirmation_modal.jsx | 4 +- .../ui/components/disabled_account_banner.jsx | 12 ++- .../features/ui/components/embed_modal.jsx | 5 +- .../features/ui/components/filter_modal.jsx | 11 ++- .../ui/components/focal_point_modal.jsx | 38 ++++--- .../follow_requests_column_link.jsx | 15 +-- .../features/ui/components/header.jsx | 16 +-- .../features/ui/components/image_loader.jsx | 5 +- .../features/ui/components/image_modal.jsx | 8 +- .../features/ui/components/link_footer.jsx | 12 ++- .../features/ui/components/list_panel.jsx | 8 +- .../features/ui/components/media_modal.jsx | 26 +++-- .../features/ui/components/modal_root.jsx | 32 +++--- .../features/ui/components/mute_modal.jsx | 12 ++- .../ui/components/navigation_panel.jsx | 8 +- .../components/notifications_counter_icon.js | 1 + .../features/ui/components/report_modal.jsx | 19 ++-- .../features/ui/components/sign_in_banner.jsx | 7 +- .../features/ui/components/upload_area.jsx | 9 +- .../features/ui/components/video_modal.jsx | 10 +- .../features/ui/components/zoomable_image.jsx | 6 +- .../ui/containers/bundle_container.js | 3 +- .../ui/containers/columns_area_container.js | 1 + .../ui/containers/loading_bar_container.js | 1 + .../features/ui/containers/modal_container.js | 1 + .../ui/containers/notifications_container.js | 3 + .../ui/containers/status_list_container.js | 8 +- app/javascript/mastodon/features/ui/index.jsx | 47 +++++---- .../features/ui/util/optional_motion.js | 6 +- .../features/ui/util/react_router_helpers.jsx | 7 +- .../features/ui/util/reduced_motion.jsx | 5 +- .../mastodon/features/video/index.jsx | 18 ++-- app/javascript/mastodon/main.jsx | 5 +- app/javascript/mastodon/reducers/accounts.js | 5 +- .../mastodon/reducers/accounts_counters.js | 6 +- .../mastodon/reducers/accounts_map.js | 5 +- app/javascript/mastodon/reducers/alerts.js | 3 +- .../mastodon/reducers/announcements.js | 3 +- app/javascript/mastodon/reducers/compose.js | 9 +- app/javascript/mastodon/reducers/contexts.js | 3 +- .../mastodon/reducers/conversations.js | 6 +- .../mastodon/reducers/custom_emojis.js | 3 +- .../mastodon/reducers/domain_lists.js | 3 +- .../mastodon/reducers/dropdown_menu.js | 1 + app/javascript/mastodon/reducers/filters.js | 5 +- .../mastodon/reducers/followed_tags.js | 3 +- .../mastodon/reducers/height_cache.js | 1 + app/javascript/mastodon/reducers/history.js | 3 +- .../mastodon/reducers/list_adder.js | 1 + .../mastodon/reducers/list_editor.js | 1 + app/javascript/mastodon/reducers/lists.js | 3 +- app/javascript/mastodon/reducers/markers.js | 3 +- .../mastodon/reducers/media_attachments.js | 3 +- app/javascript/mastodon/reducers/meta.js | 5 +- app/javascript/mastodon/reducers/modal.js | 5 +- .../mastodon/reducers/notifications.js | 32 +++--- .../mastodon/reducers/picture_in_picture.js | 1 + app/javascript/mastodon/reducers/polls.js | 3 +- .../mastodon/reducers/push_notifications.js | 5 +- .../mastodon/reducers/relationships.js | 12 ++- app/javascript/mastodon/reducers/search.js | 13 +-- app/javascript/mastodon/reducers/server.js | 3 +- app/javascript/mastodon/reducers/settings.js | 9 +- .../mastodon/reducers/status_lists.js | 43 ++++---- app/javascript/mastodon/reducers/statuses.js | 5 +- .../mastodon/reducers/suggestions.js | 9 +- app/javascript/mastodon/reducers/tags.js | 3 +- app/javascript/mastodon/reducers/timelines.js | 13 +-- app/javascript/mastodon/reducers/trends.js | 3 +- .../mastodon/reducers/user_lists.js | 42 ++++---- app/javascript/mastodon/selectors/index.js | 4 +- .../mastodon/service_worker/entry.js | 1 + .../service_worker/web_push_notifications.js | 2 + app/javascript/packs/admin.jsx | 6 +- app/javascript/packs/application.js | 2 +- app/javascript/packs/public.jsx | 29 +++--- app/javascript/packs/share.jsx | 9 +- app/javascript/packs/sign_up.js | 3 +- .../packs/two_factor_authentication.js | 3 +- config/webpack/configuration.js | 3 +- config/webpack/development.js | 3 +- config/webpack/generateLocalePacks.js | 3 +- config/webpack/production.js | 8 +- config/webpack/rules/babel.js | 1 + config/webpack/rules/file.js | 1 + config/webpack/rules/index.js | 2 +- config/webpack/rules/node_modules.js | 1 + config/webpack/shared.js | 8 +- config/webpack/tests.js | 1 + config/webpack/translationRunner.js | 2 + streaming/index.js | 13 +-- 355 files changed, 2304 insertions(+), 1366 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 774109367..2b0907b1d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -198,6 +198,55 @@ module.exports = { 'import/no-useless-path-segments': 'error', 'import/no-webpack-loader-syntax': 'error', + 'import/order': [ + 'error', + { + alphabetize: { order: 'asc' }, + 'newlines-between': 'always', + groups: [ + 'builtin', + 'external', + 'internal', + 'parent', + ['index', 'sibling'], + 'object', + ], + pathGroups: [ + // React core packages + { + pattern: '{react,react-dom,react-dom/client,prop-types}', + group: 'builtin', + position: 'after', + }, + // I18n + { + pattern: '{react-intl,intl-messageformat}', + group: 'builtin', + position: 'after', + }, + // Common React utilities + { + pattern: '{classnames,react-helmet,react-router-dom}', + group: 'external', + position: 'before', + }, + // Immutable / Redux / data store + { + pattern: '{immutable,react-redux,react-immutable-proptypes,react-immutable-pure-component,reselect}', + group: 'external', + position: 'before', + }, + // Internal packages + { + pattern: '{mastodon/**}', + group: 'internal', + position: 'after', + }, + ], + pathGroupsExcludedImportTypes: [], + }, + ], + 'promise/always-return': 'off', 'promise/catch-or-return': [ 'error', @@ -286,55 +335,6 @@ module.exports = { rules: { 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'], - 'import/order': [ - 'error', - { - alphabetize: { order: 'asc' }, - 'newlines-between': 'always', - groups: [ - 'builtin', - 'external', - 'internal', - 'parent', - ['index', 'sibling'], - 'object', - ], - pathGroups: [ - // React core packages - { - pattern: '{react,react-dom,prop-types}', - group: 'builtin', - position: 'after', - }, - // I18n - { - pattern: 'react-intl', - group: 'builtin', - position: 'after', - }, - // Common React utilities - { - pattern: '{classnames,react-helmet}', - group: 'external', - position: 'before', - }, - // Immutable / Redux / data store - { - pattern: '{immutable,react-redux,react-immutable-proptypes,react-immutable-pure-component,reselect}', - group: 'external', - position: 'before', - }, - // Internal packages - { - pattern: '{mastodon/**}', - group: 'internal', - position: 'after', - }, - ], - pathGroupsExcludedImportTypes: [], - }, - ], - '@typescript-eslint/consistent-type-definitions': ['warn', 'interface'], '@typescript-eslint/consistent-type-exports': 'error', '@typescript-eslint/consistent-type-imports': 'error', diff --git a/app/javascript/mastodon/actions/accounts.js b/app/javascript/mastodon/actions/accounts.js index 88407ae6c..3a85393d6 100644 --- a/app/javascript/mastodon/actions/accounts.js +++ b/app/javascript/mastodon/actions/accounts.js @@ -1,4 +1,5 @@ import api, { getLinks } from '../api'; + import { importFetchedAccount, importFetchedAccounts } from './importer'; export const ACCOUNT_FETCH_REQUEST = 'ACCOUNT_FETCH_REQUEST'; diff --git a/app/javascript/mastodon/actions/announcements.js b/app/javascript/mastodon/actions/announcements.js index 586dcfd33..339c5f3ad 100644 --- a/app/javascript/mastodon/actions/announcements.js +++ b/app/javascript/mastodon/actions/announcements.js @@ -1,4 +1,5 @@ import api from '../api'; + import { normalizeAnnouncement } from './importer/normalizer'; export const ANNOUNCEMENTS_FETCH_REQUEST = 'ANNOUNCEMENTS_FETCH_REQUEST'; diff --git a/app/javascript/mastodon/actions/blocks.js b/app/javascript/mastodon/actions/blocks.js index 192aa3ce4..66421ed45 100644 --- a/app/javascript/mastodon/actions/blocks.js +++ b/app/javascript/mastodon/actions/blocks.js @@ -1,4 +1,5 @@ import api, { getLinks } from '../api'; + import { fetchRelationships } from './accounts'; import { importFetchedAccounts } from './importer'; import { openModal } from './modal'; diff --git a/app/javascript/mastodon/actions/bookmarks.js b/app/javascript/mastodon/actions/bookmarks.js index 3c8eec546..0b16f61e6 100644 --- a/app/javascript/mastodon/actions/bookmarks.js +++ b/app/javascript/mastodon/actions/bookmarks.js @@ -1,4 +1,5 @@ import api, { getLinks } from '../api'; + import { importFetchedStatuses } from './importer'; export const BOOKMARKED_STATUSES_FETCH_REQUEST = 'BOOKMARKED_STATUSES_FETCH_REQUEST'; diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index bf504b88a..22454cf3d 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -1,9 +1,12 @@ +import { defineMessages } from 'react-intl'; + import axios from 'axios'; import { throttle } from 'lodash'; -import { defineMessages } from 'react-intl'; + import api from 'mastodon/api'; import { search as emojiSearch } from 'mastodon/features/emoji/emoji_mart_search_light'; import { tagHistory } from 'mastodon/settings'; + import { showAlert, showAlertForError } from './alerts'; import { useEmoji } from './emojis'; import { importFetchedAccounts, importFetchedStatus } from './importer'; diff --git a/app/javascript/mastodon/actions/conversations.js b/app/javascript/mastodon/actions/conversations.js index 4ef654b1f..8c4c4529f 100644 --- a/app/javascript/mastodon/actions/conversations.js +++ b/app/javascript/mastodon/actions/conversations.js @@ -1,4 +1,5 @@ import api, { getLinks } from '../api'; + import { importFetchedAccounts, importFetchedStatuses, diff --git a/app/javascript/mastodon/actions/directory.js b/app/javascript/mastodon/actions/directory.js index 4b2b6dd56..cda63f2b5 100644 --- a/app/javascript/mastodon/actions/directory.js +++ b/app/javascript/mastodon/actions/directory.js @@ -1,6 +1,7 @@ import api from '../api'; -import { importFetchedAccounts } from './importer'; + import { fetchRelationships } from './accounts'; +import { importFetchedAccounts } from './importer'; export const DIRECTORY_FETCH_REQUEST = 'DIRECTORY_FETCH_REQUEST'; export const DIRECTORY_FETCH_SUCCESS = 'DIRECTORY_FETCH_SUCCESS'; diff --git a/app/javascript/mastodon/actions/favourites.js b/app/javascript/mastodon/actions/favourites.js index 7388e0c58..2d4d4e620 100644 --- a/app/javascript/mastodon/actions/favourites.js +++ b/app/javascript/mastodon/actions/favourites.js @@ -1,4 +1,5 @@ import api, { getLinks } from '../api'; + import { importFetchedStatuses } from './importer'; export const FAVOURITED_STATUSES_FETCH_REQUEST = 'FAVOURITED_STATUSES_FETCH_REQUEST'; diff --git a/app/javascript/mastodon/actions/filters.js b/app/javascript/mastodon/actions/filters.js index e9c609fc8..3774ee042 100644 --- a/app/javascript/mastodon/actions/filters.js +++ b/app/javascript/mastodon/actions/filters.js @@ -1,4 +1,5 @@ import api from '../api'; + import { openModal } from './modal'; export const FILTERS_FETCH_REQUEST = 'FILTERS_FETCH_REQUEST'; diff --git a/app/javascript/mastodon/actions/history.js b/app/javascript/mastodon/actions/history.js index c142aaf61..52401b7dc 100644 --- a/app/javascript/mastodon/actions/history.js +++ b/app/javascript/mastodon/actions/history.js @@ -1,4 +1,5 @@ import api from '../api'; + import { importFetchedAccounts } from './importer'; export const HISTORY_FETCH_REQUEST = 'HISTORY_FETCH_REQUEST'; diff --git a/app/javascript/mastodon/actions/importer/normalizer.js b/app/javascript/mastodon/actions/importer/normalizer.js index 8a22f83fa..61062fd2c 100644 --- a/app/javascript/mastodon/actions/importer/normalizer.js +++ b/app/javascript/mastodon/actions/importer/normalizer.js @@ -1,7 +1,8 @@ import escapeTextContentForBrowser from 'escape-html'; + import emojify from '../../features/emoji/emoji'; -import { unescapeHTML } from '../../utils/html'; import { expandSpoilers } from '../../initial_state'; +import { unescapeHTML } from '../../utils/html'; const domParser = new DOMParser(); diff --git a/app/javascript/mastodon/actions/interactions.js b/app/javascript/mastodon/actions/interactions.js index bc35736ff..092a67ea7 100644 --- a/app/javascript/mastodon/actions/interactions.js +++ b/app/javascript/mastodon/actions/interactions.js @@ -1,4 +1,5 @@ import api from '../api'; + import { importFetchedAccounts, importFetchedStatus } from './importer'; export const REBLOG_REQUEST = 'REBLOG_REQUEST'; diff --git a/app/javascript/mastodon/actions/lists.js b/app/javascript/mastodon/actions/lists.js index 5ab922436..2faa54b95 100644 --- a/app/javascript/mastodon/actions/lists.js +++ b/app/javascript/mastodon/actions/lists.js @@ -1,6 +1,7 @@ import api from '../api'; -import { importFetchedAccounts } from './importer'; + import { showAlertForError } from './alerts'; +import { importFetchedAccounts } from './importer'; export const LIST_FETCH_REQUEST = 'LIST_FETCH_REQUEST'; export const LIST_FETCH_SUCCESS = 'LIST_FETCH_SUCCESS'; diff --git a/app/javascript/mastodon/actions/markers.js b/app/javascript/mastodon/actions/markers.js index b23ecccc3..cfc329a8b 100644 --- a/app/javascript/mastodon/actions/markers.js +++ b/app/javascript/mastodon/actions/markers.js @@ -1,8 +1,10 @@ -import api from '../api'; -import { debounce } from 'lodash'; -import { compareId } from '../compare_id'; import { List as ImmutableList } from 'immutable'; +import { debounce } from 'lodash'; + +import api from '../api'; +import { compareId } from '../compare_id'; + export const MARKERS_FETCH_REQUEST = 'MARKERS_FETCH_REQUEST'; export const MARKERS_FETCH_SUCCESS = 'MARKERS_FETCH_SUCCESS'; export const MARKERS_FETCH_FAIL = 'MARKERS_FETCH_FAIL'; diff --git a/app/javascript/mastodon/actions/mutes.js b/app/javascript/mastodon/actions/mutes.js index cbc42a67e..e61a14af2 100644 --- a/app/javascript/mastodon/actions/mutes.js +++ b/app/javascript/mastodon/actions/mutes.js @@ -1,4 +1,5 @@ import api, { getLinks } from '../api'; + import { fetchRelationships } from './accounts'; import { importFetchedAccounts } from './importer'; import { openModal } from './modal'; diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 0c58f8d15..c040edb58 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -1,5 +1,15 @@ -import api, { getLinks } from '../api'; import IntlMessageFormat from 'intl-messageformat'; +import { defineMessages } from 'react-intl'; + +import { List as ImmutableList } from 'immutable'; + +import { compareId } from 'mastodon/compare_id'; +import { usePendingItems as preferPendingItems } from 'mastodon/initial_state'; + +import api, { getLinks } from '../api'; +import { unescapeHTML } from '../utils/html'; +import { requestNotificationPermission } from '../utils/notifications'; + import { fetchFollowRequests, fetchRelationships } from './accounts'; import { importFetchedAccount, @@ -9,12 +19,6 @@ import { } from './importer'; import { submitMarkers } from './markers'; import { saveSettings } from './settings'; -import { defineMessages } from 'react-intl'; -import { List as ImmutableList } from 'immutable'; -import { unescapeHTML } from '../utils/html'; -import { usePendingItems as preferPendingItems } from 'mastodon/initial_state'; -import { compareId } from 'mastodon/compare_id'; -import { requestNotificationPermission } from '../utils/notifications'; export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE'; export const NOTIFICATIONS_UPDATE_NOOP = 'NOTIFICATIONS_UPDATE_NOOP'; diff --git a/app/javascript/mastodon/actions/pin_statuses.js b/app/javascript/mastodon/actions/pin_statuses.js index 1e4bd37bf..baa10d156 100644 --- a/app/javascript/mastodon/actions/pin_statuses.js +++ b/app/javascript/mastodon/actions/pin_statuses.js @@ -1,8 +1,8 @@ import api from '../api'; -import { importFetchedStatuses } from './importer'; - import { me } from '../initial_state'; +import { importFetchedStatuses } from './importer'; + export const PINNED_STATUSES_FETCH_REQUEST = 'PINNED_STATUSES_FETCH_REQUEST'; export const PINNED_STATUSES_FETCH_SUCCESS = 'PINNED_STATUSES_FETCH_SUCCESS'; export const PINNED_STATUSES_FETCH_FAIL = 'PINNED_STATUSES_FETCH_FAIL'; diff --git a/app/javascript/mastodon/actions/polls.js b/app/javascript/mastodon/actions/polls.js index 8e8b82df5..a37410dc9 100644 --- a/app/javascript/mastodon/actions/polls.js +++ b/app/javascript/mastodon/actions/polls.js @@ -1,4 +1,5 @@ import api from '../api'; + import { importFetchedPoll } from './importer'; export const POLL_VOTE_REQUEST = 'POLL_VOTE_REQUEST'; diff --git a/app/javascript/mastodon/actions/push_notifications/index.js b/app/javascript/mastodon/actions/push_notifications/index.js index 9dcc4bd4b..46b63867f 100644 --- a/app/javascript/mastodon/actions/push_notifications/index.js +++ b/app/javascript/mastodon/actions/push_notifications/index.js @@ -1,5 +1,5 @@ -import { setAlerts } from './setter'; import { saveSettings } from './registerer'; +import { setAlerts } from './setter'; export function changeAlerts(path, value) { return dispatch => { diff --git a/app/javascript/mastodon/actions/push_notifications/registerer.js b/app/javascript/mastodon/actions/push_notifications/registerer.js index b491f85c2..b3d3850e3 100644 --- a/app/javascript/mastodon/actions/push_notifications/registerer.js +++ b/app/javascript/mastodon/actions/push_notifications/registerer.js @@ -1,8 +1,9 @@ import api from '../../api'; -import { decode as decodeBase64 } from '../../utils/base64'; -import { pushNotificationsSetting } from '../../settings'; -import { setBrowserSupport, setSubscription, clearSubscription } from './setter'; import { me } from '../../initial_state'; +import { pushNotificationsSetting } from '../../settings'; +import { decode as decodeBase64 } from '../../utils/base64'; + +import { setBrowserSupport, setSubscription, clearSubscription } from './setter'; // Taken from https://www.npmjs.com/package/web-push const urlBase64ToUint8Array = (base64String) => { diff --git a/app/javascript/mastodon/actions/reports.js b/app/javascript/mastodon/actions/reports.js index fbe5b3791..b3f9bf1ac 100644 --- a/app/javascript/mastodon/actions/reports.js +++ b/app/javascript/mastodon/actions/reports.js @@ -1,4 +1,5 @@ import api from '../api'; + import { openModal } from './modal'; export const REPORT_SUBMIT_REQUEST = 'REPORT_SUBMIT_REQUEST'; diff --git a/app/javascript/mastodon/actions/search.js b/app/javascript/mastodon/actions/search.js index 605a457a2..94e7f2ed7 100644 --- a/app/javascript/mastodon/actions/search.js +++ b/app/javascript/mastodon/actions/search.js @@ -1,4 +1,5 @@ import api from '../api'; + import { fetchRelationships } from './accounts'; import { importFetchedAccounts, importFetchedStatuses } from './importer'; diff --git a/app/javascript/mastodon/actions/server.js b/app/javascript/mastodon/actions/server.js index 091af0f0f..bd784906d 100644 --- a/app/javascript/mastodon/actions/server.js +++ b/app/javascript/mastodon/actions/server.js @@ -1,4 +1,5 @@ import api from '../api'; + import { importFetchedAccount } from './importer'; export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST'; diff --git a/app/javascript/mastodon/actions/settings.js b/app/javascript/mastodon/actions/settings.js index 6ae001b6f..3685b0684 100644 --- a/app/javascript/mastodon/actions/settings.js +++ b/app/javascript/mastodon/actions/settings.js @@ -1,5 +1,7 @@ -import api from '../api'; import { debounce } from 'lodash'; + +import api from '../api'; + import { showAlertForError } from './alerts'; export const SETTING_CHANGE = 'SETTING_CHANGE'; diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 275280a53..84a1271b8 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -1,8 +1,8 @@ import api from '../api'; -import { deleteFromTimelines } from './timelines'; -import { importFetchedStatus, importFetchedStatuses, importFetchedAccount } from './importer'; import { ensureComposeIsVisible, setComposeToStatus } from './compose'; +import { importFetchedStatus, importFetchedStatuses, importFetchedAccount } from './importer'; +import { deleteFromTimelines } from './timelines'; export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST'; export const STATUS_FETCH_SUCCESS = 'STATUS_FETCH_SUCCESS'; diff --git a/app/javascript/mastodon/actions/store.js b/app/javascript/mastodon/actions/store.js index b3030467b..6b0743439 100644 --- a/app/javascript/mastodon/actions/store.js +++ b/app/javascript/mastodon/actions/store.js @@ -1,4 +1,5 @@ import { Iterable, fromJS } from 'immutable'; + import { hydrateCompose } from './compose'; import { importFetchedAccounts } from './importer'; diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index 7831f261e..562e72655 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -1,6 +1,17 @@ // @ts-check +import { getLocale } from '../locales'; import { connectStream } from '../stream'; + +import { + fetchAnnouncements, + updateAnnouncements, + updateReaction as updateAnnouncementsReaction, + deleteAnnouncement, +} from './announcements'; +import { updateConversations } from './conversations'; +import { updateNotifications, expandNotifications } from './notifications'; +import { updateStatus } from './statuses'; import { updateTimeline, deleteFromTimelines, @@ -12,16 +23,6 @@ import { fillCommunityTimelineGaps, fillListTimelineGaps, } from './timelines'; -import { updateNotifications, expandNotifications } from './notifications'; -import { updateConversations } from './conversations'; -import { updateStatus } from './statuses'; -import { - fetchAnnouncements, - updateAnnouncements, - updateReaction as updateAnnouncementsReaction, - deleteAnnouncement, -} from './announcements'; -import { getLocale } from '../locales'; const { messages } = getLocale(); diff --git a/app/javascript/mastodon/actions/suggestions.js b/app/javascript/mastodon/actions/suggestions.js index 9e8cd1ea4..870a31102 100644 --- a/app/javascript/mastodon/actions/suggestions.js +++ b/app/javascript/mastodon/actions/suggestions.js @@ -1,6 +1,7 @@ import api from '../api'; -import { importFetchedAccounts } from './importer'; + import { fetchRelationships } from './accounts'; +import { importFetchedAccounts } from './importer'; export const SUGGESTIONS_FETCH_REQUEST = 'SUGGESTIONS_FETCH_REQUEST'; export const SUGGESTIONS_FETCH_SUCCESS = 'SUGGESTIONS_FETCH_SUCCESS'; diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js index e9e3a8e24..96dc4a2a1 100644 --- a/app/javascript/mastodon/actions/timelines.js +++ b/app/javascript/mastodon/actions/timelines.js @@ -1,10 +1,12 @@ -import { importFetchedStatus, importFetchedStatuses } from './importer'; -import { submitMarkers } from './markers'; -import api, { getLinks } from 'mastodon/api'; import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; + +import api, { getLinks } from 'mastodon/api'; import { compareId } from 'mastodon/compare_id'; import { usePendingItems as preferPendingItems } from 'mastodon/initial_state'; +import { importFetchedStatus, importFetchedStatuses } from './importer'; +import { submitMarkers } from './markers'; + export const TIMELINE_UPDATE = 'TIMELINE_UPDATE'; export const TIMELINE_DELETE = 'TIMELINE_DELETE'; export const TIMELINE_CLEAR = 'TIMELINE_CLEAR'; diff --git a/app/javascript/mastodon/actions/trends.js b/app/javascript/mastodon/actions/trends.js index edda0b5b5..d31442388 100644 --- a/app/javascript/mastodon/actions/trends.js +++ b/app/javascript/mastodon/actions/trends.js @@ -1,4 +1,5 @@ import api, { getLinks } from '../api'; + import { importFetchedStatuses } from './importer'; export const TRENDS_TAGS_FETCH_REQUEST = 'TRENDS_TAGS_FETCH_REQUEST'; diff --git a/app/javascript/mastodon/api.js b/app/javascript/mastodon/api.js index 42b64d6cc..1c171a1c4 100644 --- a/app/javascript/mastodon/api.js +++ b/app/javascript/mastodon/api.js @@ -2,6 +2,7 @@ import axios from 'axios'; import LinkHeader from 'http-link-header'; + import ready from './ready'; /** diff --git a/app/javascript/mastodon/components/__tests__/autosuggest_emoji-test.jsx b/app/javascript/mastodon/components/__tests__/autosuggest_emoji-test.jsx index 80aa33a18..2603420ae 100644 --- a/app/javascript/mastodon/components/__tests__/autosuggest_emoji-test.jsx +++ b/app/javascript/mastodon/components/__tests__/autosuggest_emoji-test.jsx @@ -1,4 +1,5 @@ import renderer from 'react-test-renderer'; + import AutosuggestEmoji from '../autosuggest_emoji'; describe('<AutosuggestEmoji />', () => { diff --git a/app/javascript/mastodon/components/__tests__/avatar-test.jsx b/app/javascript/mastodon/components/__tests__/avatar-test.jsx index b20c6f4e3..21c3ae580 100644 --- a/app/javascript/mastodon/components/__tests__/avatar-test.jsx +++ b/app/javascript/mastodon/components/__tests__/avatar-test.jsx @@ -1,5 +1,7 @@ -import renderer from 'react-test-renderer'; import { fromJS } from 'immutable'; + +import renderer from 'react-test-renderer'; + import { Avatar } from '../avatar'; describe('<Avatar />', () => { diff --git a/app/javascript/mastodon/components/__tests__/avatar_overlay-test.jsx b/app/javascript/mastodon/components/__tests__/avatar_overlay-test.jsx index c03a9aa9d..99a440af7 100644 --- a/app/javascript/mastodon/components/__tests__/avatar_overlay-test.jsx +++ b/app/javascript/mastodon/components/__tests__/avatar_overlay-test.jsx @@ -1,5 +1,7 @@ -import renderer from 'react-test-renderer'; import { fromJS } from 'immutable'; + +import renderer from 'react-test-renderer'; + import { AvatarOverlay } from '../avatar_overlay'; describe('<AvatarOverlay', () => { diff --git a/app/javascript/mastodon/components/__tests__/button-test.jsx b/app/javascript/mastodon/components/__tests__/button-test.jsx index 82d307e84..6de961f78 100644 --- a/app/javascript/mastodon/components/__tests__/button-test.jsx +++ b/app/javascript/mastodon/components/__tests__/button-test.jsx @@ -1,5 +1,6 @@ import { render, fireEvent, screen } from '@testing-library/react'; import renderer from 'react-test-renderer'; + import Button from '../button'; describe('<Button />', () => { diff --git a/app/javascript/mastodon/components/__tests__/display_name-test.jsx b/app/javascript/mastodon/components/__tests__/display_name-test.jsx index a1e6da87a..05a0f4717 100644 --- a/app/javascript/mastodon/components/__tests__/display_name-test.jsx +++ b/app/javascript/mastodon/components/__tests__/display_name-test.jsx @@ -1,5 +1,7 @@ -import renderer from 'react-test-renderer'; import { fromJS } from 'immutable'; + +import renderer from 'react-test-renderer'; + import { DisplayName } from '../display_name'; describe('<DisplayName />', () => { diff --git a/app/javascript/mastodon/components/account.jsx b/app/javascript/mastodon/components/account.jsx index f40f5324d..07cb72be9 100644 --- a/app/javascript/mastodon/components/account.jsx +++ b/app/javascript/mastodon/components/account.jsx @@ -1,18 +1,24 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl } from 'react-intl'; + +import classNames from 'classnames'; +import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { counterRenderer } from 'mastodon/components/common_counter'; +import { EmptyAccount } from 'mastodon/components/empty_account'; +import ShortNumber from 'mastodon/components/short_number'; +import { VerifiedBadge } from 'mastodon/components/verified_badge'; + +import { me } from '../initial_state'; + import { Avatar } from './avatar'; import { DisplayName } from './display_name'; import { IconButton } from './icon_button'; -import { defineMessages, injectIntl } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me } from '../initial_state'; import { RelativeTimestamp } from './relative_timestamp'; -import { Link } from 'react-router-dom'; -import { counterRenderer } from 'mastodon/components/common_counter'; -import ShortNumber from 'mastodon/components/short_number'; -import classNames from 'classnames'; -import { VerifiedBadge } from 'mastodon/components/verified_badge'; -import { EmptyAccount } from 'mastodon/components/empty_account'; const messages = defineMessages({ follow: { id: 'account.follow', defaultMessage: 'Follow' }, diff --git a/app/javascript/mastodon/components/admin/Counter.jsx b/app/javascript/mastodon/components/admin/Counter.jsx index 9ae8b2ce4..6ce23c9f0 100644 --- a/app/javascript/mastodon/components/admin/Counter.jsx +++ b/app/javascript/mastodon/components/admin/Counter.jsx @@ -1,9 +1,13 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import api from 'mastodon/api'; +import { PureComponent } from 'react'; + import { FormattedNumber } from 'react-intl'; -import { Sparklines, SparklinesCurve } from 'react-sparklines'; + import classNames from 'classnames'; + +import { Sparklines, SparklinesCurve } from 'react-sparklines'; + +import api from 'mastodon/api'; import { Skeleton } from 'mastodon/components/skeleton'; const percIncrease = (a, b) => { diff --git a/app/javascript/mastodon/components/admin/Dimension.jsx b/app/javascript/mastodon/components/admin/Dimension.jsx index 1b4203a18..bfda6c93d 100644 --- a/app/javascript/mastodon/components/admin/Dimension.jsx +++ b/app/javascript/mastodon/components/admin/Dimension.jsx @@ -1,9 +1,11 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import api from 'mastodon/api'; +import { PureComponent } from 'react'; + import { FormattedNumber } from 'react-intl'; -import { roundTo10 } from 'mastodon/utils/numbers'; + +import api from 'mastodon/api'; import { Skeleton } from 'mastodon/components/skeleton'; +import { roundTo10 } from 'mastodon/utils/numbers'; export default class Dimension extends PureComponent { diff --git a/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx b/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx index ae0bfeef7..df298f333 100644 --- a/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx +++ b/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx @@ -1,9 +1,12 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import api from 'mastodon/api'; +import { PureComponent } from 'react'; + import { injectIntl, defineMessages } from 'react-intl'; + import classNames from 'classnames'; +import api from 'mastodon/api'; + const messages = defineMessages({ other: { id: 'report.categories.other', defaultMessage: 'Other' }, spam: { id: 'report.categories.spam', defaultMessage: 'Spam' }, diff --git a/app/javascript/mastodon/components/admin/Retention.jsx b/app/javascript/mastodon/components/admin/Retention.jsx index e51e0d15b..7bef96d8c 100644 --- a/app/javascript/mastodon/components/admin/Retention.jsx +++ b/app/javascript/mastodon/components/admin/Retention.jsx @@ -1,8 +1,11 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import api from 'mastodon/api'; +import { PureComponent } from 'react'; + import { FormattedMessage, FormattedNumber, FormattedDate } from 'react-intl'; + import classNames from 'classnames'; + +import api from 'mastodon/api'; import { roundTo10 } from 'mastodon/utils/numbers'; const dateForCohort = cohort => { diff --git a/app/javascript/mastodon/components/admin/Trends.jsx b/app/javascript/mastodon/components/admin/Trends.jsx index 30b781e7c..49976276e 100644 --- a/app/javascript/mastodon/components/admin/Trends.jsx +++ b/app/javascript/mastodon/components/admin/Trends.jsx @@ -1,8 +1,11 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import api from 'mastodon/api'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; + import classNames from 'classnames'; + +import api from 'mastodon/api'; import Hashtag from 'mastodon/components/hashtag'; export default class Trends extends PureComponent { diff --git a/app/javascript/mastodon/components/attachment_list.jsx b/app/javascript/mastodon/components/attachment_list.jsx index 502f68c7e..71cb645c5 100644 --- a/app/javascript/mastodon/components/attachment_list.jsx +++ b/app/javascript/mastodon/components/attachment_list.jsx @@ -1,8 +1,12 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; + import { FormattedMessage } from 'react-intl'; + import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + import { Icon } from 'mastodon/components/icon'; const filename = url => url.split('/').pop().split('#')[0].split('?')[0]; diff --git a/app/javascript/mastodon/components/autosuggest_emoji.jsx b/app/javascript/mastodon/components/autosuggest_emoji.jsx index 8afbdd9cb..5fa946f70 100644 --- a/app/javascript/mastodon/components/autosuggest_emoji.jsx +++ b/app/javascript/mastodon/components/autosuggest_emoji.jsx @@ -1,8 +1,10 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import unicodeMapping from '../features/emoji/emoji_unicode_mapping_light'; +import { PureComponent } from 'react'; + import { assetHost } from 'mastodon/utils/config'; +import unicodeMapping from '../features/emoji/emoji_unicode_mapping_light'; + export default class AutosuggestEmoji extends PureComponent { static propTypes = { diff --git a/app/javascript/mastodon/components/autosuggest_hashtag.jsx b/app/javascript/mastodon/components/autosuggest_hashtag.jsx index 4fd23ec9a..b509f48df 100644 --- a/app/javascript/mastodon/components/autosuggest_hashtag.jsx +++ b/app/javascript/mastodon/components/autosuggest_hashtag.jsx @@ -1,8 +1,10 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ShortNumber from 'mastodon/components/short_number'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; +import ShortNumber from 'mastodon/components/short_number'; + export default class AutosuggestHashtag extends PureComponent { static propTypes = { diff --git a/app/javascript/mastodon/components/autosuggest_input.jsx b/app/javascript/mastodon/components/autosuggest_input.jsx index 2e0e8002b..890f94928 100644 --- a/app/javascript/mastodon/components/autosuggest_input.jsx +++ b/app/javascript/mastodon/components/autosuggest_input.jsx @@ -1,10 +1,14 @@ +import PropTypes from 'prop-types'; + +import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + import AutosuggestAccountContainer from '../features/compose/containers/autosuggest_account_container'; + import AutosuggestEmoji from './autosuggest_emoji'; import AutosuggestHashtag from './autosuggest_hashtag'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import classNames from 'classnames'; const textAtCursorMatchesToken = (str, caretPosition, searchTokens) => { let word; diff --git a/app/javascript/mastodon/components/autosuggest_textarea.jsx b/app/javascript/mastodon/components/autosuggest_textarea.jsx index 4c9091b33..463d2e94c 100644 --- a/app/javascript/mastodon/components/autosuggest_textarea.jsx +++ b/app/javascript/mastodon/components/autosuggest_textarea.jsx @@ -1,11 +1,16 @@ +import PropTypes from 'prop-types'; + +import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import Textarea from 'react-textarea-autosize'; + import AutosuggestAccountContainer from '../features/compose/containers/autosuggest_account_container'; + import AutosuggestEmoji from './autosuggest_emoji'; import AutosuggestHashtag from './autosuggest_hashtag'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import Textarea from 'react-textarea-autosize'; -import classNames from 'classnames'; const textAtCursorMatchesToken = (str, caretPosition) => { let word; diff --git a/app/javascript/mastodon/components/avatar_composite.jsx b/app/javascript/mastodon/components/avatar_composite.jsx index 5b15e2a73..c736f1dd5 100644 --- a/app/javascript/mastodon/components/avatar_composite.jsx +++ b/app/javascript/mastodon/components/avatar_composite.jsx @@ -1,7 +1,10 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import ImmutablePropTypes from 'react-immutable-proptypes'; + import { autoPlayGif } from '../initial_state'; + import { Avatar } from './avatar'; export default class AvatarComposite extends PureComponent { diff --git a/app/javascript/mastodon/components/button.jsx b/app/javascript/mastodon/components/button.jsx index 1ad6cf481..faa6cb291 100644 --- a/app/javascript/mastodon/components/button.jsx +++ b/app/javascript/mastodon/components/button.jsx @@ -1,5 +1,6 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import classNames from 'classnames'; export default class Button extends PureComponent { diff --git a/app/javascript/mastodon/components/column.jsx b/app/javascript/mastodon/components/column.jsx index b57a08bd0..7e7eaa411 100644 --- a/app/javascript/mastodon/components/column.jsx +++ b/app/javascript/mastodon/components/column.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { supportsPassiveEvents } from 'detect-passive-events'; + import { scrollTop } from '../scroll'; const listenerOptions = supportsPassiveEvents ? { passive: true } : false; diff --git a/app/javascript/mastodon/components/column_back_button.jsx b/app/javascript/mastodon/components/column_back_button.jsx index bdd979ffa..38ffa607a 100644 --- a/app/javascript/mastodon/components/column_back_button.jsx +++ b/app/javascript/mastodon/components/column_back_button.jsx @@ -1,9 +1,11 @@ -import { PureComponent } from 'react'; -import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; -import { Icon } from 'mastodon/components/icon'; +import { PureComponent } from 'react'; import { createPortal } from 'react-dom'; +import { FormattedMessage } from 'react-intl'; + +import { Icon } from 'mastodon/components/icon'; + export default class ColumnBackButton extends PureComponent { static contextTypes = { diff --git a/app/javascript/mastodon/components/column_back_button_slim.jsx b/app/javascript/mastodon/components/column_back_button_slim.jsx index acdbce13a..f8060e5a5 100644 --- a/app/javascript/mastodon/components/column_back_button_slim.jsx +++ b/app/javascript/mastodon/components/column_back_button_slim.jsx @@ -1,7 +1,9 @@ import { FormattedMessage } from 'react-intl'; -import ColumnBackButton from './column_back_button'; + import { Icon } from 'mastodon/components/icon'; +import ColumnBackButton from './column_back_button'; + export default class ColumnBackButtonSlim extends ColumnBackButton { render () { diff --git a/app/javascript/mastodon/components/column_header.jsx b/app/javascript/mastodon/components/column_header.jsx index f66d6d06d..89eade262 100644 --- a/app/javascript/mastodon/components/column_header.jsx +++ b/app/javascript/mastodon/components/column_header.jsx @@ -1,8 +1,11 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; import { createPortal } from 'react-dom'; -import classNames from 'classnames'; + import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; + +import classNames from 'classnames'; + import { Icon } from 'mastodon/components/icon'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/components/dismissable_banner.jsx b/app/javascript/mastodon/components/dismissable_banner.jsx index 8e4849792..5aecc88b1 100644 --- a/app/javascript/mastodon/components/dismissable_banner.jsx +++ b/app/javascript/mastodon/components/dismissable_banner.jsx @@ -1,9 +1,12 @@ -import { PureComponent } from 'react'; -import { IconButton } from './icon_button'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { injectIntl, defineMessages } from 'react-intl'; + import { bannerSettings } from 'mastodon/settings'; +import { IconButton } from './icon_button'; + const messages = defineMessages({ dismiss: { id: 'dismissable_banner.dismiss', defaultMessage: 'Dismiss' }, }); diff --git a/app/javascript/mastodon/components/dropdown_menu.jsx b/app/javascript/mastodon/components/dropdown_menu.jsx index a0023166b..4cadf907e 100644 --- a/app/javascript/mastodon/components/dropdown_menu.jsx +++ b/app/javascript/mastodon/components/dropdown_menu.jsx @@ -1,12 +1,17 @@ -import { PureComponent, cloneElement, Children } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { IconButton } from './icon_button'; -import Overlay from 'react-overlays/Overlay'; -import { supportsPassiveEvents } from 'detect-passive-events'; +import { PureComponent, cloneElement, Children } from 'react'; + import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; + +import { supportsPassiveEvents } from 'detect-passive-events'; +import Overlay from 'react-overlays/Overlay'; + import { CircularProgress } from 'mastodon/components/loading_indicator'; +import { IconButton } from './icon_button'; + const listenerOptions = supportsPassiveEvents ? { passive: true, capture: true } : true; let id = 0; diff --git a/app/javascript/mastodon/components/edited_timestamp/containers/dropdown_menu_container.js b/app/javascript/mastodon/components/edited_timestamp/containers/dropdown_menu_container.js index 16fe77a73..a0896d985 100644 --- a/app/javascript/mastodon/components/edited_timestamp/containers/dropdown_menu_container.js +++ b/app/javascript/mastodon/components/edited_timestamp/containers/dropdown_menu_container.js @@ -1,4 +1,5 @@ import { connect } from 'react-redux'; + import { openDropdownMenu, closeDropdownMenu } from 'mastodon/actions/dropdown_menu'; import { fetchHistory } from 'mastodon/actions/history'; import DropdownMenu from 'mastodon/components/dropdown_menu'; diff --git a/app/javascript/mastodon/components/edited_timestamp/index.jsx b/app/javascript/mastodon/components/edited_timestamp/index.jsx index 12ebfe056..42d3d93fe 100644 --- a/app/javascript/mastodon/components/edited_timestamp/index.jsx +++ b/app/javascript/mastodon/components/edited_timestamp/index.jsx @@ -1,12 +1,16 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { FormattedMessage, injectIntl } from 'react-intl'; -import { Icon } from 'mastodon/components/icon'; -import DropdownMenu from './containers/dropdown_menu_container'; + import { connect } from 'react-redux'; + import { openModal } from 'mastodon/actions/modal'; -import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; +import { Icon } from 'mastodon/components/icon'; import InlineAccount from 'mastodon/components/inline_account'; +import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; + +import DropdownMenu from './containers/dropdown_menu_container'; const mapDispatchToProps = (dispatch, { statusId }) => ({ diff --git a/app/javascript/mastodon/components/error_boundary.jsx b/app/javascript/mastodon/components/error_boundary.jsx index 43cce0679..7fea08e85 100644 --- a/app/javascript/mastodon/components/error_boundary.jsx +++ b/app/javascript/mastodon/components/error_boundary.jsx @@ -1,10 +1,14 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; -import { version, source_url } from 'mastodon/initial_state'; -import StackTrace from 'stacktrace-js'; + import { Helmet } from 'react-helmet'; +import StackTrace from 'stacktrace-js'; + +import { version, source_url } from 'mastodon/initial_state'; + export default class ErrorBoundary extends PureComponent { static propTypes = { diff --git a/app/javascript/mastodon/components/hashtag.jsx b/app/javascript/mastodon/components/hashtag.jsx index ea88a1702..4a7b9ef71 100644 --- a/app/javascript/mastodon/components/hashtag.jsx +++ b/app/javascript/mastodon/components/hashtag.jsx @@ -1,13 +1,18 @@ // @ts-check -import { Component } from 'react'; -import { Sparklines, SparklinesCurve } from 'react-sparklines'; -import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { Component } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import classNames from 'classnames'; import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; + +import { Sparklines, SparklinesCurve } from 'react-sparklines'; + import ShortNumber from 'mastodon/components/short_number'; import { Skeleton } from 'mastodon/components/skeleton'; -import classNames from 'classnames'; class SilentErrorBoundary extends Component { diff --git a/app/javascript/mastodon/components/inline_account.jsx b/app/javascript/mastodon/components/inline_account.jsx index 4366af3c7..f9767c29d 100644 --- a/app/javascript/mastodon/components/inline_account.jsx +++ b/app/javascript/mastodon/components/inline_account.jsx @@ -1,8 +1,10 @@ import { PureComponent } from 'react'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { makeGetAccount } from 'mastodon/selectors'; + import { Avatar } from 'mastodon/components/avatar'; +import { makeGetAccount } from 'mastodon/selectors'; const makeMapStateToProps = () => { const getAccount = makeGetAccount(); diff --git a/app/javascript/mastodon/components/intersection_observer_article.jsx b/app/javascript/mastodon/components/intersection_observer_article.jsx index faba01b80..7b03ffb88 100644 --- a/app/javascript/mastodon/components/intersection_observer_article.jsx +++ b/app/javascript/mastodon/components/intersection_observer_article.jsx @@ -1,7 +1,8 @@ -import { cloneElement, Component } from 'react'; import PropTypes from 'prop-types'; -import scheduleIdleTask from '../features/ui/util/schedule_idle_task'; +import { cloneElement, Component } from 'react'; + import getRectFromEntry from '../features/ui/util/get_rect_from_entry'; +import scheduleIdleTask from '../features/ui/util/schedule_idle_task'; // Diff these props in the "unrendered" state const updateOnPropsForUnrendered = ['id', 'index', 'listLength', 'cachedHeight']; diff --git a/app/javascript/mastodon/components/load_gap.jsx b/app/javascript/mastodon/components/load_gap.jsx index e4da2748a..c4e563804 100644 --- a/app/javascript/mastodon/components/load_gap.jsx +++ b/app/javascript/mastodon/components/load_gap.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { injectIntl, defineMessages } from 'react-intl'; + import { Icon } from 'mastodon/components/icon'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/components/load_more.jsx b/app/javascript/mastodon/components/load_more.jsx index b077b8928..6b7ecdea0 100644 --- a/app/javascript/mastodon/components/load_more.jsx +++ b/app/javascript/mastodon/components/load_more.jsx @@ -1,6 +1,7 @@ -import { PureComponent } from 'react'; -import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage } from 'react-intl'; export default class LoadMore extends PureComponent { diff --git a/app/javascript/mastodon/components/load_pending.jsx b/app/javascript/mastodon/components/load_pending.jsx index d05e6b1dc..e9c1a9783 100644 --- a/app/javascript/mastodon/components/load_pending.jsx +++ b/app/javascript/mastodon/components/load_pending.jsx @@ -1,6 +1,7 @@ -import { PureComponent } from 'react'; -import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage } from 'react-intl'; export default class LoadPending extends PureComponent { diff --git a/app/javascript/mastodon/components/media_attachments.jsx b/app/javascript/mastodon/components/media_attachments.jsx index 055be5d28..d2f171243 100644 --- a/app/javascript/mastodon/components/media_attachments.jsx +++ b/app/javascript/mastodon/components/media_attachments.jsx @@ -1,10 +1,13 @@ import PropTypes from 'prop-types'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { MediaGallery, Video, Audio } from 'mastodon/features/ui/util/async-components'; -import Bundle from 'mastodon/features/ui/components/bundle'; + import noop from 'lodash/noop'; +import Bundle from 'mastodon/features/ui/components/bundle'; +import { MediaGallery, Video, Audio } from 'mastodon/features/ui/util/async-components'; + export default class MediaAttachments extends ImmutablePureComponent { static propTypes = { diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index 90345c867..152426656 100644 --- a/app/javascript/mastodon/components/media_gallery.jsx +++ b/app/javascript/mastodon/components/media_gallery.jsx @@ -1,14 +1,21 @@ -import { PureComponent } from 'react'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { is } from 'immutable'; -import { IconButton } from './icon_button'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import classNames from 'classnames'; -import { autoPlayGif, cropImages, displayMedia, useBlurhash } from '../initial_state'; + +import { is } from 'immutable'; +import ImmutablePropTypes from 'react-immutable-proptypes'; + import { debounce } from 'lodash'; + import { Blurhash } from 'mastodon/components/blurhash'; +import { autoPlayGif, cropImages, displayMedia, useBlurhash } from '../initial_state'; + +import { IconButton } from './icon_button'; + const messages = defineMessages({ toggle_visible: { id: 'media_gallery.toggle_visible', defaultMessage: '{number, plural, one {Hide image} other {Hide images}}' }, }); diff --git a/app/javascript/mastodon/components/modal_root.jsx b/app/javascript/mastodon/components/modal_root.jsx index b735f7734..724ab500f 100644 --- a/app/javascript/mastodon/components/modal_root.jsx +++ b/app/javascript/mastodon/components/modal_root.jsx @@ -1,8 +1,9 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import 'wicg-inert'; -import { createBrowserHistory } from 'history'; import { multiply } from 'color-blend'; +import { createBrowserHistory } from 'history'; export default class ModalRoot extends PureComponent { diff --git a/app/javascript/mastodon/components/navigation_portal.jsx b/app/javascript/mastodon/components/navigation_portal.jsx index 671ad1f6e..a64bc7b1d 100644 --- a/app/javascript/mastodon/components/navigation_portal.jsx +++ b/app/javascript/mastodon/components/navigation_portal.jsx @@ -1,8 +1,10 @@ import { PureComponent } from 'react'; + import { Switch, Route, withRouter } from 'react-router-dom'; -import { showTrends } from 'mastodon/initial_state'; -import Trends from 'mastodon/features/getting_started/containers/trends_container'; + import AccountNavigation from 'mastodon/features/account/navigation'; +import Trends from 'mastodon/features/getting_started/containers/trends_container'; +import { showTrends } from 'mastodon/initial_state'; const DefaultNavigation = () => ( showTrends ? ( diff --git a/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx b/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx index e44aafd09..756a97722 100644 --- a/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx +++ b/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx @@ -1,10 +1,13 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { Icon } from 'mastodon/components/icon'; -import { removePictureInPicture } from 'mastodon/actions/picture_in_picture'; -import { connect } from 'react-redux'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; +import { connect } from 'react-redux'; + +import { removePictureInPicture } from 'mastodon/actions/picture_in_picture'; +import { Icon } from 'mastodon/components/icon'; + class PictureInPicturePlaceholder extends PureComponent { static propTypes = { diff --git a/app/javascript/mastodon/components/poll.jsx b/app/javascript/mastodon/components/poll.jsx index 506b9d3f7..84e4e660a 100644 --- a/app/javascript/mastodon/components/poll.jsx +++ b/app/javascript/mastodon/components/poll.jsx @@ -1,14 +1,20 @@ import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import classNames from 'classnames'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import classNames from 'classnames'; -import Motion from 'mastodon/features/ui/util/optional_motion'; -import spring from 'react-motion/lib/spring'; + import escapeTextContentForBrowser from 'escape-html'; -import emojify from 'mastodon/features/emoji/emoji'; -import { RelativeTimestamp } from './relative_timestamp'; +import spring from 'react-motion/lib/spring'; + import { Icon } from 'mastodon/components/icon'; +import emojify from 'mastodon/features/emoji/emoji'; +import Motion from 'mastodon/features/ui/util/optional_motion'; + +import { RelativeTimestamp } from './relative_timestamp'; const messages = defineMessages({ closed: { diff --git a/app/javascript/mastodon/components/regeneration_indicator.jsx b/app/javascript/mastodon/components/regeneration_indicator.jsx index dbefc7a9b..052e25f25 100644 --- a/app/javascript/mastodon/components/regeneration_indicator.jsx +++ b/app/javascript/mastodon/components/regeneration_indicator.jsx @@ -1,4 +1,5 @@ import { FormattedMessage } from 'react-intl'; + import illustration from 'mastodon/../images/elephant_ui_working.svg'; const RegenerationIndicator = () => ( diff --git a/app/javascript/mastodon/components/scrollable_list.jsx b/app/javascript/mastodon/components/scrollable_list.jsx index 6fed295da..9a0c4c8a7 100644 --- a/app/javascript/mastodon/components/scrollable_list.jsx +++ b/app/javascript/mastodon/components/scrollable_list.jsx @@ -1,17 +1,23 @@ -import { Children, cloneElement, PureComponent } from 'react'; -import ScrollContainer from 'mastodon/containers/scroll_container'; import PropTypes from 'prop-types'; +import { Children, cloneElement, PureComponent } from 'react'; + +import classNames from 'classnames'; + +import { List as ImmutableList } from 'immutable'; +import { connect } from 'react-redux'; + +import { supportsPassiveEvents } from 'detect-passive-events'; +import { throttle } from 'lodash'; + +import ScrollContainer from 'mastodon/containers/scroll_container'; + import IntersectionObserverArticleContainer from '../containers/intersection_observer_article_container'; +import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../features/ui/util/fullscreen'; +import IntersectionObserverWrapper from '../features/ui/util/intersection_observer_wrapper'; + import LoadMore from './load_more'; import LoadPending from './load_pending'; -import IntersectionObserverWrapper from '../features/ui/util/intersection_observer_wrapper'; -import { throttle } from 'lodash'; -import { List as ImmutableList } from 'immutable'; -import classNames from 'classnames'; -import { supportsPassiveEvents } from 'detect-passive-events'; -import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../features/ui/util/fullscreen'; import LoadingIndicator from './loading_indicator'; -import { connect } from 'react-redux'; const MOUSE_IDLE_DELAY = 300; diff --git a/app/javascript/mastodon/components/server_banner.jsx b/app/javascript/mastodon/components/server_banner.jsx index 9d41700a1..998237860 100644 --- a/app/javascript/mastodon/components/server_banner.jsx +++ b/app/javascript/mastodon/components/server_banner.jsx @@ -1,14 +1,18 @@ import PropTypes from 'prop-types'; import { PureComponent } from 'react'; + import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; + +import { Link } from 'react-router-dom'; + import { connect } from 'react-redux'; + import { fetchServer } from 'mastodon/actions/server'; +import { ServerHeroImage } from 'mastodon/components/server_hero_image'; import ShortNumber from 'mastodon/components/short_number'; import { Skeleton } from 'mastodon/components/skeleton'; import Account from 'mastodon/containers/account_container'; import { domain } from 'mastodon/initial_state'; -import { ServerHeroImage } from 'mastodon/components/server_hero_image'; -import { Link } from 'react-router-dom'; const messages = defineMessages({ aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' }, diff --git a/app/javascript/mastodon/components/short_number.jsx b/app/javascript/mastodon/components/short_number.jsx index 550ed7d0a..b7ac4f5fd 100644 --- a/app/javascript/mastodon/components/short_number.jsx +++ b/app/javascript/mastodon/components/short_number.jsx @@ -1,7 +1,10 @@ -import { memo } from 'react'; import PropTypes from 'prop-types'; -import { toShortNumber, pluralReady, DECIMAL_UNITS } from '../utils/numbers'; +import { memo } from 'react'; + import { FormattedMessage, FormattedNumber } from 'react-intl'; + +import { toShortNumber, pluralReady, DECIMAL_UNITS } from '../utils/numbers'; + // @ts-check /** diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 536ac1dd2..d8a21f64a 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -1,25 +1,31 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { Avatar } from './avatar'; -import { AvatarOverlay } from './avatar_overlay'; -import { RelativeTimestamp } from './relative_timestamp'; -import { DisplayName } from './display_name'; -import StatusContent from './status_content'; -import StatusActionBar from './status_action_bar'; -import AttachmentList from './attachment_list'; -import Card from '../features/status/components/card'; + import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { MediaGallery, Video, Audio } from '../features/ui/util/async-components'; -import { HotKeys } from 'react-hotkeys'; + import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { HotKeys } from 'react-hotkeys'; + import { Icon } from 'mastodon/components/icon'; -import { displayMedia } from '../initial_state'; import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; +import Card from '../features/status/components/card'; // We use the component (and not the container) since we do not want // to use the progress bar to show download progress import Bundle from '../features/ui/components/bundle'; +import { MediaGallery, Video, Audio } from '../features/ui/util/async-components'; +import { displayMedia } from '../initial_state'; + +import AttachmentList from './attachment_list'; +import { Avatar } from './avatar'; +import { AvatarOverlay } from './avatar_overlay'; +import { DisplayName } from './display_name'; +import { RelativeTimestamp } from './relative_timestamp'; +import StatusActionBar from './status_action_bar'; +import StatusContent from './status_content'; export const textForScreenReader = (intl, status, rebloggedByText = false) => { const displayName = status.getIn(['account', 'display_name']); diff --git a/app/javascript/mastodon/components/status_action_bar.jsx b/app/javascript/mastodon/components/status_action_bar.jsx index 2e83597da..83c5ef0e4 100644 --- a/app/javascript/mastodon/components/status_action_bar.jsx +++ b/app/javascript/mastodon/components/status_action_bar.jsx @@ -1,14 +1,20 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import { IconButton } from './icon_button'; -import DropdownMenuContainer from '../containers/dropdown_menu_container'; + import { defineMessages, injectIntl } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me } from '../initial_state'; + import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions'; +import DropdownMenuContainer from '../containers/dropdown_menu_container'; +import { me } from '../initial_state'; + +import { IconButton } from './icon_button'; + const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' }, diff --git a/app/javascript/mastodon/components/status_content.jsx b/app/javascript/mastodon/components/status_content.jsx index ffaaae28e..4c8ae7e15 100644 --- a/app/javascript/mastodon/components/status_content.jsx +++ b/app/javascript/mastodon/components/status_content.jsx @@ -1,12 +1,16 @@ -import { PureComponent } from 'react'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { FormattedMessage, injectIntl } from 'react-intl'; -import { Link } from 'react-router-dom'; -import { connect } from 'react-redux'; + import classnames from 'classnames'; -import PollContainer from 'mastodon/containers/poll_container'; +import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; + import { Icon } from 'mastodon/components/icon'; +import PollContainer from 'mastodon/containers/poll_container'; import { autoPlayGif, languages as preloadedLanguages } from 'mastodon/initial_state'; const MAX_HEIGHT = 706; // 22px * 32 (+ 2px padding at the top) diff --git a/app/javascript/mastodon/components/status_list.jsx b/app/javascript/mastodon/components/status_list.jsx index cd646be6e..ff9c98b4e 100644 --- a/app/javascript/mastodon/components/status_list.jsx +++ b/app/javascript/mastodon/components/status_list.jsx @@ -1,11 +1,16 @@ -import { debounce } from 'lodash'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import StatusContainer from '../containers/status_container'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { debounce } from 'lodash'; + +import RegenerationIndicator from 'mastodon/components/regeneration_indicator'; + +import StatusContainer from '../containers/status_container'; + import LoadGap from './load_gap'; import ScrollableList from './scrollable_list'; -import RegenerationIndicator from 'mastodon/components/regeneration_indicator'; export default class StatusList extends ImmutablePureComponent { diff --git a/app/javascript/mastodon/containers/account_container.jsx b/app/javascript/mastodon/containers/account_container.jsx index f3d3e039c..09a755e87 100644 --- a/app/javascript/mastodon/containers/account_container.jsx +++ b/app/javascript/mastodon/containers/account_container.jsx @@ -1,7 +1,7 @@ -import { connect } from 'react-redux'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { makeGetAccount } from '../selectors'; -import Account from '../components/account'; + +import { connect } from 'react-redux'; + import { followAccount, unfollowAccount, @@ -12,7 +12,9 @@ import { } from '../actions/accounts'; import { openModal } from '../actions/modal'; import { initMuteModal } from '../actions/mutes'; +import Account from '../components/account'; import { unfollowModal } from '../initial_state'; +import { makeGetAccount } from '../selectors'; const messages = defineMessages({ unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, diff --git a/app/javascript/mastodon/containers/admin_component.jsx b/app/javascript/mastodon/containers/admin_component.jsx index 188485d40..f5fa53f08 100644 --- a/app/javascript/mastodon/containers/admin_component.jsx +++ b/app/javascript/mastodon/containers/admin_component.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { IntlProvider, addLocaleData } from 'react-intl'; + import { getLocale } from '../locales'; const { localeData, messages } = getLocale(); diff --git a/app/javascript/mastodon/containers/compose_container.jsx b/app/javascript/mastodon/containers/compose_container.jsx index 289369f07..b93399aa9 100644 --- a/app/javascript/mastodon/containers/compose_container.jsx +++ b/app/javascript/mastodon/containers/compose_container.jsx @@ -1,13 +1,16 @@ -import { PureComponent } from 'react'; -import { Provider } from 'react-redux'; import PropTypes from 'prop-types'; -import { store } from '../store'; -import { hydrateStore } from '../actions/store'; +import { PureComponent } from 'react'; + import { IntlProvider, addLocaleData } from 'react-intl'; -import { getLocale } from '../locales'; + +import { Provider } from 'react-redux'; + +import { fetchCustomEmojis } from '../actions/custom_emojis'; +import { hydrateStore } from '../actions/store'; import Compose from '../features/standalone/compose'; import initialState from '../initial_state'; -import { fetchCustomEmojis } from '../actions/custom_emojis'; +import { getLocale } from '../locales'; +import { store } from '../store'; const { localeData, messages } = getLocale(); addLocaleData(localeData); diff --git a/app/javascript/mastodon/containers/domain_container.jsx b/app/javascript/mastodon/containers/domain_container.jsx index bc2a44849..4828445c4 100644 --- a/app/javascript/mastodon/containers/domain_container.jsx +++ b/app/javascript/mastodon/containers/domain_container.jsx @@ -1,8 +1,10 @@ -import { connect } from 'react-redux'; -import { blockDomain, unblockDomain } from '../actions/domain_blocks'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { Domain } from '../components/domain'; + +import { connect } from 'react-redux'; + +import { blockDomain, unblockDomain } from '../actions/domain_blocks'; import { openModal } from '../actions/modal'; +import { Domain } from '../components/domain'; const messages = defineMessages({ blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Block entire domain' }, diff --git a/app/javascript/mastodon/containers/dropdown_menu_container.js b/app/javascript/mastodon/containers/dropdown_menu_container.js index bedd1c63f..5dd5273b2 100644 --- a/app/javascript/mastodon/containers/dropdown_menu_container.js +++ b/app/javascript/mastodon/containers/dropdown_menu_container.js @@ -1,7 +1,9 @@ -import { openDropdownMenu, closeDropdownMenu } from '../actions/dropdown_menu'; -import { fetchRelationships } from 'mastodon/actions/accounts'; -import { openModal, closeModal } from '../actions/modal'; import { connect } from 'react-redux'; + +import { fetchRelationships } from 'mastodon/actions/accounts'; + +import { openDropdownMenu, closeDropdownMenu } from '../actions/dropdown_menu'; +import { openModal, closeModal } from '../actions/modal'; import DropdownMenu from '../components/dropdown_menu'; import { isUserTouching } from '../is_mobile'; diff --git a/app/javascript/mastodon/containers/intersection_observer_article_container.js b/app/javascript/mastodon/containers/intersection_observer_article_container.js index b6f162199..8d9bda670 100644 --- a/app/javascript/mastodon/containers/intersection_observer_article_container.js +++ b/app/javascript/mastodon/containers/intersection_observer_article_container.js @@ -1,6 +1,7 @@ import { connect } from 'react-redux'; -import IntersectionObserverArticle from '../components/intersection_observer_article'; + import { setHeight } from '../actions/height_cache'; +import IntersectionObserverArticle from '../components/intersection_observer_article'; const makeMapStateToProps = (state, props) => ({ cachedHeight: state.getIn(['height_cache', props.saveHeightKey, props.id]), diff --git a/app/javascript/mastodon/containers/mastodon.jsx b/app/javascript/mastodon/containers/mastodon.jsx index 319425e3f..5be163f5a 100644 --- a/app/javascript/mastodon/containers/mastodon.jsx +++ b/app/javascript/mastodon/containers/mastodon.jsx @@ -1,18 +1,23 @@ import PropTypes from 'prop-types'; import { PureComponent } from 'react'; -import { Helmet } from 'react-helmet'; + import { IntlProvider, addLocaleData } from 'react-intl'; -import { Provider as ReduxProvider } from 'react-redux'; + +import { Helmet } from 'react-helmet'; import { BrowserRouter, Route } from 'react-router-dom'; + +import { Provider as ReduxProvider } from 'react-redux'; + import { ScrollContext } from 'react-router-scroll-4'; -import { store } from 'mastodon/store'; -import UI from 'mastodon/features/ui'; + import { fetchCustomEmojis } from 'mastodon/actions/custom_emojis'; import { hydrateStore } from 'mastodon/actions/store'; import { connectUserStream } from 'mastodon/actions/streaming'; import ErrorBoundary from 'mastodon/components/error_boundary'; +import UI from 'mastodon/features/ui'; import initialState, { title as siteTitle } from 'mastodon/initial_state'; import { getLocale } from 'mastodon/locales'; +import { store } from 'mastodon/store'; const { localeData, messages } = getLocale(); addLocaleData(localeData); diff --git a/app/javascript/mastodon/containers/media_container.jsx b/app/javascript/mastodon/containers/media_container.jsx index ede8641d6..7ed8f1719 100644 --- a/app/javascript/mastodon/containers/media_container.jsx +++ b/app/javascript/mastodon/containers/media_container.jsx @@ -1,18 +1,21 @@ +import PropTypes from 'prop-types'; import { PureComponent } from 'react'; import { createPortal } from 'react-dom'; -import PropTypes from 'prop-types'; + import { IntlProvider, addLocaleData } from 'react-intl'; + import { fromJS } from 'immutable'; -import { getLocale } from 'mastodon/locales'; -import { getScrollbarWidth } from 'mastodon/utils/scrollbar'; -import MediaGallery from 'mastodon/components/media_gallery'; -import Poll from 'mastodon/components/poll'; + import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; +import MediaGallery from 'mastodon/components/media_gallery'; import ModalRoot from 'mastodon/components/modal_root'; +import Poll from 'mastodon/components/poll'; +import Audio from 'mastodon/features/audio'; +import Card from 'mastodon/features/status/components/card'; import MediaModal from 'mastodon/features/ui/components/media_modal'; import Video from 'mastodon/features/video'; -import Card from 'mastodon/features/status/components/card'; -import Audio from 'mastodon/features/audio'; +import { getLocale } from 'mastodon/locales'; +import { getScrollbarWidth } from 'mastodon/utils/scrollbar'; const { localeData, messages } = getLocale(); addLocaleData(localeData); diff --git a/app/javascript/mastodon/containers/poll_container.js b/app/javascript/mastodon/containers/poll_container.js index f40ba8fac..848234543 100644 --- a/app/javascript/mastodon/containers/poll_container.js +++ b/app/javascript/mastodon/containers/poll_container.js @@ -1,8 +1,9 @@ import { connect } from 'react-redux'; + import { debounce } from 'lodash'; -import Poll from 'mastodon/components/poll'; import { fetchPoll, vote } from 'mastodon/actions/polls'; +import Poll from 'mastodon/components/poll'; const mapDispatchToProps = (dispatch, { pollId }) => ({ refresh: debounce( diff --git a/app/javascript/mastodon/containers/status_container.jsx b/app/javascript/mastodon/containers/status_container.jsx index 45b384028..5e5f75d09 100644 --- a/app/javascript/mastodon/containers/status_container.jsx +++ b/app/javascript/mastodon/containers/status_container.jsx @@ -1,11 +1,26 @@ +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import { connect } from 'react-redux'; -import Status from '../components/status'; -import { makeGetStatus, makeGetPictureInPicture } from '../selectors'; + +import { + unmuteAccount, + unblockAccount, +} from '../actions/accounts'; +import { showAlertForError } from '../actions/alerts'; +import { initBlockModal } from '../actions/blocks'; +import { initBoostModal } from '../actions/boosts'; import { replyCompose, mentionCompose, directCompose, } from '../actions/compose'; +import { + blockDomain, + unblockDomain, +} from '../actions/domain_blocks'; +import { + initAddFilter, +} from '../actions/filters'; import { reblog, favourite, @@ -16,6 +31,10 @@ import { pin, unpin, } from '../actions/interactions'; +import { openModal } from '../actions/modal'; +import { initMuteModal } from '../actions/mutes'; +import { deployPictureInPicture } from '../actions/picture_in_picture'; +import { initReport } from '../actions/reports'; import { muteStatus, unmuteStatus, @@ -27,26 +46,9 @@ import { translateStatus, undoStatusTranslation, } from '../actions/statuses'; -import { - unmuteAccount, - unblockAccount, -} from '../actions/accounts'; -import { - blockDomain, - unblockDomain, -} from '../actions/domain_blocks'; -import { - initAddFilter, -} from '../actions/filters'; -import { initMuteModal } from '../actions/mutes'; -import { initBlockModal } from '../actions/blocks'; -import { initBoostModal } from '../actions/boosts'; -import { initReport } from '../actions/reports'; -import { openModal } from '../actions/modal'; -import { deployPictureInPicture } from '../actions/picture_in_picture'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import Status from '../components/status'; import { boostModal, deleteModal } from '../initial_state'; -import { showAlertForError } from '../actions/alerts'; +import { makeGetStatus, makeGetPictureInPicture } from '../selectors'; const messages = defineMessages({ deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' }, diff --git a/app/javascript/mastodon/features/about/index.jsx b/app/javascript/mastodon/features/about/index.jsx index 5697eb25b..73d42479b 100644 --- a/app/javascript/mastodon/features/about/index.jsx +++ b/app/javascript/mastodon/features/about/index.jsx @@ -1,17 +1,21 @@ -import { PureComponent } from 'react'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import Column from 'mastodon/components/column'; -import LinkFooter from 'mastodon/features/ui/components/link_footer'; -import { Helmet } from 'react-helmet'; -import { fetchServer, fetchExtendedDescription, fetchDomainBlocks } from 'mastodon/actions/server'; -import Account from 'mastodon/containers/account_container'; -import { Skeleton } from 'mastodon/components/skeleton'; -import { Icon } from 'mastodon/components/icon'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import classNames from 'classnames'; +import { Helmet } from 'react-helmet'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; + +import { fetchServer, fetchExtendedDescription, fetchDomainBlocks } from 'mastodon/actions/server'; +import Column from 'mastodon/components/column'; +import { Icon } from 'mastodon/components/icon'; import { ServerHeroImage } from 'mastodon/components/server_hero_image'; +import { Skeleton } from 'mastodon/components/skeleton'; +import Account from 'mastodon/containers/account_container'; +import LinkFooter from 'mastodon/features/ui/components/link_footer'; const messages = defineMessages({ title: { id: 'column.about', defaultMessage: 'About' }, diff --git a/app/javascript/mastodon/features/account/components/account_note.jsx b/app/javascript/mastodon/features/account/components/account_note.jsx index 02746b4f0..bab523acf 100644 --- a/app/javascript/mastodon/features/account/components/account_note.jsx +++ b/app/javascript/mastodon/features/account/components/account_note.jsx @@ -1,10 +1,13 @@ -import { PureComponent } from 'react'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import Textarea from 'react-textarea-autosize'; + import { is } from 'immutable'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import Textarea from 'react-textarea-autosize'; const messages = defineMessages({ placeholder: { id: 'account_note.placeholder', defaultMessage: 'Click to add a note' }, diff --git a/app/javascript/mastodon/features/account/components/featured_tags.jsx b/app/javascript/mastodon/features/account/components/featured_tags.jsx index ad903e215..bdc7c0e1a 100644 --- a/app/javascript/mastodon/features/account/components/featured_tags.jsx +++ b/app/javascript/mastodon/features/account/components/featured_tags.jsx @@ -1,7 +1,10 @@ import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import Hashtag from 'mastodon/components/hashtag'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/account/components/follow_request_note.jsx b/app/javascript/mastodon/features/account/components/follow_request_note.jsx index beaed10ce..3b6994433 100644 --- a/app/javascript/mastodon/features/account/components/follow_request_note.jsx +++ b/app/javascript/mastodon/features/account/components/follow_request_note.jsx @@ -1,6 +1,8 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import { FormattedMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; + import { Icon } from 'mastodon/components/icon'; export default class FollowRequestNote extends ImmutablePureComponent { diff --git a/app/javascript/mastodon/features/account/components/header.jsx b/app/javascript/mastodon/features/account/components/header.jsx index 747177c86..6ebb29ab2 100644 --- a/app/javascript/mastodon/features/account/components/header.jsx +++ b/app/javascript/mastodon/features/account/components/header.jsx @@ -1,21 +1,26 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import Button from 'mastodon/components/button'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { autoPlayGif, me, domain } from 'mastodon/initial_state'; + import classNames from 'classnames'; +import { Helmet } from 'react-helmet'; +import { NavLink } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { Avatar } from 'mastodon/components/avatar'; +import Button from 'mastodon/components/button'; +import { counterRenderer } from 'mastodon/components/common_counter'; import { Icon } from 'mastodon/components/icon'; import { IconButton } from 'mastodon/components/icon_button'; -import { Avatar } from 'mastodon/components/avatar'; -import { counterRenderer } from 'mastodon/components/common_counter'; import ShortNumber from 'mastodon/components/short_number'; -import { NavLink } from 'react-router-dom'; import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container'; +import { autoPlayGif, me, domain } from 'mastodon/initial_state'; +import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions'; + import AccountNoteContainer from '../containers/account_note_container'; import FollowRequestNoteContainer from '../containers/follow_request_note_container'; -import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions'; -import { Helmet } from 'react-helmet'; const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, diff --git a/app/javascript/mastodon/features/account/containers/account_note_container.js b/app/javascript/mastodon/features/account/containers/account_note_container.js index 969af553a..9fbe0671c 100644 --- a/app/javascript/mastodon/features/account/containers/account_note_container.js +++ b/app/javascript/mastodon/features/account/containers/account_note_container.js @@ -1,5 +1,7 @@ import { connect } from 'react-redux'; + import { submitAccountNote } from 'mastodon/actions/account_notes'; + import AccountNote from '../components/account_note'; const mapStateToProps = (state, { account }) => ({ diff --git a/app/javascript/mastodon/features/account/containers/featured_tags_container.js b/app/javascript/mastodon/features/account/containers/featured_tags_container.js index 7e206567f..726c805f7 100644 --- a/app/javascript/mastodon/features/account/containers/featured_tags_container.js +++ b/app/javascript/mastodon/features/account/containers/featured_tags_container.js @@ -1,7 +1,9 @@ -import { connect } from 'react-redux'; -import FeaturedTags from '../components/featured_tags'; -import { makeGetAccount } from 'mastodon/selectors'; import { List as ImmutableList } from 'immutable'; +import { connect } from 'react-redux'; + +import { makeGetAccount } from 'mastodon/selectors'; + +import FeaturedTags from '../components/featured_tags'; const mapStateToProps = () => { const getAccount = makeGetAccount(); diff --git a/app/javascript/mastodon/features/account/containers/follow_request_note_container.js b/app/javascript/mastodon/features/account/containers/follow_request_note_container.js index c33c3de59..585594293 100644 --- a/app/javascript/mastodon/features/account/containers/follow_request_note_container.js +++ b/app/javascript/mastodon/features/account/containers/follow_request_note_container.js @@ -1,7 +1,9 @@ import { connect } from 'react-redux'; -import FollowRequestNote from '../components/follow_request_note'; + import { authorizeFollowRequest, rejectFollowRequest } from 'mastodon/actions/accounts'; +import FollowRequestNote from '../components/follow_request_note'; + const mapDispatchToProps = (dispatch, { account }) => ({ onAuthorize () { dispatch(authorizeFollowRequest(account.get('id'))); diff --git a/app/javascript/mastodon/features/account/navigation.jsx b/app/javascript/mastodon/features/account/navigation.jsx index e1558adda..ccebe9043 100644 --- a/app/javascript/mastodon/features/account/navigation.jsx +++ b/app/javascript/mastodon/features/account/navigation.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { connect } from 'react-redux'; + import FeaturedTags from 'mastodon/features/account/containers/featured_tags_container'; import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; diff --git a/app/javascript/mastodon/features/account_gallery/components/media_item.jsx b/app/javascript/mastodon/features/account_gallery/components/media_item.jsx index ffbbe661e..f60be5d54 100644 --- a/app/javascript/mastodon/features/account_gallery/components/media_item.jsx +++ b/app/javascript/mastodon/features/account_gallery/components/media_item.jsx @@ -1,11 +1,14 @@ -import { Blurhash } from 'mastodon/components/blurhash'; -import classNames from 'classnames'; -import { Icon } from 'mastodon/components/icon'; -import { autoPlayGif, displayMedia, useBlurhash } from 'mastodon/initial_state'; import PropTypes from 'prop-types'; + +import classNames from 'classnames'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import { Blurhash } from 'mastodon/components/blurhash'; +import { Icon } from 'mastodon/components/icon'; +import { autoPlayGif, displayMedia, useBlurhash } from 'mastodon/initial_state'; + export default class MediaItem extends ImmutablePureComponent { static propTypes = { diff --git a/app/javascript/mastodon/features/account_gallery/index.jsx b/app/javascript/mastodon/features/account_gallery/index.jsx index 1d9954b66..16fb9ef57 100644 --- a/app/javascript/mastodon/features/account_gallery/index.jsx +++ b/app/javascript/mastodon/features/account_gallery/index.jsx @@ -1,21 +1,26 @@ -import { connect } from 'react-redux'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { lookupAccount, fetchAccount } from 'mastodon/actions/accounts'; -import { expandAccountMediaTimeline } from '../../actions/timelines'; -import LoadingIndicator from 'mastodon/components/loading_indicator'; -import Column from '../ui/components/column'; -import ColumnBackButton from 'mastodon/components/column_back_button'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { getAccountGallery } from 'mastodon/selectors'; -import MediaItem from './components/media_item'; -import HeaderContainer from '../account_timeline/containers/header_container'; -import ScrollContainer from 'mastodon/containers/scroll_container'; -import LoadMore from 'mastodon/components/load_more'; -import { openModal } from 'mastodon/actions/modal'; + import { FormattedMessage } from 'react-intl'; -import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { lookupAccount, fetchAccount } from 'mastodon/actions/accounts'; +import { openModal } from 'mastodon/actions/modal'; +import ColumnBackButton from 'mastodon/components/column_back_button'; +import LoadMore from 'mastodon/components/load_more'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; +import ScrollContainer from 'mastodon/containers/scroll_container'; import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; +import { getAccountGallery } from 'mastodon/selectors'; + +import { expandAccountMediaTimeline } from '../../actions/timelines'; +import HeaderContainer from '../account_timeline/containers/header_container'; +import Column from '../ui/components/column'; + +import MediaItem from './components/media_item'; const mapStateToProps = (state, { params: { acct, id } }) => { const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); diff --git a/app/javascript/mastodon/features/account_timeline/components/header.jsx b/app/javascript/mastodon/features/account_timeline/components/header.jsx index 611efcc5c..be21de591 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.jsx +++ b/app/javascript/mastodon/features/account_timeline/components/header.jsx @@ -1,11 +1,16 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import InnerHeader from '../../account/components/header'; + +import { FormattedMessage } from 'react-intl'; + +import { NavLink } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; + +import InnerHeader from '../../account/components/header'; + import MemorialNote from './memorial_note'; import MovedNote from './moved_note'; -import { FormattedMessage } from 'react-intl'; -import { NavLink } from 'react-router-dom'; export default class Header extends ImmutablePureComponent { diff --git a/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.jsx b/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.jsx index ebe96d7db..4872455e9 100644 --- a/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.jsx +++ b/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.jsx @@ -1,8 +1,11 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; -import { revealAccount } from 'mastodon/actions/accounts'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; + +import { connect } from 'react-redux'; + +import { revealAccount } from 'mastodon/actions/accounts'; import Button from 'mastodon/components/button'; import { domain } from 'mastodon/initial_state'; diff --git a/app/javascript/mastodon/features/account_timeline/components/moved_note.jsx b/app/javascript/mastodon/features/account_timeline/components/moved_note.jsx index 7c8da1c2f..2c996ff76 100644 --- a/app/javascript/mastodon/features/account_timeline/components/moved_note.jsx +++ b/app/javascript/mastodon/features/account_timeline/components/moved_note.jsx @@ -1,9 +1,12 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import { FormattedMessage } from 'react-intl'; + +import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; + import { AvatarOverlay } from '../../../components/avatar_overlay'; import { DisplayName } from '../../../components/display_name'; -import { Link } from 'react-router-dom'; export default class MovedNote extends ImmutablePureComponent { diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.jsx b/app/javascript/mastodon/features/account_timeline/containers/header_container.jsx index 15648612c..6cb8a105c 100644 --- a/app/javascript/mastodon/features/account_timeline/containers/header_container.jsx +++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.jsx @@ -1,6 +1,9 @@ +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import { connect } from 'react-redux'; -import { makeGetAccount, getAccountHidden } from '../../../selectors'; -import Header from '../components/header'; + +import { openURL } from 'mastodon/actions/search'; + import { followAccount, unfollowAccount, @@ -9,18 +12,18 @@ import { pinAccount, unpinAccount, } from '../../../actions/accounts'; -import { openURL } from 'mastodon/actions/search'; +import { initBlockModal } from '../../../actions/blocks'; import { mentionCompose, directCompose, } from '../../../actions/compose'; -import { initMuteModal } from '../../../actions/mutes'; -import { initBlockModal } from '../../../actions/blocks'; -import { initReport } from '../../../actions/reports'; -import { openModal } from '../../../actions/modal'; import { blockDomain, unblockDomain } from '../../../actions/domain_blocks'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { openModal } from '../../../actions/modal'; +import { initMuteModal } from '../../../actions/mutes'; +import { initReport } from '../../../actions/reports'; import { unfollowModal } from '../../../initial_state'; +import { makeGetAccount, getAccountHidden } from '../../../selectors'; +import Header from '../components/header'; const messages = defineMessages({ cancelFollowRequestConfirm: { id: 'confirmations.cancel_follow_request.confirm', defaultMessage: 'Withdraw request' }, diff --git a/app/javascript/mastodon/features/account_timeline/index.jsx b/app/javascript/mastodon/features/account_timeline/index.jsx index 2576d48cf..7bb0152ce 100644 --- a/app/javascript/mastodon/features/account_timeline/index.jsx +++ b/app/javascript/mastodon/features/account_timeline/index.jsx @@ -1,23 +1,28 @@ -import { connect } from 'react-redux'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { lookupAccount, fetchAccount } from '../../actions/accounts'; -import { expandAccountFeaturedTimeline, expandAccountTimeline, connectTimeline, disconnectTimeline } from '../../actions/timelines'; -import StatusList from '../../components/status_list'; -import LoadingIndicator from '../../components/loading_indicator'; -import Column from '../ui/components/column'; -import HeaderContainer from './containers/header_container'; -import ColumnBackButton from '../../components/column_back_button'; -import { List as ImmutableList } from 'immutable'; -import ImmutablePureComponent from 'react-immutable-pure-component'; + import { FormattedMessage } from 'react-intl'; + +import { List as ImmutableList } from 'immutable'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { TimelineHint } from 'mastodon/components/timeline_hint'; -import { me } from 'mastodon/initial_state'; -import LimitedAccountHint from './components/limited_account_hint'; -import { getAccountHidden } from 'mastodon/selectors'; -import { fetchFeaturedTags } from '../../actions/featured_tags'; -import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; +import { me } from 'mastodon/initial_state'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; +import { getAccountHidden } from 'mastodon/selectors'; + +import { lookupAccount, fetchAccount } from '../../actions/accounts'; +import { fetchFeaturedTags } from '../../actions/featured_tags'; +import { expandAccountFeaturedTimeline, expandAccountTimeline, connectTimeline, disconnectTimeline } from '../../actions/timelines'; +import ColumnBackButton from '../../components/column_back_button'; +import LoadingIndicator from '../../components/loading_indicator'; +import StatusList from '../../components/status_list'; +import Column from '../ui/components/column'; + +import LimitedAccountHint from './components/limited_account_hint'; +import HeaderContainer from './containers/header_container'; const emptyList = ImmutableList(); diff --git a/app/javascript/mastodon/features/audio/index.jsx b/app/javascript/mastodon/features/audio/index.jsx index d81813cf0..72e76413b 100644 --- a/app/javascript/mastodon/features/audio/index.jsx +++ b/app/javascript/mastodon/features/audio/index.jsx @@ -1,15 +1,22 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; -import { formatTime, getPointerPosition, fileNameFromURL } from 'mastodon/features/video'; -import { Icon } from 'mastodon/components/icon'; + import classNames from 'classnames'; -import { throttle, debounce } from 'lodash'; -import Visualizer from './visualizer'; -import { displayMedia, useBlurhash } from '../../initial_state'; -import { Blurhash } from '../../components/blurhash'; + import { is } from 'immutable'; +import { throttle, debounce } from 'lodash'; + +import { Icon } from 'mastodon/components/icon'; +import { formatTime, getPointerPosition, fileNameFromURL } from 'mastodon/features/video'; + +import { Blurhash } from '../../components/blurhash'; +import { displayMedia, useBlurhash } from '../../initial_state'; + +import Visualizer from './visualizer'; + const messages = defineMessages({ play: { id: 'video.play', defaultMessage: 'Play' }, pause: { id: 'video.pause', defaultMessage: 'Pause' }, diff --git a/app/javascript/mastodon/features/blocks/index.jsx b/app/javascript/mastodon/features/blocks/index.jsx index 088545bde..66e42dc41 100644 --- a/app/javascript/mastodon/features/blocks/index.jsx +++ b/app/javascript/mastodon/features/blocks/index.jsx @@ -1,15 +1,19 @@ -import { connect } from 'react-redux'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { debounce } from 'lodash'; import PropTypes from 'prop-types'; -import LoadingIndicator from '../../components/loading_indicator'; -import Column from '../ui/components/column'; -import ColumnBackButtonSlim from '../../components/column_back_button_slim'; -import AccountContainer from '../../containers/account_container'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { debounce } from 'lodash'; + import { fetchBlocks, expandBlocks } from '../../actions/blocks'; +import ColumnBackButtonSlim from '../../components/column_back_button_slim'; +import LoadingIndicator from '../../components/loading_indicator'; import ScrollableList from '../../components/scrollable_list'; +import AccountContainer from '../../containers/account_container'; +import Column from '../ui/components/column'; const messages = defineMessages({ heading: { id: 'column.blocks', defaultMessage: 'Blocked users' }, diff --git a/app/javascript/mastodon/features/bookmarked_statuses/index.jsx b/app/javascript/mastodon/features/bookmarked_statuses/index.jsx index 7a3ca39b7..795b859ce 100644 --- a/app/javascript/mastodon/features/bookmarked_statuses/index.jsx +++ b/app/javascript/mastodon/features/bookmarked_statuses/index.jsx @@ -1,10 +1,15 @@ -import { debounce } from 'lodash'; import PropTypes from 'prop-types'; -import { Helmet } from 'react-helmet'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; + +import { debounce } from 'lodash'; + import { fetchBookmarkedStatuses, expandBookmarkedStatuses } from 'mastodon/actions/bookmarks'; import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; import ColumnHeader from 'mastodon/components/column_header'; diff --git a/app/javascript/mastodon/features/closed_registrations_modal/index.jsx b/app/javascript/mastodon/features/closed_registrations_modal/index.jsx index 9ff167ecf..89ced8029 100644 --- a/app/javascript/mastodon/features/closed_registrations_modal/index.jsx +++ b/app/javascript/mastodon/features/closed_registrations_modal/index.jsx @@ -1,8 +1,10 @@ -import { connect } from 'react-redux'; import { FormattedMessage } from 'react-intl'; + import ImmutablePureComponent from 'react-immutable-pure-component'; -import { domain } from 'mastodon/initial_state'; +import { connect } from 'react-redux'; + import { fetchServer } from 'mastodon/actions/server'; +import { domain } from 'mastodon/initial_state'; const mapStateToProps = state => ({ message: state.getIn(['server', 'server', 'registrations', 'message']), diff --git a/app/javascript/mastodon/features/community_timeline/components/column_settings.jsx b/app/javascript/mastodon/features/community_timeline/components/column_settings.jsx index c71f301cb..69959c176 100644 --- a/app/javascript/mastodon/features/community_timeline/components/column_settings.jsx +++ b/app/javascript/mastodon/features/community_timeline/components/column_settings.jsx @@ -1,7 +1,10 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { PureComponent } from 'react'; + import { injectIntl, FormattedMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; + import SettingToggle from '../../notifications/components/setting_toggle'; class ColumnSettings extends PureComponent { diff --git a/app/javascript/mastodon/features/community_timeline/containers/column_settings_container.js b/app/javascript/mastodon/features/community_timeline/containers/column_settings_container.js index 405064c3f..1e9f12139 100644 --- a/app/javascript/mastodon/features/community_timeline/containers/column_settings_container.js +++ b/app/javascript/mastodon/features/community_timeline/containers/column_settings_container.js @@ -1,7 +1,8 @@ import { connect } from 'react-redux'; -import ColumnSettings from '../components/column_settings'; -import { changeSetting } from '../../../actions/settings'; + import { changeColumnParams } from '../../../actions/columns'; +import { changeSetting } from '../../../actions/settings'; +import ColumnSettings from '../components/column_settings'; const mapStateToProps = (state, { columnId }) => { const uuid = columnId; diff --git a/app/javascript/mastodon/features/community_timeline/index.jsx b/app/javascript/mastodon/features/community_timeline/index.jsx index bdcefe73d..a18da2f64 100644 --- a/app/javascript/mastodon/features/community_timeline/index.jsx +++ b/app/javascript/mastodon/features/community_timeline/index.jsx @@ -1,17 +1,23 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; -import StatusListContainer from '../ui/containers/status_list_container'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + +import { connect } from 'react-redux'; + +import DismissableBanner from 'mastodon/components/dismissable_banner'; +import { domain } from 'mastodon/initial_state'; + +import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; +import { connectCommunityStream } from '../../actions/streaming'; +import { expandCommunityTimeline } from '../../actions/timelines'; import Column from '../../components/column'; import ColumnHeader from '../../components/column_header'; -import { expandCommunityTimeline } from '../../actions/timelines'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; +import StatusListContainer from '../ui/containers/status_list_container'; + import ColumnSettingsContainer from './containers/column_settings_container'; -import { connectCommunityStream } from '../../actions/streaming'; -import { Helmet } from 'react-helmet'; -import { domain } from 'mastodon/initial_state'; -import DismissableBanner from 'mastodon/components/dismissable_banner'; const messages = defineMessages({ title: { id: 'column.community', defaultMessage: 'Local timeline' }, diff --git a/app/javascript/mastodon/features/compose/components/action_bar.jsx b/app/javascript/mastodon/features/compose/components/action_bar.jsx index 3382a5ce4..60914b462 100644 --- a/app/javascript/mastodon/features/compose/components/action_bar.jsx +++ b/app/javascript/mastodon/features/compose/components/action_bar.jsx @@ -1,9 +1,12 @@ -import { PureComponent } from 'react'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl } from 'react-intl'; +import ImmutablePropTypes from 'react-immutable-proptypes'; + +import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; + const messages = defineMessages({ edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, diff --git a/app/javascript/mastodon/features/compose/components/autosuggest_account.jsx b/app/javascript/mastodon/features/compose/components/autosuggest_account.jsx index 2231beb76..ebda0590e 100644 --- a/app/javascript/mastodon/features/compose/components/autosuggest_account.jsx +++ b/app/javascript/mastodon/features/compose/components/autosuggest_account.jsx @@ -1,8 +1,9 @@ -import { Avatar } from '../../../components/avatar'; -import { DisplayName } from '../../../components/display_name'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import { Avatar } from '../../../components/avatar'; +import { DisplayName } from '../../../components/display_name'; + export default class AutosuggestAccount extends ImmutablePureComponent { static propTypes = { diff --git a/app/javascript/mastodon/features/compose/components/character_counter.jsx b/app/javascript/mastodon/features/compose/components/character_counter.jsx index 15fc77bdc..42452b30f 100644 --- a/app/javascript/mastodon/features/compose/components/character_counter.jsx +++ b/app/javascript/mastodon/features/compose/components/character_counter.jsx @@ -1,5 +1,6 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { length } from 'stringz'; export default class CharacterCounter extends PureComponent { diff --git a/app/javascript/mastodon/features/compose/components/compose_form.jsx b/app/javascript/mastodon/features/compose/components/compose_form.jsx index 7ac2526f2..74894fdc3 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.jsx +++ b/app/javascript/mastodon/features/compose/components/compose_form.jsx @@ -1,25 +1,32 @@ -import CharacterCounter from './character_counter'; -import Button from '../../../components/button'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import ReplyIndicatorContainer from '../containers/reply_indicator_container'; -import AutosuggestTextarea from '../../../components/autosuggest_textarea'; -import AutosuggestInput from '../../../components/autosuggest_input'; -import PollButtonContainer from '../containers/poll_button_container'; -import UploadButtonContainer from '../containers/upload_button_container'; + import { defineMessages, injectIntl } from 'react-intl'; -import SpoilerButtonContainer from '../containers/spoiler_button_container'; -import PrivacyDropdownContainer from '../containers/privacy_dropdown_container'; + +import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { length } from 'stringz'; + +import { Icon } from 'mastodon/components/icon'; + +import AutosuggestInput from '../../../components/autosuggest_input'; +import AutosuggestTextarea from '../../../components/autosuggest_textarea'; +import Button from '../../../components/button'; import EmojiPickerDropdown from '../containers/emoji_picker_dropdown_container'; +import LanguageDropdown from '../containers/language_dropdown_container'; +import PollButtonContainer from '../containers/poll_button_container'; import PollFormContainer from '../containers/poll_form_container'; +import PrivacyDropdownContainer from '../containers/privacy_dropdown_container'; +import ReplyIndicatorContainer from '../containers/reply_indicator_container'; +import SpoilerButtonContainer from '../containers/spoiler_button_container'; +import UploadButtonContainer from '../containers/upload_button_container'; import UploadFormContainer from '../containers/upload_form_container'; import WarningContainer from '../containers/warning_container'; -import LanguageDropdown from '../containers/language_dropdown_container'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { length } from 'stringz'; import { countableText } from '../util/counter'; -import { Icon } from 'mastodon/components/icon'; -import classNames from 'classnames'; + +import CharacterCounter from './character_counter'; const allowedAroundShortCode = '><\u0085\u0020\u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\u0009\u000a\u000b\u000c\u000d'; diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx index 0bef6ccdb..79551b512 100644 --- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx +++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx @@ -1,14 +1,20 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { EmojiPicker as EmojiPickerAsync } from '../../ui/util/async-components'; -import Overlay from 'react-overlays/Overlay'; + import classNames from 'classnames'; + import ImmutablePropTypes from 'react-immutable-proptypes'; + import { supportsPassiveEvents } from 'detect-passive-events'; -import { buildCustomEmojis, categoriesFromEmojis } from '../../emoji/emoji'; +import Overlay from 'react-overlays/Overlay'; + import { assetHost } from 'mastodon/utils/config'; +import { buildCustomEmojis, categoriesFromEmojis } from '../../emoji/emoji'; +import { EmojiPicker as EmojiPickerAsync } from '../../ui/util/async-components'; + const messages = defineMessages({ emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' }, emoji_search: { id: 'emoji_button.search', defaultMessage: 'Search...' }, diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.jsx b/app/javascript/mastodon/features/compose/components/language_dropdown.jsx index 639832c45..13d1c2e1a 100644 --- a/app/javascript/mastodon/features/compose/components/language_dropdown.jsx +++ b/app/javascript/mastodon/features/compose/components/language_dropdown.jsx @@ -1,13 +1,18 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { injectIntl, defineMessages } from 'react-intl'; -import TextIconButton from './text_icon_button'; -import Overlay from 'react-overlays/Overlay'; -import { supportsPassiveEvents } from 'detect-passive-events'; + import classNames from 'classnames'; + +import { supportsPassiveEvents } from 'detect-passive-events'; +import fuzzysort from 'fuzzysort'; +import Overlay from 'react-overlays/Overlay'; + import { languages as preloadedLanguages } from 'mastodon/initial_state'; import { loupeIcon, deleteIcon } from 'mastodon/utils/icons'; -import fuzzysort from 'fuzzysort'; + +import TextIconButton from './text_icon_button'; const messages = defineMessages({ changeLanguage: { id: 'compose.language.change', defaultMessage: 'Change language' }, diff --git a/app/javascript/mastodon/features/compose/components/navigation_bar.jsx b/app/javascript/mastodon/features/compose/components/navigation_bar.jsx index 3a2e53594..371bed905 100644 --- a/app/javascript/mastodon/features/compose/components/navigation_bar.jsx +++ b/app/javascript/mastodon/features/compose/components/navigation_bar.jsx @@ -1,12 +1,17 @@ import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ActionBar from './action_bar'; -import { Avatar } from '../../../components/avatar'; -import { Link } from 'react-router-dom'; -import { IconButton } from '../../../components/icon_button'; + import { FormattedMessage } from 'react-intl'; + +import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import { Avatar } from '../../../components/avatar'; +import { IconButton } from '../../../components/icon_button'; + +import ActionBar from './action_bar'; + export default class NavigationBar extends ImmutablePureComponent { static propTypes = { diff --git a/app/javascript/mastodon/features/compose/components/poll_button.jsx b/app/javascript/mastodon/features/compose/components/poll_button.jsx index 9c9a94629..daf48ba41 100644 --- a/app/javascript/mastodon/features/compose/components/poll_button.jsx +++ b/app/javascript/mastodon/features/compose/components/poll_button.jsx @@ -1,8 +1,10 @@ -import { PureComponent } from 'react'; -import { IconButton } from '../../../components/icon_button'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl } from 'react-intl'; +import { IconButton } from '../../../components/icon_button'; + const messages = defineMessages({ add_poll: { id: 'poll_button.add_poll', defaultMessage: 'Add a poll' }, remove_poll: { id: 'poll_button.remove_poll', defaultMessage: 'Remove poll' }, diff --git a/app/javascript/mastodon/features/compose/components/poll_form.jsx b/app/javascript/mastodon/features/compose/components/poll_form.jsx index b319a2a60..1a4d30abe 100644 --- a/app/javascript/mastodon/features/compose/components/poll_form.jsx +++ b/app/javascript/mastodon/features/compose/components/poll_form.jsx @@ -1,12 +1,16 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import classNames from 'classnames'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { IconButton } from 'mastodon/components/icon_button'; -import { Icon } from 'mastodon/components/icon'; + import AutosuggestInput from 'mastodon/components/autosuggest_input'; -import classNames from 'classnames'; +import { Icon } from 'mastodon/components/icon'; +import { IconButton } from 'mastodon/components/icon_button'; const messages = defineMessages({ option_placeholder: { id: 'compose_form.poll.option_placeholder', defaultMessage: 'Choice {number}' }, diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx b/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx index 56f4cd253..bf3486420 100644 --- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx +++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx @@ -1,12 +1,17 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { injectIntl, defineMessages } from 'react-intl'; -import { IconButton } from '../../../components/icon_button'; -import Overlay from 'react-overlays/Overlay'; -import { supportsPassiveEvents } from 'detect-passive-events'; + import classNames from 'classnames'; + +import { supportsPassiveEvents } from 'detect-passive-events'; +import Overlay from 'react-overlays/Overlay'; + import { Icon } from 'mastodon/components/icon'; +import { IconButton } from '../../../components/icon_button'; + const messages = defineMessages({ public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all' }, diff --git a/app/javascript/mastodon/features/compose/components/reply_indicator.jsx b/app/javascript/mastodon/features/compose/components/reply_indicator.jsx index 8d65da62e..187a99c58 100644 --- a/app/javascript/mastodon/features/compose/components/reply_indicator.jsx +++ b/app/javascript/mastodon/features/compose/components/reply_indicator.jsx @@ -1,12 +1,16 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { Avatar } from '../../../components/avatar'; -import { IconButton } from '../../../components/icon_button'; -import { DisplayName } from '../../../components/display_name'; + import { defineMessages, injectIntl } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; + import AttachmentList from 'mastodon/components/attachment_list'; +import { Avatar } from '../../../components/avatar'; +import { DisplayName } from '../../../components/display_name'; +import { IconButton } from '../../../components/icon_button'; + const messages = defineMessages({ cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' }, }); diff --git a/app/javascript/mastodon/features/compose/components/search.jsx b/app/javascript/mastodon/features/compose/components/search.jsx index 92a008e22..7badb0774 100644 --- a/app/javascript/mastodon/features/compose/components/search.jsx +++ b/app/javascript/mastodon/features/compose/components/search.jsx @@ -1,10 +1,14 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { searchEnabled } from 'mastodon/initial_state'; -import { Icon } from 'mastodon/components/icon'; + import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; + +import { Icon } from 'mastodon/components/icon'; +import { searchEnabled } from 'mastodon/initial_state'; import { HASHTAG_REGEX } from 'mastodon/utils/hashtags'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/compose/components/search_results.jsx b/app/javascript/mastodon/features/compose/components/search_results.jsx index e13889e43..b329cae79 100644 --- a/app/javascript/mastodon/features/compose/components/search_results.jsx +++ b/app/javascript/mastodon/features/compose/components/search_results.jsx @@ -1,13 +1,17 @@ import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; + import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { Icon } from 'mastodon/components/icon'; +import LoadMore from 'mastodon/components/load_more'; + +import { ImmutableHashtag as Hashtag } from '../../../components/hashtag'; import AccountContainer from '../../../containers/account_container'; import StatusContainer from '../../../containers/status_container'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ImmutableHashtag as Hashtag } from '../../../components/hashtag'; -import { Icon } from 'mastodon/components/icon'; import { searchEnabled } from '../../../initial_state'; -import LoadMore from 'mastodon/components/load_more'; const messages = defineMessages({ dismissSuggestion: { id: 'suggestions.dismiss', defaultMessage: 'Dismiss suggestion' }, diff --git a/app/javascript/mastodon/features/compose/components/text_icon_button.jsx b/app/javascript/mastodon/features/compose/components/text_icon_button.jsx index 01bea732e..46b5d7fad 100644 --- a/app/javascript/mastodon/features/compose/components/text_icon_button.jsx +++ b/app/javascript/mastodon/features/compose/components/text_icon_button.jsx @@ -1,5 +1,5 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; const iconStyle = { height: null, diff --git a/app/javascript/mastodon/features/compose/components/upload.jsx b/app/javascript/mastodon/features/compose/components/upload.jsx index aeddd622d..9075f2062 100644 --- a/app/javascript/mastodon/features/compose/components/upload.jsx +++ b/app/javascript/mastodon/features/compose/components/upload.jsx @@ -1,11 +1,16 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import Motion from '../../ui/util/optional_motion'; -import spring from 'react-motion/lib/spring'; -import ImmutablePureComponent from 'react-immutable-pure-component'; + import { FormattedMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import spring from 'react-motion/lib/spring'; + import { Icon } from 'mastodon/components/icon'; +import Motion from '../../ui/util/optional_motion'; + export default class Upload extends ImmutablePureComponent { static contextTypes = { diff --git a/app/javascript/mastodon/features/compose/components/upload_button.jsx b/app/javascript/mastodon/features/compose/components/upload_button.jsx index a89c7d987..871bbe690 100644 --- a/app/javascript/mastodon/features/compose/components/upload_button.jsx +++ b/app/javascript/mastodon/features/compose/components/upload_button.jsx @@ -1,9 +1,12 @@ -import { IconButton } from '../../../components/icon_button'; import PropTypes from 'prop-types'; + import { defineMessages, injectIntl } from 'react-intl'; -import { connect } from 'react-redux'; -import ImmutablePureComponent from 'react-immutable-pure-component'; + import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { IconButton } from '../../../components/icon_button'; const messages = defineMessages({ upload: { id: 'upload_button.label', defaultMessage: 'Add images, a video or an audio file' }, diff --git a/app/javascript/mastodon/features/compose/components/upload_form.jsx b/app/javascript/mastodon/features/compose/components/upload_form.jsx index bfa728258..cf2e53ad9 100644 --- a/app/javascript/mastodon/features/compose/components/upload_form.jsx +++ b/app/javascript/mastodon/features/compose/components/upload_form.jsx @@ -1,8 +1,9 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; -import UploadProgressContainer from '../containers/upload_progress_container'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import UploadContainer from '../containers/upload_container'; + import SensitiveButtonContainer from '../containers/sensitive_button_container'; +import UploadContainer from '../containers/upload_container'; +import UploadProgressContainer from '../containers/upload_progress_container'; export default class UploadForm extends ImmutablePureComponent { diff --git a/app/javascript/mastodon/features/compose/components/upload_progress.jsx b/app/javascript/mastodon/features/compose/components/upload_progress.jsx index aa406b510..d41827edf 100644 --- a/app/javascript/mastodon/features/compose/components/upload_progress.jsx +++ b/app/javascript/mastodon/features/compose/components/upload_progress.jsx @@ -1,10 +1,14 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import Motion from '../../ui/util/optional_motion'; -import spring from 'react-motion/lib/spring'; -import { Icon } from 'mastodon/components/icon'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; +import spring from 'react-motion/lib/spring'; + +import { Icon } from 'mastodon/components/icon'; + +import Motion from '../../ui/util/optional_motion'; + export default class UploadProgress extends PureComponent { static propTypes = { diff --git a/app/javascript/mastodon/features/compose/components/warning.jsx b/app/javascript/mastodon/features/compose/components/warning.jsx index 4947a4e28..c5babc30a 100644 --- a/app/javascript/mastodon/features/compose/components/warning.jsx +++ b/app/javascript/mastodon/features/compose/components/warning.jsx @@ -1,8 +1,10 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import Motion from '../../ui/util/optional_motion'; +import { PureComponent } from 'react'; + import spring from 'react-motion/lib/spring'; +import Motion from '../../ui/util/optional_motion'; + export default class Warning extends PureComponent { static propTypes = { diff --git a/app/javascript/mastodon/features/compose/containers/autosuggest_account_container.js b/app/javascript/mastodon/features/compose/containers/autosuggest_account_container.js index 4190e54ca..f86f01bd9 100644 --- a/app/javascript/mastodon/features/compose/containers/autosuggest_account_container.js +++ b/app/javascript/mastodon/features/compose/containers/autosuggest_account_container.js @@ -1,6 +1,7 @@ import { connect } from 'react-redux'; -import AutosuggestAccount from '../components/autosuggest_account'; + import { makeGetAccount } from '../../../selectors'; +import AutosuggestAccount from '../components/autosuggest_account'; const makeMapStateToProps = () => { const getAccount = makeGetAccount(); diff --git a/app/javascript/mastodon/features/compose/containers/compose_form_container.js b/app/javascript/mastodon/features/compose/containers/compose_form_container.js index 2b7642237..ba20698ba 100644 --- a/app/javascript/mastodon/features/compose/containers/compose_form_container.js +++ b/app/javascript/mastodon/features/compose/containers/compose_form_container.js @@ -1,5 +1,5 @@ import { connect } from 'react-redux'; -import ComposeForm from '../components/compose_form'; + import { changeCompose, submitCompose, @@ -10,6 +10,7 @@ import { insertEmojiCompose, uploadCompose, } from '../../../actions/compose'; +import ComposeForm from '../components/compose_form'; const mapStateToProps = state => ({ text: state.getIn(['compose', 'text']), diff --git a/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js b/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js index 9d9a59c41..a0e50029d 100644 --- a/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js +++ b/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js @@ -1,9 +1,10 @@ -import { connect } from 'react-redux'; -import EmojiPickerDropdown from '../components/emoji_picker_dropdown'; -import { changeSetting } from '../../../actions/settings'; -import { createSelector } from 'reselect'; import { Map as ImmutableMap } from 'immutable'; +import { connect } from 'react-redux'; +import { createSelector } from 'reselect'; + import { useEmoji } from '../../../actions/emojis'; +import { changeSetting } from '../../../actions/settings'; +import EmojiPickerDropdown from '../components/emoji_picker_dropdown'; const perLine = 8; const lines = 2; diff --git a/app/javascript/mastodon/features/compose/containers/language_dropdown_container.js b/app/javascript/mastodon/features/compose/containers/language_dropdown_container.js index 5560fe609..e1e2f0402 100644 --- a/app/javascript/mastodon/features/compose/containers/language_dropdown_container.js +++ b/app/javascript/mastodon/features/compose/containers/language_dropdown_container.js @@ -1,9 +1,11 @@ +import { Map as ImmutableMap } from 'immutable'; import { connect } from 'react-redux'; -import LanguageDropdown from '../components/language_dropdown'; +import { createSelector } from 'reselect'; + import { changeComposeLanguage } from 'mastodon/actions/compose'; import { useLanguage } from 'mastodon/actions/languages'; -import { createSelector } from 'reselect'; -import { Map as ImmutableMap } from 'immutable'; + +import LanguageDropdown from '../components/language_dropdown'; const getFrequentlyUsedLanguages = createSelector([ state => state.getIn(['settings', 'frequentlyUsedLanguages'], ImmutableMap()), diff --git a/app/javascript/mastodon/features/compose/containers/navigation_container.js b/app/javascript/mastodon/features/compose/containers/navigation_container.js index 654c14df9..f881c4fa1 100644 --- a/app/javascript/mastodon/features/compose/containers/navigation_container.js +++ b/app/javascript/mastodon/features/compose/containers/navigation_container.js @@ -1,9 +1,12 @@ -import { connect } from 'react-redux'; import { defineMessages, injectIntl } from 'react-intl'; -import NavigationBar from '../components/navigation_bar'; -import { logOut } from 'mastodon/utils/log_out'; + +import { connect } from 'react-redux'; + import { openModal } from 'mastodon/actions/modal'; +import { logOut } from 'mastodon/utils/log_out'; + import { me } from '../../../initial_state'; +import NavigationBar from '../components/navigation_bar'; const messages = defineMessages({ logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, diff --git a/app/javascript/mastodon/features/compose/containers/poll_button_container.js b/app/javascript/mastodon/features/compose/containers/poll_button_container.js index 8f1cb7c10..b7785ecbb 100644 --- a/app/javascript/mastodon/features/compose/containers/poll_button_container.js +++ b/app/javascript/mastodon/features/compose/containers/poll_button_container.js @@ -1,6 +1,7 @@ import { connect } from 'react-redux'; -import PollButton from '../components/poll_button'; + import { addPoll, removePoll } from '../../../actions/compose'; +import PollButton from '../components/poll_button'; const mapStateToProps = state => ({ unavailable: state.getIn(['compose', 'is_uploading']) || (state.getIn(['compose', 'media_attachments']).size > 0), diff --git a/app/javascript/mastodon/features/compose/containers/poll_form_container.js b/app/javascript/mastodon/features/compose/containers/poll_form_container.js index 479117e91..177ffcea6 100644 --- a/app/javascript/mastodon/features/compose/containers/poll_form_container.js +++ b/app/javascript/mastodon/features/compose/containers/poll_form_container.js @@ -1,5 +1,5 @@ import { connect } from 'react-redux'; -import PollForm from '../components/poll_form'; + import { addPollOption, removePollOption, @@ -9,6 +9,7 @@ import { fetchComposeSuggestions, selectComposeSuggestion, } from '../../../actions/compose'; +import PollForm from '../components/poll_form'; const mapStateToProps = state => ({ suggestions: state.getIn(['compose', 'suggestions']), diff --git a/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js b/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js index e5bbb94da..1ca3fe550 100644 --- a/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js +++ b/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js @@ -1,8 +1,9 @@ import { connect } from 'react-redux'; -import PrivacyDropdown from '../components/privacy_dropdown'; + import { changeComposeVisibility } from '../../../actions/compose'; import { openModal, closeModal } from '../../../actions/modal'; import { isUserTouching } from '../../../is_mobile'; +import PrivacyDropdown from '../components/privacy_dropdown'; const mapStateToProps = state => ({ value: state.getIn(['compose', 'privacy']), diff --git a/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js b/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js index a1302b2d4..1147e448a 100644 --- a/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js +++ b/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js @@ -1,4 +1,5 @@ import { connect } from 'react-redux'; + import { cancelReplyCompose } from '../../../actions/compose'; import { makeGetStatus } from '../../../selectors'; import ReplyIndicator from '../components/reply_indicator'; diff --git a/app/javascript/mastodon/features/compose/containers/search_container.js b/app/javascript/mastodon/features/compose/containers/search_container.js index 3d2d728c8..299a3887e 100644 --- a/app/javascript/mastodon/features/compose/containers/search_container.js +++ b/app/javascript/mastodon/features/compose/containers/search_container.js @@ -1,4 +1,5 @@ import { connect } from 'react-redux'; + import { changeSearch, clearSearch, @@ -8,6 +9,7 @@ import { clickSearchResult, forgetSearchResult, } from 'mastodon/actions/search'; + import Search from '../components/search'; const mapStateToProps = state => ({ diff --git a/app/javascript/mastodon/features/compose/containers/search_results_container.js b/app/javascript/mastodon/features/compose/containers/search_results_container.js index 1f714ff83..54c2af317 100644 --- a/app/javascript/mastodon/features/compose/containers/search_results_container.js +++ b/app/javascript/mastodon/features/compose/containers/search_results_container.js @@ -1,7 +1,9 @@ import { connect } from 'react-redux'; -import SearchResults from '../components/search_results'; -import { fetchSuggestions, dismissSuggestion } from 'mastodon/actions/suggestions'; + import { expandSearch } from 'mastodon/actions/search'; +import { fetchSuggestions, dismissSuggestion } from 'mastodon/actions/suggestions'; + +import SearchResults from '../components/search_results'; const mapStateToProps = state => ({ results: state.getIn(['search', 'results']), diff --git a/app/javascript/mastodon/features/compose/containers/sensitive_button_container.jsx b/app/javascript/mastodon/features/compose/containers/sensitive_button_container.jsx index 4ad938eea..18283ee98 100644 --- a/app/javascript/mastodon/features/compose/containers/sensitive_button_container.jsx +++ b/app/javascript/mastodon/features/compose/containers/sensitive_button_container.jsx @@ -1,10 +1,14 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import classNames from 'classnames'; -import { changeComposeSensitivity } from 'mastodon/actions/compose'; +import { PureComponent } from 'react'; + import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; +import classNames from 'classnames'; + +import { connect } from 'react-redux'; + +import { changeComposeSensitivity } from 'mastodon/actions/compose'; + const messages = defineMessages({ marked: { id: 'compose_form.sensitive.marked', diff --git a/app/javascript/mastodon/features/compose/containers/spoiler_button_container.js b/app/javascript/mastodon/features/compose/containers/spoiler_button_container.js index 0b9dc8df3..b3d7a7133 100644 --- a/app/javascript/mastodon/features/compose/containers/spoiler_button_container.js +++ b/app/javascript/mastodon/features/compose/containers/spoiler_button_container.js @@ -1,8 +1,10 @@ -import { connect } from 'react-redux'; -import TextIconButton from '../components/text_icon_button'; -import { changeComposeSpoilerness } from '../../../actions/compose'; import { injectIntl, defineMessages } from 'react-intl'; +import { connect } from 'react-redux'; + +import { changeComposeSpoilerness } from '../../../actions/compose'; +import TextIconButton from '../components/text_icon_button'; + const messages = defineMessages({ marked: { id: 'compose_form.spoiler.marked', defaultMessage: 'Text is hidden behind warning' }, unmarked: { id: 'compose_form.spoiler.unmarked', defaultMessage: 'Text is not hidden' }, diff --git a/app/javascript/mastodon/features/compose/containers/upload_button_container.js b/app/javascript/mastodon/features/compose/containers/upload_button_container.js index 221b98e31..42195da61 100644 --- a/app/javascript/mastodon/features/compose/containers/upload_button_container.js +++ b/app/javascript/mastodon/features/compose/containers/upload_button_container.js @@ -1,6 +1,7 @@ import { connect } from 'react-redux'; -import UploadButton from '../components/upload_button'; + import { uploadCompose } from '../../../actions/compose'; +import UploadButton from '../components/upload_button'; const mapStateToProps = state => ({ disabled: state.getIn(['compose', 'is_uploading']) || (state.getIn(['compose', 'media_attachments']).size + state.getIn(['compose', 'pending_media_attachments']) > 3 || state.getIn(['compose', 'media_attachments']).some(m => ['video', 'audio'].includes(m.get('type')))), diff --git a/app/javascript/mastodon/features/compose/containers/upload_container.js b/app/javascript/mastodon/features/compose/containers/upload_container.js index 5a8a64931..77bb90db8 100644 --- a/app/javascript/mastodon/features/compose/containers/upload_container.js +++ b/app/javascript/mastodon/features/compose/containers/upload_container.js @@ -1,6 +1,7 @@ import { connect } from 'react-redux'; -import Upload from '../components/upload'; + import { undoUploadCompose, initMediaEditModal, submitCompose } from '../../../actions/compose'; +import Upload from '../components/upload'; const mapStateToProps = (state, { id }) => ({ media: state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id), diff --git a/app/javascript/mastodon/features/compose/containers/upload_form_container.js b/app/javascript/mastodon/features/compose/containers/upload_form_container.js index a6798bf51..336525cf5 100644 --- a/app/javascript/mastodon/features/compose/containers/upload_form_container.js +++ b/app/javascript/mastodon/features/compose/containers/upload_form_container.js @@ -1,4 +1,5 @@ import { connect } from 'react-redux'; + import UploadForm from '../components/upload_form'; const mapStateToProps = state => ({ diff --git a/app/javascript/mastodon/features/compose/containers/upload_progress_container.js b/app/javascript/mastodon/features/compose/containers/upload_progress_container.js index b18c76a43..ffff321c3 100644 --- a/app/javascript/mastodon/features/compose/containers/upload_progress_container.js +++ b/app/javascript/mastodon/features/compose/containers/upload_progress_container.js @@ -1,4 +1,5 @@ import { connect } from 'react-redux'; + import UploadProgress from '../components/upload_progress'; const mapStateToProps = state => ({ diff --git a/app/javascript/mastodon/features/compose/containers/warning_container.jsx b/app/javascript/mastodon/features/compose/containers/warning_container.jsx index 6060d11ed..7a212342c 100644 --- a/app/javascript/mastodon/features/compose/containers/warning_container.jsx +++ b/app/javascript/mastodon/features/compose/containers/warning_container.jsx @@ -1,10 +1,14 @@ -import { connect } from 'react-redux'; -import Warning from '../components/warning'; import PropTypes from 'prop-types'; + import { FormattedMessage } from 'react-intl'; + +import { connect } from 'react-redux'; + import { me } from 'mastodon/initial_state'; import { HASHTAG_PATTERN_REGEX } from 'mastodon/utils/hashtags'; +import Warning from '../components/warning'; + const mapStateToProps = state => ({ needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']), hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && HASHTAG_PATTERN_REGEX.test(state.getIn(['compose', 'text'])), diff --git a/app/javascript/mastodon/features/compose/index.jsx b/app/javascript/mastodon/features/compose/index.jsx index a87f9b4d3..192355886 100644 --- a/app/javascript/mastodon/features/compose/index.jsx +++ b/app/javascript/mastodon/features/compose/index.jsx @@ -1,24 +1,31 @@ -import { PureComponent } from 'react'; -import ComposeFormContainer from './containers/compose_form_container'; -import NavigationContainer from './containers/navigation_container'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { injectIntl, defineMessages } from 'react-intl'; + +import { Helmet } from 'react-helmet'; +import { Link } from 'react-router-dom'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { changeComposing, mountCompose, unmountCompose } from '../../actions/compose'; -import { Link } from 'react-router-dom'; -import { injectIntl, defineMessages } from 'react-intl'; -import SearchContainer from './containers/search_container'; -import Motion from '../ui/util/optional_motion'; + import spring from 'react-motion/lib/spring'; -import SearchResultsContainer from './containers/search_results_container'; + import { openModal } from 'mastodon/actions/modal'; -import elephantUIPlane from '../../../images/elephant_ui_plane.svg'; -import { mascot } from '../../initial_state'; +import Column from 'mastodon/components/column'; import { Icon } from 'mastodon/components/icon'; import { logOut } from 'mastodon/utils/log_out'; -import Column from 'mastodon/components/column'; -import { Helmet } from 'react-helmet'; + +import elephantUIPlane from '../../../images/elephant_ui_plane.svg'; +import { changeComposing, mountCompose, unmountCompose } from '../../actions/compose'; +import { mascot } from '../../initial_state'; import { isMobile } from '../../is_mobile'; +import Motion from '../ui/util/optional_motion'; + +import ComposeFormContainer from './containers/compose_form_container'; +import NavigationContainer from './containers/navigation_container'; +import SearchContainer from './containers/search_container'; +import SearchResultsContainer from './containers/search_results_container'; const messages = defineMessages({ start: { id: 'getting_started.heading', defaultMessage: 'Getting started' }, diff --git a/app/javascript/mastodon/features/compose/util/url_regex.js b/app/javascript/mastodon/features/compose/util/url_regex.js index 9c2005c53..887612ae3 100644 --- a/app/javascript/mastodon/features/compose/util/url_regex.js +++ b/app/javascript/mastodon/features/compose/util/url_regex.js @@ -1,8 +1,8 @@ import regexSupplant from 'twitter-text/dist/lib/regexSupplant'; -import validUrlPrecedingChars from 'twitter-text/dist/regexp/validUrlPrecedingChars'; import validDomain from 'twitter-text/dist/regexp/validDomain'; import validPortNumber from 'twitter-text/dist/regexp/validPortNumber'; import validUrlPath from 'twitter-text/dist/regexp/validUrlPath'; +import validUrlPrecedingChars from 'twitter-text/dist/regexp/validUrlPrecedingChars'; import validUrlQueryChars from 'twitter-text/dist/regexp/validUrlQueryChars'; import validUrlQueryEndingChars from 'twitter-text/dist/regexp/validUrlQueryEndingChars'; diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx index 0bd000661..bf0a9da95 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx +++ b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx @@ -1,17 +1,22 @@ import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import classNames from 'classnames'; +import { Link } from 'react-router-dom'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import StatusContent from 'mastodon/components/status_content'; + +import { HotKeys } from 'react-hotkeys'; + import AttachmentList from 'mastodon/components/attachment_list'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container'; import AvatarComposite from 'mastodon/components/avatar_composite'; -import { Link } from 'react-router-dom'; import { IconButton } from 'mastodon/components/icon_button'; import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; -import { HotKeys } from 'react-hotkeys'; +import StatusContent from 'mastodon/components/status_content'; +import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container'; import { autoPlayGif } from 'mastodon/initial_state'; -import classNames from 'classnames'; const messages = defineMessages({ more: { id: 'status.more', defaultMessage: 'More' }, diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx b/app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx index 6c9dde1e3..8c12ea9e5 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx +++ b/app/javascript/mastodon/features/direct_timeline/components/conversations_list.jsx @@ -1,10 +1,13 @@ import PropTypes from 'prop-types'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import ConversationContainer from '../containers/conversation_container'; -import ScrollableList from '../../../components/scrollable_list'; + import { debounce } from 'lodash'; +import ScrollableList from '../../../components/scrollable_list'; +import ConversationContainer from '../containers/conversation_container'; + export default class ConversationsList extends ImmutablePureComponent { static propTypes = { diff --git a/app/javascript/mastodon/features/direct_timeline/containers/conversation_container.js b/app/javascript/mastodon/features/direct_timeline/containers/conversation_container.js index 94cef81a7..978c031aa 100644 --- a/app/javascript/mastodon/features/direct_timeline/containers/conversation_container.js +++ b/app/javascript/mastodon/features/direct_timeline/containers/conversation_container.js @@ -1,11 +1,14 @@ +import { defineMessages, injectIntl } from 'react-intl'; + import { connect } from 'react-redux'; -import Conversation from '../components/conversation'; -import { markConversationRead, deleteConversation } from 'mastodon/actions/conversations'; -import { makeGetStatus } from 'mastodon/selectors'; + import { replyCompose } from 'mastodon/actions/compose'; +import { markConversationRead, deleteConversation } from 'mastodon/actions/conversations'; import { openModal } from 'mastodon/actions/modal'; import { muteStatus, unmuteStatus, hideStatus, revealStatus } from 'mastodon/actions/statuses'; -import { defineMessages, injectIntl } from 'react-intl'; +import { makeGetStatus } from 'mastodon/selectors'; + +import Conversation from '../components/conversation'; const messages = defineMessages({ replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' }, diff --git a/app/javascript/mastodon/features/direct_timeline/containers/conversations_list_container.js b/app/javascript/mastodon/features/direct_timeline/containers/conversations_list_container.js index 57e17d96f..1dcd3ec1b 100644 --- a/app/javascript/mastodon/features/direct_timeline/containers/conversations_list_container.js +++ b/app/javascript/mastodon/features/direct_timeline/containers/conversations_list_container.js @@ -1,6 +1,7 @@ import { connect } from 'react-redux'; -import ConversationsList from '../components/conversations_list'; + import { expandConversations } from '../../../actions/conversations'; +import ConversationsList from '../components/conversations_list'; const mapStateToProps = state => ({ conversations: state.getIn(['conversations', 'items']), diff --git a/app/javascript/mastodon/features/direct_timeline/index.jsx b/app/javascript/mastodon/features/direct_timeline/index.jsx index f836b0ebe..3e8d37526 100644 --- a/app/javascript/mastodon/features/direct_timeline/index.jsx +++ b/app/javascript/mastodon/features/direct_timeline/index.jsx @@ -1,13 +1,18 @@ import PropTypes from 'prop-types'; import { PureComponent } from 'react'; -import { Helmet } from 'react-helmet'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + import { connect } from 'react-redux'; + import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; import { mountConversations, unmountConversations, expandConversations } from 'mastodon/actions/conversations'; import { connectDirectStream } from 'mastodon/actions/streaming'; import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; + import ConversationsListContainer from './containers/conversations_list_container'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/directory/components/account_card.jsx b/app/javascript/mastodon/features/directory/components/account_card.jsx index 96a6cfa30..87ddcf94f 100644 --- a/app/javascript/mastodon/features/directory/components/account_card.jsx +++ b/app/javascript/mastodon/features/directory/components/account_card.jsx @@ -1,15 +1,14 @@ -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; -import { makeGetAccount } from 'mastodon/selectors'; -import { Avatar } from 'mastodon/components/avatar'; -import { DisplayName } from 'mastodon/components/display_name'; -import { Link } from 'react-router-dom'; -import Button from 'mastodon/components/button'; + import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; -import { autoPlayGif, me, unfollowModal } from 'mastodon/initial_state'; -import ShortNumber from 'mastodon/components/short_number'; + +import classNames from 'classnames'; +import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { followAccount, unfollowAccount, @@ -17,7 +16,12 @@ import { unmuteAccount, } from 'mastodon/actions/accounts'; import { openModal } from 'mastodon/actions/modal'; -import classNames from 'classnames'; +import { Avatar } from 'mastodon/components/avatar'; +import Button from 'mastodon/components/button'; +import { DisplayName } from 'mastodon/components/display_name'; +import ShortNumber from 'mastodon/components/short_number'; +import { autoPlayGif, me, unfollowModal } from 'mastodon/initial_state'; +import { makeGetAccount } from 'mastodon/selectors'; const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, diff --git a/app/javascript/mastodon/features/directory/index.jsx b/app/javascript/mastodon/features/directory/index.jsx index c148937f8..d4854f186 100644 --- a/app/javascript/mastodon/features/directory/index.jsx +++ b/app/javascript/mastodon/features/directory/index.jsx @@ -1,19 +1,24 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; -import { defineMessages, injectIntl } from 'react-intl'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + +import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import Column from 'mastodon/components/column'; -import ColumnHeader from 'mastodon/components/column_header'; +import { connect } from 'react-redux'; + import { addColumn, removeColumn, moveColumn, changeColumnParams } from 'mastodon/actions/columns'; import { fetchDirectory, expandDirectory } from 'mastodon/actions/directory'; -import { List as ImmutableList } from 'immutable'; -import AccountCard from './components/account_card'; -import { RadioButton } from 'mastodon/components/radio_button'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; import LoadMore from 'mastodon/components/load_more'; -import ScrollContainer from 'mastodon/containers/scroll_container'; import LoadingIndicator from 'mastodon/components/loading_indicator'; -import { Helmet } from 'react-helmet'; +import { RadioButton } from 'mastodon/components/radio_button'; +import ScrollContainer from 'mastodon/containers/scroll_container'; + +import AccountCard from './components/account_card'; const messages = defineMessages({ title: { id: 'column.directory', defaultMessage: 'Browse profiles' }, diff --git a/app/javascript/mastodon/features/domain_blocks/index.jsx b/app/javascript/mastodon/features/domain_blocks/index.jsx index 9189cb4d8..34f0afa2b 100644 --- a/app/javascript/mastodon/features/domain_blocks/index.jsx +++ b/app/javascript/mastodon/features/domain_blocks/index.jsx @@ -1,17 +1,22 @@ -import { connect } from 'react-redux'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { debounce } from 'lodash'; -import LoadingIndicator from '../../components/loading_indicator'; -import Column from '../ui/components/column'; -import ColumnBackButtonSlim from '../../components/column_back_button_slim'; -import DomainContainer from '../../containers/domain_container'; -import { fetchDomainBlocks, expandDomainBlocks } from '../../actions/domain_blocks'; -import ScrollableList from '../../components/scrollable_list'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import { Helmet } from 'react-helmet'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { debounce } from 'lodash'; + +import { fetchDomainBlocks, expandDomainBlocks } from '../../actions/domain_blocks'; +import ColumnBackButtonSlim from '../../components/column_back_button_slim'; +import LoadingIndicator from '../../components/loading_indicator'; +import ScrollableList from '../../components/scrollable_list'; +import DomainContainer from '../../containers/domain_container'; +import Column from '../ui/components/column'; + const messages = defineMessages({ heading: { id: 'column.domain_blocks', defaultMessage: 'Blocked domains' }, unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, diff --git a/app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js b/app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js index 9df2d34a0..90ae0993d 100644 --- a/app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js +++ b/app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js @@ -1,5 +1,6 @@ -import { pick } from 'lodash'; import { emojiIndex } from 'emoji-mart'; +import { pick } from 'lodash'; + import { search } from '../emoji_mart_search_light'; const trimEmojis = emoji => pick(emoji, ['id', 'unified', 'native', 'custom']); diff --git a/app/javascript/mastodon/features/emoji/emoji.js b/app/javascript/mastodon/features/emoji/emoji.js index 06800d432..c11ef458c 100644 --- a/app/javascript/mastodon/features/emoji/emoji.js +++ b/app/javascript/mastodon/features/emoji/emoji.js @@ -1,8 +1,11 @@ -import { autoPlayGif } from '../../initial_state'; -import unicodeMapping from './emoji_unicode_mapping_light'; -import { assetHost } from 'mastodon/utils/config'; import Trie from 'substring-trie'; +import { assetHost } from 'mastodon/utils/config'; + +import { autoPlayGif } from '../../initial_state'; + +import unicodeMapping from './emoji_unicode_mapping_light'; + const trie = new Trie(Object.keys(unicodeMapping)); // Convert to file names from emojis. (For different variation selector emojis) diff --git a/app/javascript/mastodon/features/emoji/emoji_compressed.js b/app/javascript/mastodon/features/emoji/emoji_compressed.js index e1bee1655..3d577e50f 100644 --- a/app/javascript/mastodon/features/emoji/emoji_compressed.js +++ b/app/javascript/mastodon/features/emoji/emoji_compressed.js @@ -7,13 +7,14 @@ // It's designed to be emitted in an array format to take up less space // over the wire. -const { unicodeToFilename } = require('./unicode_to_filename'); -const { unicodeToUnifiedName } = require('./unicode_to_unified_name'); -const emojiMap = require('./emoji_map.json'); const { emojiIndex } = require('emoji-mart'); +let data = require('emoji-mart/data/all.json'); const { uncompress: emojiMartUncompress } = require('emoji-mart/dist/utils/data'); -let data = require('emoji-mart/data/all.json'); +const emojiMap = require('./emoji_map.json'); +const { unicodeToFilename } = require('./unicode_to_filename'); +const { unicodeToUnifiedName } = require('./unicode_to_unified_name'); + if(data.compressed) { data = emojiMartUncompress(data); diff --git a/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js b/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js index 000aeb0de..11698937c 100644 --- a/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js +++ b/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js @@ -1,8 +1,8 @@ // The output of this module is designed to mimic emoji-mart's // "data" object, such that we can use it for a light version of emoji-mart's // emojiIndex.search functionality. -import { unicodeToUnifiedName } from './unicode_to_unified_name'; import emojiCompressed from './emoji_compressed'; +import { unicodeToUnifiedName } from './unicode_to_unified_name'; const [ shortCodesToEmojiData, skins, categories, short_names ] = emojiCompressed; diff --git a/app/javascript/mastodon/features/emoji/emoji_picker.js b/app/javascript/mastodon/features/emoji/emoji_picker.js index 044d38cb2..8725d39ec 100644 --- a/app/javascript/mastodon/features/emoji/emoji_picker.js +++ b/app/javascript/mastodon/features/emoji/emoji_picker.js @@ -1,5 +1,5 @@ -import Picker from 'emoji-mart/dist-es/components/picker/picker'; import Emoji from 'emoji-mart/dist-es/components/emoji/emoji'; +import Picker from 'emoji-mart/dist-es/components/picker/picker'; export { Picker, diff --git a/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js b/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js index 30fbd9e34..3e3834580 100644 --- a/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js +++ b/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js @@ -3,7 +3,6 @@ // as a "title" attribute in an HTML element (aka tooltip). import emojiCompressed from './emoji_compressed'; - import { unicodeToFilename } from './unicode_to_filename'; const [ diff --git a/app/javascript/mastodon/features/explore/components/story.jsx b/app/javascript/mastodon/features/explore/components/story.jsx index e352cf0d3..0a9fbb190 100644 --- a/app/javascript/mastodon/features/explore/components/story.jsx +++ b/app/javascript/mastodon/features/explore/components/story.jsx @@ -1,10 +1,12 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import classNames from 'classnames'; + import { Blurhash } from 'mastodon/components/blurhash'; import { accountsCountRenderer } from 'mastodon/components/hashtag'; import ShortNumber from 'mastodon/components/short_number'; import { Skeleton } from 'mastodon/components/skeleton'; -import classNames from 'classnames'; export default class Story extends PureComponent { diff --git a/app/javascript/mastodon/features/explore/index.jsx b/app/javascript/mastodon/features/explore/index.jsx index f858ee572..dbc0400e8 100644 --- a/app/javascript/mastodon/features/explore/index.jsx +++ b/app/javascript/mastodon/features/explore/index.jsx @@ -1,18 +1,23 @@ -import { PureComponent } from 'react'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; +import { NavLink, Switch, Route } from 'react-router-dom'; + +import { connect } from 'react-redux'; + import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; -import { NavLink, Switch, Route } from 'react-router-dom'; +import Search from 'mastodon/features/compose/containers/search_container'; +import { showTrends } from 'mastodon/initial_state'; + import Links from './links'; -import Tags from './tags'; +import SearchResults from './results'; import Statuses from './statuses'; import Suggestions from './suggestions'; -import Search from 'mastodon/features/compose/containers/search_container'; -import SearchResults from './results'; -import { Helmet } from 'react-helmet'; -import { showTrends } from 'mastodon/initial_state'; +import Tags from './tags'; const messages = defineMessages({ title: { id: 'explore.title', defaultMessage: 'Explore' }, diff --git a/app/javascript/mastodon/features/explore/links.jsx b/app/javascript/mastodon/features/explore/links.jsx index 5fa3a2985..fba958993 100644 --- a/app/javascript/mastodon/features/explore/links.jsx +++ b/app/javascript/mastodon/features/explore/links.jsx @@ -1,12 +1,16 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import Story from './components/story'; -import LoadingIndicator from 'mastodon/components/loading_indicator'; -import { connect } from 'react-redux'; -import { fetchTrendingLinks } from 'mastodon/actions/trends'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; + +import { fetchTrendingLinks } from 'mastodon/actions/trends'; import DismissableBanner from 'mastodon/components/dismissable_banner'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; + +import Story from './components/story'; const mapStateToProps = state => ({ links: state.getIn(['trends', 'links', 'items']), diff --git a/app/javascript/mastodon/features/explore/results.jsx b/app/javascript/mastodon/features/explore/results.jsx index 63e5da3b8..6b053a9dc 100644 --- a/app/javascript/mastodon/features/explore/results.jsx +++ b/app/javascript/mastodon/features/explore/results.jsx @@ -1,16 +1,20 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { PureComponent } from 'react'; + import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; -import { connect } from 'react-redux'; -import { expandSearch } from 'mastodon/actions/search'; -import Account from 'mastodon/containers/account_container'; -import Status from 'mastodon/containers/status_container'; -import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; + +import { Helmet } from 'react-helmet'; + import { List as ImmutableList } from 'immutable'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; + +import { expandSearch } from 'mastodon/actions/search'; +import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; import LoadMore from 'mastodon/components/load_more'; import LoadingIndicator from 'mastodon/components/loading_indicator'; -import { Helmet } from 'react-helmet'; +import Account from 'mastodon/containers/account_container'; +import Status from 'mastodon/containers/status_container'; const messages = defineMessages({ title: { id: 'search_results.title', defaultMessage: 'Search for {q}' }, diff --git a/app/javascript/mastodon/features/explore/statuses.jsx b/app/javascript/mastodon/features/explore/statuses.jsx index 1a606bb3b..abacf333d 100644 --- a/app/javascript/mastodon/features/explore/statuses.jsx +++ b/app/javascript/mastodon/features/explore/statuses.jsx @@ -1,12 +1,16 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import StatusList from 'mastodon/components/status_list'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { fetchTrendingStatuses, expandTrendingStatuses } from 'mastodon/actions/trends'; + import { debounce } from 'lodash'; + +import { fetchTrendingStatuses, expandTrendingStatuses } from 'mastodon/actions/trends'; import DismissableBanner from 'mastodon/components/dismissable_banner'; +import StatusList from 'mastodon/components/status_list'; const mapStateToProps = state => ({ statusIds: state.getIn(['status_lists', 'trending', 'items']), diff --git a/app/javascript/mastodon/features/explore/suggestions.jsx b/app/javascript/mastodon/features/explore/suggestions.jsx index b7c15b4d2..bcb710f3e 100644 --- a/app/javascript/mastodon/features/explore/suggestions.jsx +++ b/app/javascript/mastodon/features/explore/suggestions.jsx @@ -1,12 +1,15 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import AccountCard from 'mastodon/features/directory/components/account_card'; -import LoadingIndicator from 'mastodon/components/loading_indicator'; -import { connect } from 'react-redux'; -import { fetchSuggestions } from 'mastodon/actions/suggestions'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; + +import { fetchSuggestions } from 'mastodon/actions/suggestions'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; +import AccountCard from 'mastodon/features/directory/components/account_card'; + const mapStateToProps = state => ({ suggestions: state.getIn(['suggestions', 'items']), isLoading: state.getIn(['suggestions', 'isLoading']), diff --git a/app/javascript/mastodon/features/explore/tags.jsx b/app/javascript/mastodon/features/explore/tags.jsx index 607420b9d..1859c6279 100644 --- a/app/javascript/mastodon/features/explore/tags.jsx +++ b/app/javascript/mastodon/features/explore/tags.jsx @@ -1,12 +1,15 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage } from 'react-intl'; + import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; + +import { fetchTrendingHashtags } from 'mastodon/actions/trends'; +import DismissableBanner from 'mastodon/components/dismissable_banner'; import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; import LoadingIndicator from 'mastodon/components/loading_indicator'; -import { connect } from 'react-redux'; -import { fetchTrendingHashtags } from 'mastodon/actions/trends'; -import { FormattedMessage } from 'react-intl'; -import DismissableBanner from 'mastodon/components/dismissable_banner'; const mapStateToProps = state => ({ hashtags: state.getIn(['trends', 'tags', 'items']), diff --git a/app/javascript/mastodon/features/favourited_statuses/index.jsx b/app/javascript/mastodon/features/favourited_statuses/index.jsx index 17369617f..4902ddc28 100644 --- a/app/javascript/mastodon/features/favourited_statuses/index.jsx +++ b/app/javascript/mastodon/features/favourited_statuses/index.jsx @@ -1,10 +1,15 @@ -import { debounce } from 'lodash'; import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import { Helmet } from 'react-helmet'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; + +import { debounce } from 'lodash'; + import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; import { fetchFavouritedStatuses, expandFavouritedStatuses } from 'mastodon/actions/favourites'; import ColumnHeader from 'mastodon/components/column_header'; diff --git a/app/javascript/mastodon/features/favourites/index.jsx b/app/javascript/mastodon/features/favourites/index.jsx index 85d8686d1..8ea137fd2 100644 --- a/app/javascript/mastodon/features/favourites/index.jsx +++ b/app/javascript/mastodon/features/favourites/index.jsx @@ -1,16 +1,20 @@ import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ImmutablePropTypes from 'react-immutable-proptypes'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; + +import { fetchFavourites } from 'mastodon/actions/interactions'; import ColumnHeader from 'mastodon/components/column_header'; import { Icon } from 'mastodon/components/icon'; -import { fetchFavourites } from 'mastodon/actions/interactions'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import ScrollableList from 'mastodon/components/scrollable_list'; import AccountContainer from 'mastodon/containers/account_container'; import Column from 'mastodon/features/ui/components/column'; -import { Helmet } from 'react-helmet'; const messages = defineMessages({ refresh: { id: 'refresh', defaultMessage: 'Refresh' }, diff --git a/app/javascript/mastodon/features/filters/added_to_filter.jsx b/app/javascript/mastodon/features/filters/added_to_filter.jsx index aaf054ac7..ec848f622 100644 --- a/app/javascript/mastodon/features/filters/added_to_filter.jsx +++ b/app/javascript/mastodon/features/filters/added_to_filter.jsx @@ -1,11 +1,14 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; -import { toServerSideType } from 'mastodon/utils/filters'; -import Button from 'mastodon/components/button'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; +import Button from 'mastodon/components/button'; +import { toServerSideType } from 'mastodon/utils/filters'; + const mapStateToProps = (state, { filterId }) => ({ filter: state.getIn(['filters', filterId]), }); diff --git a/app/javascript/mastodon/features/filters/select_filter.jsx b/app/javascript/mastodon/features/filters/select_filter.jsx index fd367be2d..79ada6f58 100644 --- a/app/javascript/mastodon/features/filters/select_filter.jsx +++ b/app/javascript/mastodon/features/filters/select_filter.jsx @@ -1,11 +1,15 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { connect } from 'react-redux'; + +import fuzzysort from 'fuzzysort'; + +import { Icon } from 'mastodon/components/icon'; import { toServerSideType } from 'mastodon/utils/filters'; import { loupeIcon, deleteIcon } from 'mastodon/utils/icons'; -import { Icon } from 'mastodon/components/icon'; -import fuzzysort from 'fuzzysort'; const messages = defineMessages({ search: { id: 'filter_modal.select_filter.search', defaultMessage: 'Search or create' }, diff --git a/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx b/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx index 4cc46fb27..9a2dc68bc 100644 --- a/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx +++ b/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx @@ -1,11 +1,15 @@ import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; + +import { defineMessages, injectIntl } from 'react-intl'; + import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + import { Avatar } from '../../../components/avatar'; import { DisplayName } from '../../../components/display_name'; import { IconButton } from '../../../components/icon_button'; -import { defineMessages, injectIntl } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; const messages = defineMessages({ authorize: { id: 'follow_request.authorize', defaultMessage: 'Authorize' }, diff --git a/app/javascript/mastodon/features/follow_requests/containers/account_authorize_container.js b/app/javascript/mastodon/features/follow_requests/containers/account_authorize_container.js index 8db471f73..c9c8dd7d8 100644 --- a/app/javascript/mastodon/features/follow_requests/containers/account_authorize_container.js +++ b/app/javascript/mastodon/features/follow_requests/containers/account_authorize_container.js @@ -1,7 +1,8 @@ import { connect } from 'react-redux'; + +import { authorizeFollowRequest, rejectFollowRequest } from '../../../actions/accounts'; import { makeGetAccount } from '../../../selectors'; import AccountAuthorize from '../components/account_authorize'; -import { authorizeFollowRequest, rejectFollowRequest } from '../../../actions/accounts'; const makeMapStateToProps = () => { const getAccount = makeGetAccount(); diff --git a/app/javascript/mastodon/features/follow_requests/index.jsx b/app/javascript/mastodon/features/follow_requests/index.jsx index c59266461..796254e0e 100644 --- a/app/javascript/mastodon/features/follow_requests/index.jsx +++ b/app/javascript/mastodon/features/follow_requests/index.jsx @@ -1,16 +1,22 @@ -import { connect } from 'react-redux'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { debounce } from 'lodash'; -import Column from '../ui/components/column'; -import ColumnBackButtonSlim from '../../components/column_back_button_slim'; -import AccountAuthorizeContainer from './containers/account_authorize_container'; + import { fetchFollowRequests, expandFollowRequests } from '../../actions/accounts'; +import ColumnBackButtonSlim from '../../components/column_back_button_slim'; import ScrollableList from '../../components/scrollable_list'; import { me } from '../../initial_state'; -import { Helmet } from 'react-helmet'; +import Column from '../ui/components/column'; + +import AccountAuthorizeContainer from './containers/account_authorize_container'; const messages = defineMessages({ heading: { id: 'column.follow_requests', defaultMessage: 'Follow requests' }, diff --git a/app/javascript/mastodon/features/followed_tags/index.jsx b/app/javascript/mastodon/features/followed_tags/index.jsx index e3bceed72..52414982a 100644 --- a/app/javascript/mastodon/features/followed_tags/index.jsx +++ b/app/javascript/mastodon/features/followed_tags/index.jsx @@ -1,15 +1,20 @@ -import { debounce } from 'lodash'; import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ImmutablePropTypes from 'react-immutable-proptypes'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; + +import { debounce } from 'lodash'; + +import { expandFollowedHashtags, fetchFollowedHashtags } from 'mastodon/actions/tags'; import ColumnHeader from 'mastodon/components/column_header'; +import Hashtag from 'mastodon/components/hashtag'; import ScrollableList from 'mastodon/components/scrollable_list'; import Column from 'mastodon/features/ui/components/column'; -import { Helmet } from 'react-helmet'; -import Hashtag from 'mastodon/components/hashtag'; -import { expandFollowedHashtags, fetchFollowedHashtags } from 'mastodon/actions/tags'; const messages = defineMessages({ heading: { id: 'followed_tags', defaultMessage: 'Followed hashtags' }, diff --git a/app/javascript/mastodon/features/followers/index.jsx b/app/javascript/mastodon/features/followers/index.jsx index bbf9cd71e..c9a474ea2 100644 --- a/app/javascript/mastodon/features/followers/index.jsx +++ b/app/javascript/mastodon/features/followers/index.jsx @@ -1,26 +1,31 @@ -import { connect } from 'react-redux'; -import ImmutablePureComponent from 'react-immutable-pure-component'; import PropTypes from 'prop-types'; + +import { FormattedMessage } from 'react-intl'; + import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { debounce } from 'lodash'; -import LoadingIndicator from '../../components/loading_indicator'; + +import { TimelineHint } from 'mastodon/components/timeline_hint'; +import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; +import { getAccountHidden } from 'mastodon/selectors'; + import { lookupAccount, fetchAccount, fetchFollowers, expandFollowers, } from '../../actions/accounts'; -import { FormattedMessage } from 'react-intl'; -import AccountContainer from '../../containers/account_container'; -import Column from '../ui/components/column'; -import HeaderContainer from '../account_timeline/containers/header_container'; import ColumnBackButton from '../../components/column_back_button'; +import LoadingIndicator from '../../components/loading_indicator'; import ScrollableList from '../../components/scrollable_list'; -import { TimelineHint } from 'mastodon/components/timeline_hint'; +import AccountContainer from '../../containers/account_container'; import LimitedAccountHint from '../account_timeline/components/limited_account_hint'; -import { getAccountHidden } from 'mastodon/selectors'; -import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; -import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; +import HeaderContainer from '../account_timeline/containers/header_container'; +import Column from '../ui/components/column'; const mapStateToProps = (state, { params: { acct, id } }) => { const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); diff --git a/app/javascript/mastodon/features/following/index.jsx b/app/javascript/mastodon/features/following/index.jsx index c1463c895..7b203341e 100644 --- a/app/javascript/mastodon/features/following/index.jsx +++ b/app/javascript/mastodon/features/following/index.jsx @@ -1,26 +1,31 @@ -import { connect } from 'react-redux'; -import ImmutablePureComponent from 'react-immutable-pure-component'; import PropTypes from 'prop-types'; + +import { FormattedMessage } from 'react-intl'; + import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { debounce } from 'lodash'; -import LoadingIndicator from '../../components/loading_indicator'; + +import { TimelineHint } from 'mastodon/components/timeline_hint'; +import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; +import { getAccountHidden } from 'mastodon/selectors'; + import { lookupAccount, fetchAccount, fetchFollowing, expandFollowing, } from '../../actions/accounts'; -import { FormattedMessage } from 'react-intl'; -import AccountContainer from '../../containers/account_container'; -import Column from '../ui/components/column'; -import HeaderContainer from '../account_timeline/containers/header_container'; import ColumnBackButton from '../../components/column_back_button'; +import LoadingIndicator from '../../components/loading_indicator'; import ScrollableList from '../../components/scrollable_list'; -import { TimelineHint } from 'mastodon/components/timeline_hint'; +import AccountContainer from '../../containers/account_container'; import LimitedAccountHint from '../account_timeline/components/limited_account_hint'; -import { getAccountHidden } from 'mastodon/selectors'; -import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; -import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; +import HeaderContainer from '../account_timeline/containers/header_container'; +import Column from '../ui/components/column'; const mapStateToProps = (state, { params: { acct, id } }) => { const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); diff --git a/app/javascript/mastodon/features/getting_started/components/announcements.jsx b/app/javascript/mastodon/features/getting_started/components/announcements.jsx index 44fc25d20..a53f9a90c 100644 --- a/app/javascript/mastodon/features/getting_started/components/announcements.jsx +++ b/app/javascript/mastodon/features/getting_started/components/announcements.jsx @@ -1,19 +1,24 @@ -import { PureComponent } from 'react'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ReactSwipeableViews from 'react-swipeable-views'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { IconButton } from 'mastodon/components/icon_button'; -import { Icon } from 'mastodon/components/icon'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage, FormattedDate } from 'react-intl'; -import { autoPlayGif, reduceMotion, disableSwiping, mascot } from 'mastodon/initial_state'; -import elephantUIPlane from 'mastodon/../images/elephant_ui_plane.svg'; -import unicodeMapping from 'mastodon/features/emoji/emoji_unicode_mapping_light'; + import classNames from 'classnames'; -import EmojiPickerDropdown from 'mastodon/features/compose/containers/emoji_picker_dropdown_container'; -import { AnimatedNumber } from 'mastodon/components/animated_number'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + import TransitionMotion from 'react-motion/lib/TransitionMotion'; import spring from 'react-motion/lib/spring'; +import ReactSwipeableViews from 'react-swipeable-views'; + +import elephantUIPlane from 'mastodon/../images/elephant_ui_plane.svg'; +import { AnimatedNumber } from 'mastodon/components/animated_number'; +import { Icon } from 'mastodon/components/icon'; +import { IconButton } from 'mastodon/components/icon_button'; +import EmojiPickerDropdown from 'mastodon/features/compose/containers/emoji_picker_dropdown_container'; +import unicodeMapping from 'mastodon/features/emoji/emoji_unicode_mapping_light'; +import { autoPlayGif, reduceMotion, disableSwiping, mascot } from 'mastodon/initial_state'; import { assetHost } from 'mastodon/utils/config'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/getting_started/components/trends.jsx b/app/javascript/mastodon/features/getting_started/components/trends.jsx index 59596b554..5e1d31a87 100644 --- a/app/javascript/mastodon/features/getting_started/components/trends.jsx +++ b/app/javascript/mastodon/features/getting_started/components/trends.jsx @@ -1,10 +1,14 @@ -import ImmutablePureComponent from 'react-immutable-pure-component'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; + import { FormattedMessage } from 'react-intl'; + import { Link } from 'react-router-dom'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; + export default class Trends extends ImmutablePureComponent { static defaultProps = { diff --git a/app/javascript/mastodon/features/getting_started/containers/announcements_container.js b/app/javascript/mastodon/features/getting_started/containers/announcements_container.js index 9d03ad6f7..c33e62432 100644 --- a/app/javascript/mastodon/features/getting_started/containers/announcements_container.js +++ b/app/javascript/mastodon/features/getting_started/containers/announcements_container.js @@ -1,8 +1,10 @@ -import { connect } from 'react-redux'; -import { addReaction, removeReaction, dismissAnnouncement } from 'mastodon/actions/announcements'; -import Announcements from '../components/announcements'; -import { createSelector } from 'reselect'; import { Map as ImmutableMap } from 'immutable'; +import { connect } from 'react-redux'; +import { createSelector } from 'reselect'; + +import { addReaction, removeReaction, dismissAnnouncement } from 'mastodon/actions/announcements'; + +import Announcements from '../components/announcements'; const customEmojiMap = createSelector([state => state.get('custom_emojis')], items => items.reduce((map, emoji) => map.set(emoji.get('shortcode'), emoji), ImmutableMap())); diff --git a/app/javascript/mastodon/features/getting_started/containers/trends_container.js b/app/javascript/mastodon/features/getting_started/containers/trends_container.js index a73832db7..82df526ff 100644 --- a/app/javascript/mastodon/features/getting_started/containers/trends_container.js +++ b/app/javascript/mastodon/features/getting_started/containers/trends_container.js @@ -1,5 +1,7 @@ import { connect } from 'react-redux'; + import { fetchTrendingHashtags } from 'mastodon/actions/trends'; + import Trends from '../components/trends'; const mapStateToProps = state => ({ diff --git a/app/javascript/mastodon/features/getting_started/index.jsx b/app/javascript/mastodon/features/getting_started/index.jsx index 69c4fb502..2d1ac6670 100644 --- a/app/javascript/mastodon/features/getting_started/index.jsx +++ b/app/javascript/mastodon/features/getting_started/index.jsx @@ -1,19 +1,25 @@ -import Column from 'mastodon/components/column'; -import ColumnHeader from 'mastodon/components/column_header'; -import ColumnLink from '../ui/components/column_link'; -import ColumnSubheading from '../ui/components/column_subheading'; -import { defineMessages, injectIntl } from 'react-intl'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + +import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me, showTrends } from '../../initial_state'; +import { connect } from 'react-redux'; + import { fetchFollowRequests } from 'mastodon/actions/accounts'; -import { List as ImmutableList } from 'immutable'; -import NavigationContainer from '../compose/containers/navigation_container'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; import LinkFooter from 'mastodon/features/ui/components/link_footer'; + +import { me, showTrends } from '../../initial_state'; +import NavigationContainer from '../compose/containers/navigation_container'; +import ColumnLink from '../ui/components/column_link'; +import ColumnSubheading from '../ui/components/column_subheading'; + import TrendsContainer from './containers/trends_container'; -import { Helmet } from 'react-helmet'; const messages = defineMessages({ home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' }, diff --git a/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx b/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx index 528d4309f..c60de4c51 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx +++ b/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.jsx @@ -1,10 +1,14 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import Toggle from 'react-toggle'; -import AsyncSelect from 'react-select/async'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; + import { NonceProvider } from 'react-select'; +import AsyncSelect from 'react-select/async'; +import Toggle from 'react-toggle'; + import SettingToggle from '../../notifications/components/setting_toggle'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/hashtag_timeline/containers/column_settings_container.js b/app/javascript/mastodon/features/hashtag_timeline/containers/column_settings_container.js index a4f71f8a3..be95004cc 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/containers/column_settings_container.js +++ b/app/javascript/mastodon/features/hashtag_timeline/containers/column_settings_container.js @@ -1,7 +1,8 @@ import { connect } from 'react-redux'; -import ColumnSettings from '../components/column_settings'; + import { changeColumnParams } from '../../../actions/columns'; import api from '../../../api'; +import ColumnSettings from '../components/column_settings'; const mapStateToProps = (state, { columnId }) => { const columns = state.getIn(['settings', 'columns']); diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.jsx b/app/javascript/mastodon/features/hashtag_timeline/index.jsx index 29507ee46..b6ed29d8d 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.jsx +++ b/app/javascript/mastodon/features/hashtag_timeline/index.jsx @@ -1,21 +1,28 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import StatusListContainer from '../ui/containers/status_list_container'; -import Column from 'mastodon/components/column'; -import ColumnHeader from 'mastodon/components/column_header'; -import ColumnSettingsContainer from './containers/column_settings_container'; -import { expandHashtagTimeline, clearTimeline } from 'mastodon/actions/timelines'; -import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; +import { PureComponent } from 'react'; + import { injectIntl, FormattedMessage, defineMessages } from 'react-intl'; -import { connectHashtagStream } from 'mastodon/actions/streaming'; -import { isEqual } from 'lodash'; -import { fetchHashtag, followHashtag, unfollowHashtag } from 'mastodon/actions/tags'; -import { Icon } from 'mastodon/components/icon'; + import classNames from 'classnames'; import { Helmet } from 'react-helmet'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; + +import { isEqual } from 'lodash'; + +import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; +import { connectHashtagStream } from 'mastodon/actions/streaming'; +import { fetchHashtag, followHashtag, unfollowHashtag } from 'mastodon/actions/tags'; +import { expandHashtagTimeline, clearTimeline } from 'mastodon/actions/timelines'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; +import { Icon } from 'mastodon/components/icon'; + +import StatusListContainer from '../ui/containers/status_list_container'; + +import ColumnSettingsContainer from './containers/column_settings_container'; + const messages = defineMessages({ followHashtag: { id: 'hashtag.follow', defaultMessage: 'Follow hashtag' }, unfollowHashtag: { id: 'hashtag.unfollow', defaultMessage: 'Unfollow hashtag' }, diff --git a/app/javascript/mastodon/features/home_timeline/components/column_settings.jsx b/app/javascript/mastodon/features/home_timeline/components/column_settings.jsx index d78918d6e..b6e6b9cff 100644 --- a/app/javascript/mastodon/features/home_timeline/components/column_settings.jsx +++ b/app/javascript/mastodon/features/home_timeline/components/column_settings.jsx @@ -1,7 +1,10 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { PureComponent } from 'react'; + import { injectIntl, FormattedMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; + import SettingToggle from '../../notifications/components/setting_toggle'; class ColumnSettings extends PureComponent { diff --git a/app/javascript/mastodon/features/home_timeline/containers/column_settings_container.js b/app/javascript/mastodon/features/home_timeline/containers/column_settings_container.js index fd8a39298..1ddec6da9 100644 --- a/app/javascript/mastodon/features/home_timeline/containers/column_settings_container.js +++ b/app/javascript/mastodon/features/home_timeline/containers/column_settings_container.js @@ -1,6 +1,7 @@ import { connect } from 'react-redux'; -import ColumnSettings from '../components/column_settings'; + import { changeSetting, saveSettings } from '../../../actions/settings'; +import ColumnSettings from '../components/column_settings'; const mapStateToProps = state => ({ settings: state.getIn(['settings', 'home']), diff --git a/app/javascript/mastodon/features/home_timeline/index.jsx b/app/javascript/mastodon/features/home_timeline/index.jsx index 9735699f9..c9fe07875 100644 --- a/app/javascript/mastodon/features/home_timeline/index.jsx +++ b/app/javascript/mastodon/features/home_timeline/index.jsx @@ -1,20 +1,26 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; -import { expandHomeTimeline } from '../../actions/timelines'; import PropTypes from 'prop-types'; -import StatusListContainer from '../ui/containers/status_list_container'; -import Column from '../../components/column'; -import ColumnHeader from '../../components/column_header'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ColumnSettingsContainer from './containers/column_settings_container'; -import { Link } from 'react-router-dom'; -import { fetchAnnouncements, toggleShowAnnouncements } from 'mastodon/actions/announcements'; -import AnnouncementsContainer from 'mastodon/features/getting_started/containers/announcements_container'; + import classNames from 'classnames'; +import { Helmet } from 'react-helmet'; +import { Link } from 'react-router-dom'; + +import { connect } from 'react-redux'; + +import { fetchAnnouncements, toggleShowAnnouncements } from 'mastodon/actions/announcements'; import { IconWithBadge } from 'mastodon/components/icon_with_badge'; import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator'; -import { Helmet } from 'react-helmet'; +import AnnouncementsContainer from 'mastodon/features/getting_started/containers/announcements_container'; + +import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; +import { expandHomeTimeline } from '../../actions/timelines'; +import Column from '../../components/column'; +import ColumnHeader from '../../components/column_header'; +import StatusListContainer from '../ui/containers/status_list_container'; + +import ColumnSettingsContainer from './containers/column_settings_container'; const messages = defineMessages({ title: { id: 'column.home', defaultMessage: 'Home' }, diff --git a/app/javascript/mastodon/features/interaction_modal/index.jsx b/app/javascript/mastodon/features/interaction_modal/index.jsx index b1ff72b0e..db6a3c4a5 100644 --- a/app/javascript/mastodon/features/interaction_modal/index.jsx +++ b/app/javascript/mastodon/features/interaction_modal/index.jsx @@ -1,11 +1,15 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; -import { registrationsOpen } from 'mastodon/initial_state'; -import { connect } from 'react-redux'; -import { Icon } from 'mastodon/components/icon'; + import classNames from 'classnames'; + +import { connect } from 'react-redux'; + import { openModal, closeModal } from 'mastodon/actions/modal'; +import { Icon } from 'mastodon/components/icon'; +import { registrationsOpen } from 'mastodon/initial_state'; const mapStateToProps = (state, { accountId }) => ({ displayNameHtml: state.getIn(['accounts', accountId, 'display_name_html']), diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx b/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx index 542d147e1..ce4c6015b 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx @@ -1,10 +1,14 @@ -import Column from 'mastodon/components/column'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ColumnHeader from 'mastodon/components/column_header'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import { Helmet } from 'react-helmet'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; + const messages = defineMessages({ heading: { id: 'keyboard_shortcuts.heading', defaultMessage: 'Keyboard Shortcuts' }, }); diff --git a/app/javascript/mastodon/features/list_adder/components/account.jsx b/app/javascript/mastodon/features/list_adder/components/account.jsx index e2828f5ab..31a2e9637 100644 --- a/app/javascript/mastodon/features/list_adder/components/account.jsx +++ b/app/javascript/mastodon/features/list_adder/components/account.jsx @@ -1,10 +1,12 @@ -import { connect } from 'react-redux'; -import { makeGetAccount } from '../../../selectors'; -import ImmutablePureComponent from 'react-immutable-pure-component'; +import { injectIntl } from 'react-intl'; + import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { Avatar } from '../../../components/avatar'; import { DisplayName } from '../../../components/display_name'; -import { injectIntl } from 'react-intl'; +import { makeGetAccount } from '../../../selectors'; const makeMapStateToProps = () => { const getAccount = makeGetAccount(); diff --git a/app/javascript/mastodon/features/list_adder/components/list.jsx b/app/javascript/mastodon/features/list_adder/components/list.jsx index d7f2a9f16..faade6f61 100644 --- a/app/javascript/mastodon/features/list_adder/components/list.jsx +++ b/app/javascript/mastodon/features/list_adder/components/list.jsx @@ -1,12 +1,16 @@ import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { IconButton } from '../../../components/icon_button'; + import { defineMessages, injectIntl } from 'react-intl'; -import { removeFromListAdder, addToListAdder } from '../../../actions/lists'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { Icon } from 'mastodon/components/icon'; +import { removeFromListAdder, addToListAdder } from '../../../actions/lists'; +import { IconButton } from '../../../components/icon_button'; + const messages = defineMessages({ remove: { id: 'lists.account.remove', defaultMessage: 'Remove from list' }, add: { id: 'lists.account.add', defaultMessage: 'Add to list' }, diff --git a/app/javascript/mastodon/features/list_adder/index.jsx b/app/javascript/mastodon/features/list_adder/index.jsx index 3ef29b212..1ba9972e0 100644 --- a/app/javascript/mastodon/features/list_adder/index.jsx +++ b/app/javascript/mastodon/features/list_adder/index.jsx @@ -1,13 +1,17 @@ import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { connect } from 'react-redux'; -import ImmutablePureComponent from 'react-immutable-pure-component'; + import { injectIntl } from 'react-intl'; -import { setupListAdder, resetListAdder } from '../../actions/lists'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; import { createSelector } from 'reselect'; -import List from './components/list'; -import Account from './components/account'; + +import { setupListAdder, resetListAdder } from '../../actions/lists'; import NewListForm from '../lists/components/new_list_form'; + +import Account from './components/account'; +import List from './components/list'; // hack const getOrderedLists = createSelector([state => state.get('lists')], lists => { diff --git a/app/javascript/mastodon/features/list_editor/components/account.jsx b/app/javascript/mastodon/features/list_editor/components/account.jsx index 6ce59bc37..4618bd1c1 100644 --- a/app/javascript/mastodon/features/list_editor/components/account.jsx +++ b/app/javascript/mastodon/features/list_editor/components/account.jsx @@ -1,13 +1,16 @@ import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; -import { makeGetAccount } from '../../../selectors'; -import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { defineMessages, injectIntl } from 'react-intl'; + import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { removeFromListEditor, addToListEditor } from '../../../actions/lists'; import { Avatar } from '../../../components/avatar'; import { DisplayName } from '../../../components/display_name'; import { IconButton } from '../../../components/icon_button'; -import { defineMessages, injectIntl } from 'react-intl'; -import { removeFromListEditor, addToListEditor } from '../../../actions/lists'; +import { makeGetAccount } from '../../../selectors'; const messages = defineMessages({ remove: { id: 'lists.account.remove', defaultMessage: 'Remove from list' }, diff --git a/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx b/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx index 715328108..9e087a97d 100644 --- a/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx +++ b/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx @@ -1,9 +1,12 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl } from 'react-intl'; + +import { connect } from 'react-redux'; + import { changeListEditorTitle, submitListEditor } from '../../../actions/lists'; import { IconButton } from '../../../components/icon_button'; -import { defineMessages, injectIntl } from 'react-intl'; const messages = defineMessages({ title: { id: 'lists.edit.submit', defaultMessage: 'Change title' }, diff --git a/app/javascript/mastodon/features/list_editor/components/search.jsx b/app/javascript/mastodon/features/list_editor/components/search.jsx index bc5cd136f..021bc450a 100644 --- a/app/javascript/mastodon/features/list_editor/components/search.jsx +++ b/app/javascript/mastodon/features/list_editor/components/search.jsx @@ -1,11 +1,16 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl } from 'react-intl'; -import { fetchListSuggestions, clearListSuggestions, changeListSuggestions } from '../../../actions/lists'; + import classNames from 'classnames'; + +import { connect } from 'react-redux'; + import { Icon } from 'mastodon/components/icon'; +import { fetchListSuggestions, clearListSuggestions, changeListSuggestions } from '../../../actions/lists'; + const messages = defineMessages({ search: { id: 'lists.search', defaultMessage: 'Search among people you follow' }, }); diff --git a/app/javascript/mastodon/features/list_editor/index.jsx b/app/javascript/mastodon/features/list_editor/index.jsx index 3ed390c61..85e90169e 100644 --- a/app/javascript/mastodon/features/list_editor/index.jsx +++ b/app/javascript/mastodon/features/list_editor/index.jsx @@ -1,15 +1,20 @@ import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { connect } from 'react-redux'; -import ImmutablePureComponent from 'react-immutable-pure-component'; + import { injectIntl } from 'react-intl'; -import { setupListEditor, clearListSuggestions, resetListEditor } from '../../actions/lists'; -import Account from './components/account'; -import Search from './components/search'; -import EditListForm from './components/edit_list_form'; -import Motion from '../ui/util/optional_motion'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import spring from 'react-motion/lib/spring'; +import { setupListEditor, clearListSuggestions, resetListEditor } from '../../actions/lists'; +import Motion from '../ui/util/optional_motion'; + +import Account from './components/account'; +import EditListForm from './components/edit_list_form'; +import Search from './components/search'; + const mapStateToProps = state => ({ accountIds: state.getIn(['listEditor', 'accounts', 'items']), searchAccountIds: state.getIn(['listEditor', 'suggestions', 'items']), diff --git a/app/javascript/mastodon/features/list_timeline/index.jsx b/app/javascript/mastodon/features/list_timeline/index.jsx index 86d6e3881..1d80a9cd5 100644 --- a/app/javascript/mastodon/features/list_timeline/index.jsx +++ b/app/javascript/mastodon/features/list_timeline/index.jsx @@ -1,9 +1,13 @@ import PropTypes from 'prop-types'; import { PureComponent } from 'react'; -import { Helmet } from 'react-helmet'; -import ImmutablePropTypes from 'react-immutable-proptypes'; + import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; + import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; import { fetchList, deleteList, updateList } from 'mastodon/actions/lists'; import { openModal } from 'mastodon/actions/modal'; @@ -14,8 +18,8 @@ import ColumnHeader from 'mastodon/components/column_header'; import { Icon } from 'mastodon/components/icon'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import { RadioButton } from 'mastodon/components/radio_button'; -import StatusListContainer from 'mastodon/features/ui/containers/status_list_container'; import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; +import StatusListContainer from 'mastodon/features/ui/containers/status_list_container'; const messages = defineMessages({ deleteMessage: { id: 'confirmations.delete_list.message', defaultMessage: 'Are you sure you want to permanently delete this list?' }, diff --git a/app/javascript/mastodon/features/lists/components/new_list_form.jsx b/app/javascript/mastodon/features/lists/components/new_list_form.jsx index cab116826..40e2d4a1c 100644 --- a/app/javascript/mastodon/features/lists/components/new_list_form.jsx +++ b/app/javascript/mastodon/features/lists/components/new_list_form.jsx @@ -1,9 +1,12 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl } from 'react-intl'; + +import { connect } from 'react-redux'; + import { changeListEditorTitle, submitListEditor } from 'mastodon/actions/lists'; import Button from 'mastodon/components/button'; -import { defineMessages, injectIntl } from 'react-intl'; const messages = defineMessages({ label: { id: 'lists.new.title_placeholder', defaultMessage: 'New list title' }, diff --git a/app/javascript/mastodon/features/lists/index.jsx b/app/javascript/mastodon/features/lists/index.jsx index 6e741759d..3bc2cd3a9 100644 --- a/app/javascript/mastodon/features/lists/index.jsx +++ b/app/javascript/mastodon/features/lists/index.jsx @@ -1,17 +1,22 @@ import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import { Helmet } from 'react-helmet'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; + import { fetchLists } from 'mastodon/actions/lists'; -import LoadingIndicator from 'mastodon/components/loading_indicator'; -import ScrollableList from 'mastodon/components/scrollable_list'; import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; +import ScrollableList from 'mastodon/components/scrollable_list'; import ColumnLink from 'mastodon/features/ui/components/column_link'; import ColumnSubheading from 'mastodon/features/ui/components/column_subheading'; + import NewListForm from './components/new_list_form'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/mutes/index.jsx b/app/javascript/mastodon/features/mutes/index.jsx index e5c6fbbec..1c74f34ea 100644 --- a/app/javascript/mastodon/features/mutes/index.jsx +++ b/app/javascript/mastodon/features/mutes/index.jsx @@ -1,17 +1,22 @@ -import { connect } from 'react-redux'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { debounce } from 'lodash'; -import LoadingIndicator from '../../components/loading_indicator'; -import Column from '../ui/components/column'; -import ColumnBackButtonSlim from '../../components/column_back_button_slim'; -import AccountContainer from '../../containers/account_container'; -import { fetchMutes, expandMutes } from '../../actions/mutes'; -import ScrollableList from '../../components/scrollable_list'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import { Helmet } from 'react-helmet'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { debounce } from 'lodash'; + +import { fetchMutes, expandMutes } from '../../actions/mutes'; +import ColumnBackButtonSlim from '../../components/column_back_button_slim'; +import LoadingIndicator from '../../components/loading_indicator'; +import ScrollableList from '../../components/scrollable_list'; +import AccountContainer from '../../containers/account_container'; +import Column from '../ui/components/column'; + const messages = defineMessages({ heading: { id: 'column.mutes', defaultMessage: 'Muted users' }, }); diff --git a/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx b/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx index 342f6a3fb..a1c015441 100644 --- a/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx +++ b/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; + import { Icon } from 'mastodon/components/icon'; export default class ClearColumnButton extends PureComponent { diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.jsx b/app/javascript/mastodon/features/notifications/components/column_settings.jsx index 42a0eb827..7f8e88f08 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.jsx +++ b/app/javascript/mastodon/features/notifications/components/column_settings.jsx @@ -1,11 +1,15 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; + +import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_REPORTS } from 'mastodon/permissions'; + import ClearColumnButton from './clear_column_button'; import GrantPermissionButton from './grant_permission_button'; import SettingToggle from './setting_toggle'; -import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_REPORTS } from 'mastodon/permissions'; export default class ColumnSettings extends PureComponent { diff --git a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx index 2a0471641..92cdfa57b 100644 --- a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx +++ b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import { Icon } from 'mastodon/components/icon'; const tooltips = defineMessages({ diff --git a/app/javascript/mastodon/features/notifications/components/follow_request.jsx b/app/javascript/mastodon/features/notifications/components/follow_request.jsx index 93dcf6d87..8a5c997c6 100644 --- a/app/javascript/mastodon/features/notifications/components/follow_request.jsx +++ b/app/javascript/mastodon/features/notifications/components/follow_request.jsx @@ -1,11 +1,15 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl } from 'react-intl'; + +import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + import { Avatar } from 'mastodon/components/avatar'; import { DisplayName } from 'mastodon/components/display_name'; -import { Link } from 'react-router-dom'; import { IconButton } from 'mastodon/components/icon_button'; -import { defineMessages, injectIntl } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; const messages = defineMessages({ authorize: { id: 'follow_request.authorize', defaultMessage: 'Authorize' }, diff --git a/app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx b/app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx index 96f5d67d9..cd46d878b 100644 --- a/app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx +++ b/app/javascript/mastodon/features/notifications/components/grant_permission_button.jsx @@ -1,5 +1,6 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; export default class GrantPermissionButton extends PureComponent { diff --git a/app/javascript/mastodon/features/notifications/components/notification.jsx b/app/javascript/mastodon/features/notifications/components/notification.jsx index 7d5b18554..044e6969e 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.jsx +++ b/app/javascript/mastodon/features/notifications/components/notification.jsx @@ -1,16 +1,23 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { injectIntl, FormattedMessage, defineMessages } from 'react-intl'; -import { HotKeys } from 'react-hotkeys'; import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me } from 'mastodon/initial_state'; -import StatusContainer from 'mastodon/containers/status_container'; -import AccountContainer from 'mastodon/containers/account_container'; -import Report from './report'; -import FollowRequestContainer from '../containers/follow_request_container'; -import { Icon } from 'mastodon/components/icon'; -import { Link } from 'react-router-dom'; + +import { injectIntl, FormattedMessage, defineMessages } from 'react-intl'; + import classNames from 'classnames'; +import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { HotKeys } from 'react-hotkeys'; + +import { Icon } from 'mastodon/components/icon'; +import AccountContainer from 'mastodon/containers/account_container'; +import StatusContainer from 'mastodon/containers/status_container'; +import { me } from 'mastodon/initial_state'; + +import FollowRequestContainer from '../containers/follow_request_container'; + +import Report from './report'; const messages = defineMessages({ favourite: { id: 'notification.favourite', defaultMessage: '{name} favourited your status' }, diff --git a/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx b/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx index d42b350b7..59b0335c1 100644 --- a/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx +++ b/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx @@ -1,12 +1,15 @@ +import PropTypes from 'prop-types'; import { PureComponent } from 'react'; -import { Icon } from 'mastodon/components/icon'; -import Button from 'mastodon/components/button'; -import { IconButton } from 'mastodon/components/icon_button'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { connect } from 'react-redux'; + import { requestBrowserPermission } from 'mastodon/actions/notifications'; import { changeSetting } from 'mastodon/actions/settings'; -import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import Button from 'mastodon/components/button'; +import { Icon } from 'mastodon/components/icon'; +import { IconButton } from 'mastodon/components/icon_button'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, diff --git a/app/javascript/mastodon/features/notifications/components/report.jsx b/app/javascript/mastodon/features/notifications/components/report.jsx index 4f133cc03..90412aa3b 100644 --- a/app/javascript/mastodon/features/notifications/components/report.jsx +++ b/app/javascript/mastodon/features/notifications/components/report.jsx @@ -1,7 +1,10 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; + import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; + import { AvatarOverlay } from 'mastodon/components/avatar_overlay'; import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; diff --git a/app/javascript/mastodon/features/notifications/components/setting_toggle.jsx b/app/javascript/mastodon/features/notifications/components/setting_toggle.jsx index 7eec664a1..9bf4b147a 100644 --- a/app/javascript/mastodon/features/notifications/components/setting_toggle.jsx +++ b/app/javascript/mastodon/features/notifications/components/setting_toggle.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import ImmutablePropTypes from 'react-immutable-proptypes'; + import Toggle from 'react-toggle'; export default class SettingToggle extends PureComponent { diff --git a/app/javascript/mastodon/features/notifications/containers/column_settings_container.js b/app/javascript/mastodon/features/notifications/containers/column_settings_container.js index 515afaca9..292767bad 100644 --- a/app/javascript/mastodon/features/notifications/containers/column_settings_container.js +++ b/app/javascript/mastodon/features/notifications/containers/column_settings_container.js @@ -1,11 +1,13 @@ -import { connect } from 'react-redux'; import { defineMessages, injectIntl } from 'react-intl'; -import ColumnSettings from '../components/column_settings'; -import { changeSetting } from '../../../actions/settings'; + +import { connect } from 'react-redux'; + +import { showAlert } from '../../../actions/alerts'; +import { openModal } from '../../../actions/modal'; import { setFilter, clearNotifications, requestBrowserPermission } from '../../../actions/notifications'; import { changeAlerts as changePushNotifications } from '../../../actions/push_notifications'; -import { openModal } from '../../../actions/modal'; -import { showAlert } from '../../../actions/alerts'; +import { changeSetting } from '../../../actions/settings'; +import ColumnSettings from '../components/column_settings'; const messages = defineMessages({ clearMessage: { id: 'notifications.clear_confirmation', defaultMessage: 'Are you sure you want to permanently clear all your notifications?' }, diff --git a/app/javascript/mastodon/features/notifications/containers/filter_bar_container.js b/app/javascript/mastodon/features/notifications/containers/filter_bar_container.js index 4d495c290..4e0184cef 100644 --- a/app/javascript/mastodon/features/notifications/containers/filter_bar_container.js +++ b/app/javascript/mastodon/features/notifications/containers/filter_bar_container.js @@ -1,6 +1,7 @@ import { connect } from 'react-redux'; -import FilterBar from '../components/filter_bar'; + import { setFilter } from '../../../actions/notifications'; +import FilterBar from '../components/filter_bar'; const makeMapStateToProps = state => ({ selectedFilter: state.getIn(['settings', 'notifications', 'quickFilter', 'active']), diff --git a/app/javascript/mastodon/features/notifications/containers/follow_request_container.js b/app/javascript/mastodon/features/notifications/containers/follow_request_container.js index f9f6c577e..993ce710f 100644 --- a/app/javascript/mastodon/features/notifications/containers/follow_request_container.js +++ b/app/javascript/mastodon/features/notifications/containers/follow_request_container.js @@ -1,7 +1,9 @@ import { connect } from 'react-redux'; -import { makeGetAccount } from 'mastodon/selectors'; -import FollowRequest from '../components/follow_request'; + import { authorizeFollowRequest, rejectFollowRequest } from 'mastodon/actions/accounts'; +import { makeGetAccount } from 'mastodon/selectors'; + +import FollowRequest from '../components/follow_request'; const makeMapStateToProps = () => { const getAccount = makeGetAccount(); diff --git a/app/javascript/mastodon/features/notifications/containers/notification_container.js b/app/javascript/mastodon/features/notifications/containers/notification_container.js index 8c5688acb..4458fd7bc 100644 --- a/app/javascript/mastodon/features/notifications/containers/notification_container.js +++ b/app/javascript/mastodon/features/notifications/containers/notification_container.js @@ -1,6 +1,5 @@ import { connect } from 'react-redux'; -import { makeGetNotification, makeGetStatus, makeGetReport } from '../../../selectors'; -import Notification from '../components/notification'; + import { initBoostModal } from '../../../actions/boosts'; import { mentionCompose } from '../../../actions/compose'; import { @@ -14,6 +13,8 @@ import { revealStatus, } from '../../../actions/statuses'; import { boostModal } from '../../../initial_state'; +import { makeGetNotification, makeGetStatus, makeGetReport } from '../../../selectors'; +import Notification from '../components/notification'; const makeMapStateToProps = () => { const getNotification = makeGetNotification(); diff --git a/app/javascript/mastodon/features/notifications/index.jsx b/app/javascript/mastodon/features/notifications/index.jsx index 5375013d1..ef889acbc 100644 --- a/app/javascript/mastodon/features/notifications/index.jsx +++ b/app/javascript/mastodon/features/notifications/index.jsx @@ -1,9 +1,23 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + +import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import Column from '../../components/column'; -import ColumnHeader from '../../components/column_header'; +import { connect } from 'react-redux'; +import { createSelector } from 'reselect'; + +import { debounce } from 'lodash'; + +import { compareId } from 'mastodon/compare_id'; +import { Icon } from 'mastodon/components/icon'; +import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator'; + +import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; +import { submitMarkers } from '../../actions/markers'; import { expandNotifications, scrollTopNotifications, @@ -12,22 +26,15 @@ import { unmountNotifications, markNotificationsAsRead, } from '../../actions/notifications'; -import { submitMarkers } from '../../actions/markers'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; -import NotificationContainer from './containers/notification_container'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import Column from '../../components/column'; +import ColumnHeader from '../../components/column_header'; +import LoadGap from '../../components/load_gap'; +import ScrollableList from '../../components/scrollable_list'; + +import NotificationsPermissionBanner from './components/notifications_permission_banner'; import ColumnSettingsContainer from './containers/column_settings_container'; import FilterBarContainer from './containers/filter_bar_container'; -import { createSelector } from 'reselect'; -import { List as ImmutableList } from 'immutable'; -import { debounce } from 'lodash'; -import ScrollableList from '../../components/scrollable_list'; -import LoadGap from '../../components/load_gap'; -import { Icon } from 'mastodon/components/icon'; -import { compareId } from 'mastodon/compare_id'; -import NotificationsPermissionBanner from './components/notifications_permission_banner'; -import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator'; -import { Helmet } from 'react-helmet'; +import NotificationContainer from './containers/notification_container'; const messages = defineMessages({ title: { id: 'column.notifications', defaultMessage: 'Notifications' }, diff --git a/app/javascript/mastodon/features/onboarding/components/progress_indicator.jsx b/app/javascript/mastodon/features/onboarding/components/progress_indicator.jsx index 0d62f4e94..32d1754ff 100644 --- a/app/javascript/mastodon/features/onboarding/components/progress_indicator.jsx +++ b/app/javascript/mastodon/features/onboarding/components/progress_indicator.jsx @@ -1,8 +1,10 @@ -import { Fragment } from 'react'; import PropTypes from 'prop-types'; -import { Check } from 'mastodon/components/check'; +import { Fragment } from 'react'; + import classNames from 'classnames'; +import { Check } from 'mastodon/components/check'; + const ProgressIndicator = ({ steps, completed }) => ( <div className='onboarding__progress-indicator'> {(new Array(steps)).fill().map((_, i) => ( diff --git a/app/javascript/mastodon/features/onboarding/components/step.jsx b/app/javascript/mastodon/features/onboarding/components/step.jsx index e612f681e..0f478f26a 100644 --- a/app/javascript/mastodon/features/onboarding/components/step.jsx +++ b/app/javascript/mastodon/features/onboarding/components/step.jsx @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; -import { Icon } from 'mastodon/components/icon'; + import { Check } from 'mastodon/components/check'; +import { Icon } from 'mastodon/components/icon'; const Step = ({ label, description, icon, completed, onClick, href }) => { const content = ( diff --git a/app/javascript/mastodon/features/onboarding/follows.jsx b/app/javascript/mastodon/features/onboarding/follows.jsx index 30e7b1419..3807ce922 100644 --- a/app/javascript/mastodon/features/onboarding/follows.jsx +++ b/app/javascript/mastodon/features/onboarding/follows.jsx @@ -1,16 +1,20 @@ -import { PureComponent } from 'react'; -import Column from 'mastodon/components/column'; -import ColumnBackButton from 'mastodon/components/column_back_button'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage, FormattedHTMLMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; + import { fetchSuggestions } from 'mastodon/actions/suggestions'; import { markAsPartial } from 'mastodon/actions/timelines'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import Account from 'mastodon/containers/account_container'; +import Column from 'mastodon/components/column'; +import ColumnBackButton from 'mastodon/components/column_back_button'; import { EmptyAccount } from 'mastodon/components/empty_account'; -import { FormattedMessage, FormattedHTMLMessage } from 'react-intl'; -import { makeGetAccount } from 'mastodon/selectors'; +import Account from 'mastodon/containers/account_container'; import { me } from 'mastodon/initial_state'; +import { makeGetAccount } from 'mastodon/selectors'; + import ProgressIndicator from './components/progress_indicator'; const mapStateToProps = () => { diff --git a/app/javascript/mastodon/features/onboarding/index.jsx b/app/javascript/mastodon/features/onboarding/index.jsx index e9018f15e..ecebdb696 100644 --- a/app/javascript/mastodon/features/onboarding/index.jsx +++ b/app/javascript/mastodon/features/onboarding/index.jsx @@ -1,22 +1,28 @@ import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { connect } from 'react-redux'; -import { focusCompose } from 'mastodon/actions/compose'; -import Column from 'mastodon/features/ui/components/column'; + +import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; + import { Helmet } from 'react-helmet'; -import illustration from 'mastodon/../images/elephant_ui_conversation.svg'; import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { debounce } from 'lodash'; + +import illustration from 'mastodon/../images/elephant_ui_conversation.svg'; +import { fetchAccount } from 'mastodon/actions/accounts'; +import { focusCompose } from 'mastodon/actions/compose'; +import { closeOnboarding } from 'mastodon/actions/onboarding'; +import Column from 'mastodon/features/ui/components/column'; import { me } from 'mastodon/initial_state'; import { makeGetAccount } from 'mastodon/selectors'; -import { closeOnboarding } from 'mastodon/actions/onboarding'; -import { fetchAccount } from 'mastodon/actions/accounts'; + +import ArrowSmallRight from './components/arrow_small_right'; +import Step from './components/step'; import Follows from './follows'; import Share from './share'; -import Step from './components/step'; -import ArrowSmallRight from './components/arrow_small_right'; -import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; -import { debounce } from 'lodash'; const messages = defineMessages({ template: { id: 'onboarding.compose.template', defaultMessage: 'Hello #Mastodon!' }, diff --git a/app/javascript/mastodon/features/onboarding/share.jsx b/app/javascript/mastodon/features/onboarding/share.jsx index 30e148379..1895af912 100644 --- a/app/javascript/mastodon/features/onboarding/share.jsx +++ b/app/javascript/mastodon/features/onboarding/share.jsx @@ -1,16 +1,22 @@ +import PropTypes from 'prop-types'; import { PureComponent } from 'react'; + +import { defineMessages, injectIntl, FormattedMessage, FormattedHTMLMessage } from 'react-intl'; + +import classNames from 'classnames'; +import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; + +import SwipeableViews from 'react-swipeable-views'; + import Column from 'mastodon/components/column'; import ColumnBackButton from 'mastodon/components/column_back_button'; -import PropTypes from 'prop-types'; -import { me, domain } from 'mastodon/initial_state'; -import { connect } from 'react-redux'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { defineMessages, injectIntl, FormattedMessage, FormattedHTMLMessage } from 'react-intl'; -import classNames from 'classnames'; import { Icon } from 'mastodon/components/icon'; +import { me, domain } from 'mastodon/initial_state'; + import ArrowSmallRight from './components/arrow_small_right'; -import { Link } from 'react-router-dom'; -import SwipeableViews from 'react-swipeable-views'; const messages = defineMessages({ shareableMessage: { id: 'onboarding.share.message', defaultMessage: 'I\'m {username} on #Mastodon! Come follow me at {url}' }, diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx index eddddf48a..1743edae9 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx @@ -1,16 +1,20 @@ -import { connect } from 'react-redux'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { IconButton } from 'mastodon/components/icon_button'; -import classNames from 'classnames'; -import { me, boostModal } from 'mastodon/initial_state'; + import { defineMessages, injectIntl } from 'react-intl'; + +import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { initBoostModal } from 'mastodon/actions/boosts'; import { replyCompose } from 'mastodon/actions/compose'; import { reblog, favourite, unreblog, unfavourite } from 'mastodon/actions/interactions'; -import { makeGetStatus } from 'mastodon/selectors'; -import { initBoostModal } from 'mastodon/actions/boosts'; import { openModal } from 'mastodon/actions/modal'; +import { IconButton } from 'mastodon/components/icon_button'; +import { me, boostModal } from 'mastodon/initial_state'; +import { makeGetStatus } from 'mastodon/selectors'; const messages = defineMessages({ reply: { id: 'status.reply', defaultMessage: 'Reply' }, diff --git a/app/javascript/mastodon/features/picture_in_picture/components/header.jsx b/app/javascript/mastodon/features/picture_in_picture/components/header.jsx index 4339c318d..774f40d81 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/header.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/components/header.jsx @@ -1,12 +1,16 @@ -import { connect } from 'react-redux'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { IconButton } from 'mastodon/components/icon_button'; + +import { defineMessages, injectIntl } from 'react-intl'; + import { Link } from 'react-router-dom'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { Avatar } from 'mastodon/components/avatar'; import { DisplayName } from 'mastodon/components/display_name'; -import { defineMessages, injectIntl } from 'react-intl'; +import { IconButton } from 'mastodon/components/icon_button'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, diff --git a/app/javascript/mastodon/features/picture_in_picture/index.jsx b/app/javascript/mastodon/features/picture_in_picture/index.jsx index 788a302e9..f087cd1b1 100644 --- a/app/javascript/mastodon/features/picture_in_picture/index.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/index.jsx @@ -1,11 +1,14 @@ -import { Component } from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import Video from 'mastodon/features/video'; -import Audio from 'mastodon/features/audio'; +import { Component } from 'react'; + +import { connect } from 'react-redux'; + import { removePictureInPicture } from 'mastodon/actions/picture_in_picture'; -import Header from './components/header'; +import Audio from 'mastodon/features/audio'; +import Video from 'mastodon/features/video'; + import Footer from './components/footer'; +import Header from './components/header'; const mapStateToProps = state => ({ ...state.get('picture_in_picture'), diff --git a/app/javascript/mastodon/features/pinned_statuses/index.jsx b/app/javascript/mastodon/features/pinned_statuses/index.jsx index 9ac9c2f59..a93e82cfa 100644 --- a/app/javascript/mastodon/features/pinned_statuses/index.jsx +++ b/app/javascript/mastodon/features/pinned_statuses/index.jsx @@ -1,13 +1,17 @@ -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { fetchPinnedStatuses } from '../../actions/pin_statuses'; -import Column from '../ui/components/column'; import ColumnBackButtonSlim from '../../components/column_back_button_slim'; import StatusList from '../../components/status_list'; -import { defineMessages, injectIntl } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { Helmet } from 'react-helmet'; +import Column from '../ui/components/column'; const messages = defineMessages({ heading: { id: 'column.pins', defaultMessage: 'Pinned post' }, diff --git a/app/javascript/mastodon/features/privacy_policy/index.jsx b/app/javascript/mastodon/features/privacy_policy/index.jsx index 10ec31c14..d420546e4 100644 --- a/app/javascript/mastodon/features/privacy_policy/index.jsx +++ b/app/javascript/mastodon/features/privacy_policy/index.jsx @@ -1,9 +1,12 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { Helmet } from 'react-helmet'; +import { PureComponent } from 'react'; + import { FormattedMessage, FormattedDate, injectIntl, defineMessages } from 'react-intl'; -import Column from 'mastodon/components/column'; + +import { Helmet } from 'react-helmet'; + import api from 'mastodon/api'; +import Column from 'mastodon/components/column'; import { Skeleton } from 'mastodon/components/skeleton'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/public_timeline/components/column_settings.jsx b/app/javascript/mastodon/features/public_timeline/components/column_settings.jsx index 34db9149c..1ceec1ba6 100644 --- a/app/javascript/mastodon/features/public_timeline/components/column_settings.jsx +++ b/app/javascript/mastodon/features/public_timeline/components/column_settings.jsx @@ -1,7 +1,10 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { PureComponent } from 'react'; + import { injectIntl, FormattedMessage } from 'react-intl'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; + import SettingToggle from '../../notifications/components/setting_toggle'; class ColumnSettings extends PureComponent { diff --git a/app/javascript/mastodon/features/public_timeline/containers/column_settings_container.js b/app/javascript/mastodon/features/public_timeline/containers/column_settings_container.js index 8c9e8aef4..6476d51ff 100644 --- a/app/javascript/mastodon/features/public_timeline/containers/column_settings_container.js +++ b/app/javascript/mastodon/features/public_timeline/containers/column_settings_container.js @@ -1,7 +1,8 @@ import { connect } from 'react-redux'; -import ColumnSettings from '../components/column_settings'; -import { changeSetting } from '../../../actions/settings'; + import { changeColumnParams } from '../../../actions/columns'; +import { changeSetting } from '../../../actions/settings'; +import ColumnSettings from '../components/column_settings'; const mapStateToProps = (state, { columnId }) => { const uuid = columnId; diff --git a/app/javascript/mastodon/features/public_timeline/index.jsx b/app/javascript/mastodon/features/public_timeline/index.jsx index f61faa1e7..01b02d402 100644 --- a/app/javascript/mastodon/features/public_timeline/index.jsx +++ b/app/javascript/mastodon/features/public_timeline/index.jsx @@ -1,16 +1,22 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; -import StatusListContainer from '../ui/containers/status_list_container'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + +import { connect } from 'react-redux'; + +import DismissableBanner from 'mastodon/components/dismissable_banner'; + +import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; +import { connectPublicStream } from '../../actions/streaming'; +import { expandPublicTimeline } from '../../actions/timelines'; import Column from '../../components/column'; import ColumnHeader from '../../components/column_header'; -import { expandPublicTimeline } from '../../actions/timelines'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; +import StatusListContainer from '../ui/containers/status_list_container'; + import ColumnSettingsContainer from './containers/column_settings_container'; -import { connectPublicStream } from '../../actions/streaming'; -import { Helmet } from 'react-helmet'; -import DismissableBanner from 'mastodon/components/dismissable_banner'; const messages = defineMessages({ title: { id: 'column.public', defaultMessage: 'Federated timeline' }, diff --git a/app/javascript/mastodon/features/reblogs/index.jsx b/app/javascript/mastodon/features/reblogs/index.jsx index 224809886..31048eba0 100644 --- a/app/javascript/mastodon/features/reblogs/index.jsx +++ b/app/javascript/mastodon/features/reblogs/index.jsx @@ -1,16 +1,21 @@ -import { connect } from 'react-redux'; -import ImmutablePureComponent from 'react-immutable-pure-component'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import LoadingIndicator from '../../components/loading_indicator'; -import { fetchReblogs } from '../../actions/interactions'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { Icon } from 'mastodon/components/icon'; + +import { fetchReblogs } from '../../actions/interactions'; +import ColumnHeader from '../../components/column_header'; +import LoadingIndicator from '../../components/loading_indicator'; +import ScrollableList from '../../components/scrollable_list'; import AccountContainer from '../../containers/account_container'; import Column from '../ui/components/column'; -import ScrollableList from '../../components/scrollable_list'; -import { Icon } from 'mastodon/components/icon'; -import ColumnHeader from '../../components/column_header'; -import { Helmet } from 'react-helmet'; const messages = defineMessages({ refresh: { id: 'refresh', defaultMessage: 'Refresh' }, diff --git a/app/javascript/mastodon/features/report/category.jsx b/app/javascript/mastodon/features/report/category.jsx index 13a5605c6..a6e817c73 100644 --- a/app/javascript/mastodon/features/report/category.jsx +++ b/app/javascript/mastodon/features/report/category.jsx @@ -1,11 +1,15 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import Button from 'mastodon/components/button'; + import Option from './components/option'; -import { List as ImmutableList } from 'immutable'; const messages = defineMessages({ dislike: { id: 'report.reasons.dislike', defaultMessage: 'I don\'t like it' }, diff --git a/app/javascript/mastodon/features/report/comment.jsx b/app/javascript/mastodon/features/report/comment.jsx index c4a696181..4888b76bc 100644 --- a/app/javascript/mastodon/features/report/comment.jsx +++ b/app/javascript/mastodon/features/report/comment.jsx @@ -1,9 +1,12 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; -import Button from 'mastodon/components/button'; + import Toggle from 'react-toggle'; +import Button from 'mastodon/components/button'; + const messages = defineMessages({ placeholder: { id: 'report.placeholder', defaultMessage: 'Type or paste additional comments' }, }); diff --git a/app/javascript/mastodon/features/report/components/option.jsx b/app/javascript/mastodon/features/report/components/option.jsx index 9018d4775..ffc0c7395 100644 --- a/app/javascript/mastodon/features/report/components/option.jsx +++ b/app/javascript/mastodon/features/report/components/option.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import classNames from 'classnames'; + import { Check } from 'mastodon/components/check'; export default class Option extends PureComponent { diff --git a/app/javascript/mastodon/features/report/components/status_check_box.jsx b/app/javascript/mastodon/features/report/components/status_check_box.jsx index e4b1333f8..c22745ee5 100644 --- a/app/javascript/mastodon/features/report/components/status_check_box.jsx +++ b/app/javascript/mastodon/features/report/components/status_check_box.jsx @@ -1,14 +1,18 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { injectIntl, defineMessages } from 'react-intl'; + import ImmutablePropTypes from 'react-immutable-proptypes'; -import StatusContent from 'mastodon/components/status_content'; + import { Avatar } from 'mastodon/components/avatar'; import { DisplayName } from 'mastodon/components/display_name'; -import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; -import Option from './option'; -import MediaAttachments from 'mastodon/components/media_attachments'; -import { injectIntl, defineMessages } from 'react-intl'; import { Icon } from 'mastodon/components/icon'; +import MediaAttachments from 'mastodon/components/media_attachments'; +import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; +import StatusContent from 'mastodon/components/status_content'; + +import Option from './option'; const messages = defineMessages({ public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, diff --git a/app/javascript/mastodon/features/report/containers/status_check_box_container.js b/app/javascript/mastodon/features/report/containers/status_check_box_container.js index 65a7c11fd..45ed8f93d 100644 --- a/app/javascript/mastodon/features/report/containers/status_check_box_container.js +++ b/app/javascript/mastodon/features/report/containers/status_check_box_container.js @@ -1,7 +1,9 @@ import { connect } from 'react-redux'; -import StatusCheckBox from '../components/status_check_box'; + import { makeGetStatus } from 'mastodon/selectors'; +import StatusCheckBox from '../components/status_check_box'; + const makeMapStateToProps = () => { const getStatus = makeGetStatus(); diff --git a/app/javascript/mastodon/features/report/rules.jsx b/app/javascript/mastodon/features/report/rules.jsx index 66bc29bc6..67d92839e 100644 --- a/app/javascript/mastodon/features/report/rules.jsx +++ b/app/javascript/mastodon/features/report/rules.jsx @@ -1,9 +1,13 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage } from 'react-intl'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { FormattedMessage } from 'react-intl'; + import Button from 'mastodon/components/button'; + import Option from './components/option'; const mapStateToProps = state => ({ diff --git a/app/javascript/mastodon/features/report/statuses.jsx b/app/javascript/mastodon/features/report/statuses.jsx index adf56479d..78408c96b 100644 --- a/app/javascript/mastodon/features/report/statuses.jsx +++ b/app/javascript/mastodon/features/report/statuses.jsx @@ -1,12 +1,15 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import { OrderedSet } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import StatusCheckBox from 'mastodon/features/report/containers/status_check_box_container'; -import { OrderedSet } from 'immutable'; -import { FormattedMessage } from 'react-intl'; + import Button from 'mastodon/components/button'; import LoadingIndicator from 'mastodon/components/loading_indicator'; +import StatusCheckBox from 'mastodon/features/report/containers/status_check_box_container'; const mapStateToProps = (state, { accountId }) => ({ availableStatusIds: OrderedSet(state.getIn(['timelines', `account:${accountId}:with_replies`, 'items'])), diff --git a/app/javascript/mastodon/features/report/thanks.jsx b/app/javascript/mastodon/features/report/thanks.jsx index 5a4841149..79ddc2e80 100644 --- a/app/javascript/mastodon/features/report/thanks.jsx +++ b/app/javascript/mastodon/features/report/thanks.jsx @@ -1,14 +1,17 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; -import Button from 'mastodon/components/button'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; + import { unfollowAccount, muteAccount, blockAccount, } from 'mastodon/actions/accounts'; +import Button from 'mastodon/components/button'; const mapStateToProps = () => ({}); diff --git a/app/javascript/mastodon/features/standalone/compose/index.jsx b/app/javascript/mastodon/features/standalone/compose/index.jsx index ae639bc1c..c36e843f5 100644 --- a/app/javascript/mastodon/features/standalone/compose/index.jsx +++ b/app/javascript/mastodon/features/standalone/compose/index.jsx @@ -1,8 +1,9 @@ import { PureComponent } from 'react'; + import ComposeFormContainer from '../../compose/containers/compose_form_container'; -import NotificationsContainer from '../../ui/containers/notifications_container'; import LoadingBarContainer from '../../ui/containers/loading_bar_container'; import ModalContainer from '../../ui/containers/modal_container'; +import NotificationsContainer from '../../ui/containers/notifications_container'; export default class Compose extends PureComponent { diff --git a/app/javascript/mastodon/features/status/components/action_bar.jsx b/app/javascript/mastodon/features/status/components/action_bar.jsx index cd721cb13..bc5aed442 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.jsx +++ b/app/javascript/mastodon/features/status/components/action_bar.jsx @@ -1,14 +1,19 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; -import { IconButton } from '../../../components/icon_button'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl } from 'react-intl'; -import { me } from '../../../initial_state'; + import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; + import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions'; +import { IconButton } from '../../../components/icon_button'; +import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; +import { me } from '../../../initial_state'; + const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' }, diff --git a/app/javascript/mastodon/features/status/components/card.jsx b/app/javascript/mastodon/features/status/components/card.jsx index 6634d2c71..d23bbf16a 100644 --- a/app/javascript/mastodon/features/status/components/card.jsx +++ b/app/javascript/mastodon/features/status/components/card.jsx @@ -1,13 +1,18 @@ -import { PureComponent } from 'react'; +import punycode from 'punycode'; + import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import classnames from 'classnames'; + import Immutable from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { FormattedMessage } from 'react-intl'; -import punycode from 'punycode'; -import classnames from 'classnames'; + +import { Blurhash } from 'mastodon/components/blurhash'; import { Icon } from 'mastodon/components/icon'; import { useBlurhash } from 'mastodon/initial_state'; -import { Blurhash } from 'mastodon/components/blurhash'; const IDNA_PREFIX = 'xn--'; diff --git a/app/javascript/mastodon/features/status/components/detailed_status.jsx b/app/javascript/mastodon/features/status/components/detailed_status.jsx index 121de8ee7..00fd0d2cd 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.jsx +++ b/app/javascript/mastodon/features/status/components/detailed_status.jsx @@ -1,21 +1,27 @@ import PropTypes from 'prop-types'; + +import { injectIntl, defineMessages, FormattedDate, FormattedMessage } from 'react-intl'; + +import classNames from 'classnames'; +import { Link } from 'react-router-dom'; + import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { AnimatedNumber } from 'mastodon/components/animated_number'; +import EditedTimestamp from 'mastodon/components/edited_timestamp'; +import { Icon } from 'mastodon/components/icon'; +import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; + import { Avatar } from '../../../components/avatar'; import { DisplayName } from '../../../components/display_name'; -import StatusContent from '../../../components/status_content'; import MediaGallery from '../../../components/media_gallery'; -import { Link } from 'react-router-dom'; -import { injectIntl, defineMessages, FormattedDate, FormattedMessage } from 'react-intl'; -import Card from './card'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import Video from '../../video'; +import StatusContent from '../../../components/status_content'; import Audio from '../../audio'; import scheduleIdleTask from '../../ui/util/schedule_idle_task'; -import classNames from 'classnames'; -import { Icon } from 'mastodon/components/icon'; -import { AnimatedNumber } from 'mastodon/components/animated_number'; -import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; -import EditedTimestamp from 'mastodon/components/edited_timestamp'; +import Video from '../../video'; + +import Card from './card'; const messages = defineMessages({ public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, @@ -207,7 +213,7 @@ class DetailedStatus extends ImmutablePureComponent { } else if (this.context.router) { reblogLink = ( <> - · + · <Link to={`/@${status.getIn(['account', 'acct'])}/${status.get('id')}/reblogs`} className='detailed-status__link'> <Icon id={reblogIcon} /> <span className='detailed-status__reblogs'> @@ -219,7 +225,7 @@ class DetailedStatus extends ImmutablePureComponent { } else { reblogLink = ( <> - · + · <a href={`/interact/${status.get('id')}?type=reblog`} className='detailed-status__link' onClick={this.handleModalLink}> <Icon id={reblogIcon} /> <span className='detailed-status__reblogs'> @@ -253,7 +259,7 @@ class DetailedStatus extends ImmutablePureComponent { if (status.get('edited_at')) { edited = ( <> - · + · <EditedTimestamp statusId={status.get('id')} timestamp={status.get('edited_at')} /> </> ); diff --git a/app/javascript/mastodon/features/status/containers/detailed_status_container.js b/app/javascript/mastodon/features/status/containers/detailed_status_container.js index 835bb41b5..ddae8c028 100644 --- a/app/javascript/mastodon/features/status/containers/detailed_status_container.js +++ b/app/javascript/mastodon/features/status/containers/detailed_status_container.js @@ -1,6 +1,10 @@ +import { defineMessages, injectIntl } from 'react-intl'; + import { connect } from 'react-redux'; -import DetailedStatus from '../components/detailed_status'; -import { makeGetStatus, makeGetPictureInPicture } from '../../../selectors'; + +import { showAlertForError } from '../../../actions/alerts'; +import { initBlockModal } from '../../../actions/blocks'; +import { initBoostModal } from '../../../actions/boosts'; import { replyCompose, mentionCompose, @@ -14,6 +18,9 @@ import { pin, unpin, } from '../../../actions/interactions'; +import { openModal } from '../../../actions/modal'; +import { initMuteModal } from '../../../actions/mutes'; +import { initReport } from '../../../actions/reports'; import { muteStatus, unmuteStatus, @@ -21,14 +28,9 @@ import { hideStatus, revealStatus, } from '../../../actions/statuses'; -import { initMuteModal } from '../../../actions/mutes'; -import { initBlockModal } from '../../../actions/blocks'; -import { initBoostModal } from '../../../actions/boosts'; -import { initReport } from '../../../actions/reports'; -import { openModal } from '../../../actions/modal'; -import { defineMessages, injectIntl } from 'react-intl'; import { boostModal, deleteModal } from '../../../initial_state'; -import { showAlertForError } from '../../../actions/alerts'; +import { makeGetStatus, makeGetPictureInPicture } from '../../../selectors'; +import DetailedStatus from '../components/detailed_status'; const messages = defineMessages({ deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' }, diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index 3570e0f35..4c41958aa 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -1,9 +1,51 @@ -import Immutable from 'immutable'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; + +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + import classNames from 'classnames'; +import { Helmet } from 'react-helmet'; + +import Immutable from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; import { createSelector } from 'reselect'; + +import { HotKeys } from 'react-hotkeys'; + +import { Icon } from 'mastodon/components/icon'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; +import ScrollContainer from 'mastodon/containers/scroll_container'; +import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; + +import { + unblockAccount, + unmuteAccount, +} from '../../actions/accounts'; +import { initBlockModal } from '../../actions/blocks'; +import { initBoostModal } from '../../actions/boosts'; +import { + replyCompose, + mentionCompose, + directCompose, +} from '../../actions/compose'; +import { + blockDomain, + unblockDomain, +} from '../../actions/domain_blocks'; +import { + favourite, + unfavourite, + bookmark, + unbookmark, + reblog, + unreblog, + pin, + unpin, +} from '../../actions/interactions'; +import { openModal } from '../../actions/modal'; +import { initMuteModal } from '../../actions/mutes'; +import { initReport } from '../../actions/reports'; import { fetchStatus, muteStatus, @@ -15,51 +57,16 @@ import { translateStatus, undoStatusTranslation, } from '../../actions/statuses'; -import LoadingIndicator from 'mastodon/components/loading_indicator'; -import DetailedStatus from './components/detailed_status'; -import ActionBar from './components/action_bar'; -import Column from '../ui/components/column'; -import { - favourite, - unfavourite, - bookmark, - unbookmark, - reblog, - unreblog, - pin, - unpin, -} from '../../actions/interactions'; -import { - replyCompose, - mentionCompose, - directCompose, -} from '../../actions/compose'; -import { - unblockAccount, - unmuteAccount, -} from '../../actions/accounts'; -import { - blockDomain, - unblockDomain, -} from '../../actions/domain_blocks'; -import { initMuteModal } from '../../actions/mutes'; -import { initBlockModal } from '../../actions/blocks'; -import { initBoostModal } from '../../actions/boosts'; -import { initReport } from '../../actions/reports'; -import { makeGetStatus, makeGetPictureInPicture } from '../../selectors'; -import ScrollContainer from 'mastodon/containers/scroll_container'; import ColumnHeader from '../../components/column_header'; -import StatusContainer from '../../containers/status_container'; -import { openModal } from '../../actions/modal'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { HotKeys } from 'react-hotkeys'; -import { boostModal, deleteModal } from '../../initial_state'; -import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; import { textForScreenReader, defaultMediaVisibility } from '../../components/status'; -import { Icon } from 'mastodon/components/icon'; -import { Helmet } from 'react-helmet'; -import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; +import StatusContainer from '../../containers/status_container'; +import { boostModal, deleteModal } from '../../initial_state'; +import { makeGetStatus, makeGetPictureInPicture } from '../../selectors'; +import Column from '../ui/components/column'; +import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; + +import ActionBar from './components/action_bar'; +import DetailedStatus from './components/detailed_status'; const messages = defineMessages({ deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' }, diff --git a/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx b/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx index 6ef6ce86a..eb128f68e 100644 --- a/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx +++ b/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx @@ -1,15 +1,18 @@ import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; + +import { is, List as ImmutableList, Set as ImmutableSet } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; -import { is, List as ImmutableList, Set as ImmutableSet } from 'immutable'; -import { languages as preloadedLanguages } from 'mastodon/initial_state'; -import Option from 'mastodon/features/report/components/option'; -import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; -import { IconButton } from 'mastodon/components/icon_button'; -import Button from 'mastodon/components/button'; + import { followAccount } from 'mastodon/actions/accounts'; +import Button from 'mastodon/components/button'; +import { IconButton } from 'mastodon/components/icon_button'; +import Option from 'mastodon/features/report/components/option'; +import { languages as preloadedLanguages } from 'mastodon/initial_state'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, diff --git a/app/javascript/mastodon/features/ui/components/__tests__/column-test.jsx b/app/javascript/mastodon/features/ui/components/__tests__/column-test.jsx index 8f935299f..048294242 100644 --- a/app/javascript/mastodon/features/ui/components/__tests__/column-test.jsx +++ b/app/javascript/mastodon/features/ui/components/__tests__/column-test.jsx @@ -1,4 +1,5 @@ import { render, fireEvent, screen } from '@testing-library/react'; + import Column from '../column'; describe('<Column />', () => { diff --git a/app/javascript/mastodon/features/ui/components/actions_modal.jsx b/app/javascript/mastodon/features/ui/components/actions_modal.jsx index d8d9ef963..b6a9abdda 100644 --- a/app/javascript/mastodon/features/ui/components/actions_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/actions_modal.jsx @@ -1,8 +1,11 @@ import PropTypes from 'prop-types'; + +import classNames from 'classnames'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; + import { IconButton } from '../../../components/icon_button'; -import classNames from 'classnames'; export default class ActionsModal extends ImmutablePureComponent { diff --git a/app/javascript/mastodon/features/ui/components/audio_modal.jsx b/app/javascript/mastodon/features/ui/components/audio_modal.jsx index a1dbe9b73..b8e6ee5e4 100644 --- a/app/javascript/mastodon/features/ui/components/audio_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/audio_modal.jsx @@ -1,8 +1,10 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import Audio from 'mastodon/features/audio'; -import { connect } from 'react-redux'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import Audio from 'mastodon/features/audio'; import Footer from 'mastodon/features/picture_in_picture/components/footer'; const mapStateToProps = (state, { statusId }) => ({ diff --git a/app/javascript/mastodon/features/ui/components/block_modal.jsx b/app/javascript/mastodon/features/ui/components/block_modal.jsx index 3e3f7c83a..962b19344 100644 --- a/app/javascript/mastodon/features/ui/components/block_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/block_modal.jsx @@ -1,13 +1,15 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import { injectIntl, FormattedMessage } from 'react-intl'; -import { makeGetAccount } from '../../../selectors'; -import Button from '../../../components/button'; -import { closeModal } from '../../../actions/modal'; -import { blockAccount } from '../../../actions/accounts'; -import { initReport } from '../../../actions/reports'; +import { PureComponent } from 'react'; +import { injectIntl, FormattedMessage } from 'react-intl'; + +import { connect } from 'react-redux'; + +import { blockAccount } from '../../../actions/accounts'; +import { closeModal } from '../../../actions/modal'; +import { initReport } from '../../../actions/reports'; +import Button from '../../../components/button'; +import { makeGetAccount } from '../../../selectors'; const makeMapStateToProps = () => { const getAccount = makeGetAccount(); diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.jsx b/app/javascript/mastodon/features/ui/components/boost_modal.jsx index d20cd255b..af6c08134 100644 --- a/app/javascript/mastodon/features/ui/components/boost_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/boost_modal.jsx @@ -1,18 +1,23 @@ -import { connect } from 'react-redux'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import Button from '../../../components/button'; -import StatusContent from '../../../components/status_content'; -import { Avatar } from '../../../components/avatar'; -import { RelativeTimestamp } from '../../../components/relative_timestamp'; -import { DisplayName } from '../../../components/display_name'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { Icon } from 'mastodon/components/icon'; -import AttachmentList from 'mastodon/components/attachment_list'; -import PrivacyDropdown from 'mastodon/features/compose/components/privacy_dropdown'; + import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + import { changeBoostPrivacy } from 'mastodon/actions/boosts'; +import AttachmentList from 'mastodon/components/attachment_list'; +import { Icon } from 'mastodon/components/icon'; +import PrivacyDropdown from 'mastodon/features/compose/components/privacy_dropdown'; + +import { Avatar } from '../../../components/avatar'; +import Button from '../../../components/button'; +import { DisplayName } from '../../../components/display_name'; +import { RelativeTimestamp } from '../../../components/relative_timestamp'; +import StatusContent from '../../../components/status_content'; const messages = defineMessages({ cancel_reblog: { id: 'status.cancel_reblog_private', defaultMessage: 'Unboost' }, diff --git a/app/javascript/mastodon/features/ui/components/bundle.jsx b/app/javascript/mastodon/features/ui/components/bundle.jsx index 1474d89a4..15c4220b3 100644 --- a/app/javascript/mastodon/features/ui/components/bundle.jsx +++ b/app/javascript/mastodon/features/ui/components/bundle.jsx @@ -1,5 +1,5 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; const emptyComponent = () => null; const noop = () => { }; diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx b/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx index f92b44f5d..b85d5ec01 100644 --- a/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx +++ b/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx @@ -1,11 +1,14 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { injectIntl, FormattedMessage } from 'react-intl'; -import Column from 'mastodon/components/column'; -import Button from 'mastodon/components/button'; + +import classNames from 'classnames'; import { Helmet } from 'react-helmet'; import { Link } from 'react-router-dom'; -import classNames from 'classnames'; + +import Button from 'mastodon/components/button'; +import Column from 'mastodon/components/column'; import { autoPlayGif } from 'mastodon/initial_state'; class GIF extends PureComponent { diff --git a/app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx b/app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx index e39b8c4b2..67dba3ce0 100644 --- a/app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx +++ b/app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx @@ -1,5 +1,6 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl } from 'react-intl'; import { IconButton } from '../../../components/icon_button'; diff --git a/app/javascript/mastodon/features/ui/components/column.jsx b/app/javascript/mastodon/features/ui/components/column.jsx index 69bf7ca4d..2a70162d8 100644 --- a/app/javascript/mastodon/features/ui/components/column.jsx +++ b/app/javascript/mastodon/features/ui/components/column.jsx @@ -1,9 +1,12 @@ -import { PureComponent } from 'react'; -import ColumnHeader from './column_header'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { debounce } from 'lodash'; -import { scrollTop } from '../../../scroll'; + import { isMobile } from '../../../is_mobile'; +import { scrollTop } from '../../../scroll'; + +import ColumnHeader from './column_header'; export default class Column extends PureComponent { diff --git a/app/javascript/mastodon/features/ui/components/column_header.jsx b/app/javascript/mastodon/features/ui/components/column_header.jsx index b1ac14338..8d21e2ba5 100644 --- a/app/javascript/mastodon/features/ui/components/column_header.jsx +++ b/app/javascript/mastodon/features/ui/components/column_header.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import classNames from 'classnames'; + import { Icon } from 'mastodon/components/icon'; export default class ColumnHeader extends PureComponent { diff --git a/app/javascript/mastodon/features/ui/components/column_link.jsx b/app/javascript/mastodon/features/ui/components/column_link.jsx index 434244fbd..09a2e44bf 100644 --- a/app/javascript/mastodon/features/ui/components/column_link.jsx +++ b/app/javascript/mastodon/features/ui/components/column_link.jsx @@ -1,7 +1,9 @@ import PropTypes from 'prop-types'; -import { NavLink } from 'react-router-dom'; -import { Icon } from 'mastodon/components/icon'; + import classNames from 'classnames'; +import { NavLink } from 'react-router-dom'; + +import { Icon } from 'mastodon/components/icon'; const ColumnLink = ({ icon, text, to, href, method, badge, transparent, ...other }) => { const className = classNames('column-link', { 'column-link--transparent': transparent }); diff --git a/app/javascript/mastodon/features/ui/components/column_loading.jsx b/app/javascript/mastodon/features/ui/components/column_loading.jsx index 72cc68e82..102550edf 100644 --- a/app/javascript/mastodon/features/ui/components/column_loading.jsx +++ b/app/javascript/mastodon/features/ui/components/column_loading.jsx @@ -1,8 +1,9 @@ import PropTypes from 'prop-types'; +import ImmutablePureComponent from 'react-immutable-pure-component'; + import Column from '../../../components/column'; import ColumnHeader from '../../../components/column_header'; -import ImmutablePureComponent from 'react-immutable-pure-component'; export default class ColumnLoading extends ImmutablePureComponent { diff --git a/app/javascript/mastodon/features/ui/components/columns_area.jsx b/app/javascript/mastodon/features/ui/components/columns_area.jsx index 07913646f..672f28fb7 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.jsx +++ b/app/javascript/mastodon/features/ui/components/columns_area.jsx @@ -1,11 +1,13 @@ -import { Children, cloneElement } from 'react'; import PropTypes from 'prop-types'; +import { Children, cloneElement } from 'react'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; + +import { supportsPassiveEvents } from 'detect-passive-events'; + +import { scrollRight } from '../../../scroll'; import BundleContainer from '../containers/bundle_container'; -import ColumnLoading from './column_loading'; -import DrawerLoading from './drawer_loading'; -import BundleColumnError from './bundle_column_error'; import { Compose, Notifications, @@ -19,10 +21,12 @@ import { ListTimeline, Directory, } from '../util/async-components'; + +import BundleColumnError from './bundle_column_error'; +import ColumnLoading from './column_loading'; import ComposePanel from './compose_panel'; +import DrawerLoading from './drawer_loading'; import NavigationPanel from './navigation_panel'; -import { supportsPassiveEvents } from 'detect-passive-events'; -import { scrollRight } from '../../../scroll'; const componentMap = { 'COMPOSE': Compose, diff --git a/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx b/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx index b100a4306..4a55f25cb 100644 --- a/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx @@ -1,15 +1,19 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage } from 'react-intl'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { FormattedMessage } from 'react-intl'; -import { closeModal } from 'mastodon/actions/modal'; -import emojify from 'mastodon/features/emoji/emoji'; + import escapeTextContentForBrowser from 'escape-html'; -import InlineAccount from 'mastodon/components/inline_account'; + +import { closeModal } from 'mastodon/actions/modal'; import { IconButton } from 'mastodon/components/icon_button'; -import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; +import InlineAccount from 'mastodon/components/inline_account'; import MediaAttachments from 'mastodon/components/media_attachments'; +import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; +import emojify from 'mastodon/features/emoji/emoji'; const mapStateToProps = (state, { statusId }) => ({ language: state.getIn(['statuses', statusId, 'language']), diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.jsx b/app/javascript/mastodon/features/ui/components/compose_panel.jsx index 51cd2a5ec..713ecb472 100644 --- a/app/javascript/mastodon/features/ui/components/compose_panel.jsx +++ b/app/javascript/mastodon/features/ui/components/compose_panel.jsx @@ -1,12 +1,15 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import SearchContainer from 'mastodon/features/compose/containers/search_container'; +import { PureComponent } from 'react'; + +import { connect } from 'react-redux'; + +import { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose'; +import ServerBanner from 'mastodon/components/server_banner'; import ComposeFormContainer from 'mastodon/features/compose/containers/compose_form_container'; import NavigationContainer from 'mastodon/features/compose/containers/navigation_container'; +import SearchContainer from 'mastodon/features/compose/containers/search_container'; + import LinkFooter from './link_footer'; -import ServerBanner from 'mastodon/components/server_banner'; -import { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose'; class ComposePanel extends PureComponent { diff --git a/app/javascript/mastodon/features/ui/components/confirmation_modal.jsx b/app/javascript/mastodon/features/ui/components/confirmation_modal.jsx index 412993ea2..5a940e09c 100644 --- a/app/javascript/mastodon/features/ui/components/confirmation_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/confirmation_modal.jsx @@ -1,6 +1,8 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { injectIntl, FormattedMessage } from 'react-intl'; + import Button from '../../../components/button'; class ConfirmationModal extends PureComponent { diff --git a/app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx b/app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx index 0fa497e8b..6c4fefb0d 100644 --- a/app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx +++ b/app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx @@ -1,10 +1,14 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; -import { Link } from 'react-router-dom'; +import { PureComponent } from 'react'; + import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; -import { disabledAccountId, movedToAccountId, domain } from 'mastodon/initial_state'; + +import { Link } from 'react-router-dom'; + +import { connect } from 'react-redux'; + import { openModal } from 'mastodon/actions/modal'; +import { disabledAccountId, movedToAccountId, domain } from 'mastodon/initial_state'; import { logOut } from 'mastodon/utils/log_out'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/ui/components/embed_modal.jsx b/app/javascript/mastodon/features/ui/components/embed_modal.jsx index 6187bfeb2..b08d53ab1 100644 --- a/app/javascript/mastodon/features/ui/components/embed_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/embed_modal.jsx @@ -1,6 +1,9 @@ import PropTypes from 'prop-types'; -import ImmutablePureComponent from 'react-immutable-pure-component'; + import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; + +import ImmutablePureComponent from 'react-immutable-pure-component'; + import api from 'mastodon/api'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/ui/components/filter_modal.jsx b/app/javascript/mastodon/features/ui/components/filter_modal.jsx index 7b5a1a03a..12ebf2972 100644 --- a/app/javascript/mastodon/features/ui/components/filter_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/filter_modal.jsx @@ -1,12 +1,15 @@ -import { connect } from 'react-redux'; -import { fetchStatus } from 'mastodon/actions/statuses'; -import { fetchFilters, createFilter, createFilterStatus } from 'mastodon/actions/filters'; import PropTypes from 'prop-types'; + import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; + import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { fetchFilters, createFilter, createFilterStatus } from 'mastodon/actions/filters'; +import { fetchStatus } from 'mastodon/actions/statuses'; import { IconButton } from 'mastodon/components/icon_button'; -import SelectFilter from 'mastodon/features/filters/select_filter'; import AddedToFilter from 'mastodon/features/filters/added_to_filter'; +import SelectFilter from 'mastodon/features/filters/select_filter'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, diff --git a/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx b/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx index d4d852d24..7169b8a27 100644 --- a/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx @@ -1,28 +1,34 @@ -import { PureComponent } from 'react'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; + +import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import classNames from 'classnames'; -import { changeUploadCompose, uploadThumbnail, onChangeMediaDescription, onChangeMediaFocus } from '../../../actions/compose'; -import Video, { getPointerPosition } from '../../video'; -import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; -import { IconButton } from 'mastodon/components/icon_button'; -import Button from 'mastodon/components/button'; -import Audio from 'mastodon/features/audio'; + import Textarea from 'react-textarea-autosize'; -import UploadProgress from 'mastodon/features/compose/components/upload_progress'; -import CharacterCounter from 'mastodon/features/compose/components/character_counter'; import { length } from 'stringz'; -import { Tesseract as fetchTesseract } from 'mastodon/features/ui/util/async-components'; -import { GIFV } from 'mastodon/components/gifv'; -import { me } from 'mastodon/initial_state'; -// eslint-disable-next-line import/no-extraneous-dependencies -import tesseractCorePath from 'tesseract.js-core/tesseract-core.wasm.js'; // eslint-disable-next-line import/extensions import tesseractWorkerPath from 'tesseract.js/dist/worker.min.js'; +// eslint-disable-next-line import/no-extraneous-dependencies +import tesseractCorePath from 'tesseract.js-core/tesseract-core.wasm.js'; + +import Button from 'mastodon/components/button'; +import { GIFV } from 'mastodon/components/gifv'; +import { IconButton } from 'mastodon/components/icon_button'; +import Audio from 'mastodon/features/audio'; +import CharacterCounter from 'mastodon/features/compose/components/character_counter'; +import UploadProgress from 'mastodon/features/compose/components/upload_progress'; +import { Tesseract as fetchTesseract } from 'mastodon/features/ui/util/async-components'; +import { me } from 'mastodon/initial_state'; import { assetHost } from 'mastodon/utils/config'; +import { changeUploadCompose, uploadThumbnail, onChangeMediaDescription, onChangeMediaFocus } from '../../../actions/compose'; +import Video, { getPointerPosition } from '../../video'; + const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, apply: { id: 'upload_modal.apply', defaultMessage: 'Apply' }, diff --git a/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx index fcc2e180a..d8859167b 100644 --- a/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx +++ b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx @@ -1,12 +1,15 @@ -import { Component } from 'react'; import PropTypes from 'prop-types'; -import { fetchFollowRequests } from 'mastodon/actions/accounts'; -import { connect } from 'react-redux'; -import ColumnLink from 'mastodon/features/ui/components/column_link'; -import { IconWithBadge } from 'mastodon/components/icon_with_badge'; -import { List as ImmutableList } from 'immutable'; +import { Component } from 'react'; + import { injectIntl, defineMessages } from 'react-intl'; +import { List as ImmutableList } from 'immutable'; +import { connect } from 'react-redux'; + +import { fetchFollowRequests } from 'mastodon/actions/accounts'; +import { IconWithBadge } from 'mastodon/components/icon_with_badge'; +import ColumnLink from 'mastodon/features/ui/components/column_link'; + const messages = defineMessages({ text: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, }); diff --git a/app/javascript/mastodon/features/ui/components/header.jsx b/app/javascript/mastodon/features/ui/components/header.jsx index c73626865..f13ceb4a8 100644 --- a/app/javascript/mastodon/features/ui/components/header.jsx +++ b/app/javascript/mastodon/features/ui/components/header.jsx @@ -1,12 +1,16 @@ -import { PureComponent } from 'react'; -import { WordmarkLogo, SymbolLogo } from 'mastodon/components/logo'; -import { Link, withRouter } from 'react-router-dom'; -import { FormattedMessage } from 'react-intl'; -import { registrationsOpen, me } from 'mastodon/initial_state'; -import { Avatar } from 'mastodon/components/avatar'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import { Link, withRouter } from 'react-router-dom'; + import { connect } from 'react-redux'; + import { openModal } from 'mastodon/actions/modal'; +import { Avatar } from 'mastodon/components/avatar'; +import { WordmarkLogo, SymbolLogo } from 'mastodon/components/logo'; +import { registrationsOpen, me } from 'mastodon/initial_state'; const Account = connect(state => ({ account: state.getIn(['accounts', me]), diff --git a/app/javascript/mastodon/features/ui/components/image_loader.jsx b/app/javascript/mastodon/features/ui/components/image_loader.jsx index 62b54a3e9..9dabc621b 100644 --- a/app/javascript/mastodon/features/ui/components/image_loader.jsx +++ b/app/javascript/mastodon/features/ui/components/image_loader.jsx @@ -1,7 +1,10 @@ -import classNames from 'classnames'; import PropTypes from 'prop-types'; import { PureComponent } from 'react'; + +import classNames from 'classnames'; + import { LoadingBar } from 'react-redux-loading-bar'; + import ZoomableImage from './zoomable_image'; export default class ImageLoader extends PureComponent { diff --git a/app/javascript/mastodon/features/ui/components/image_modal.jsx b/app/javascript/mastodon/features/ui/components/image_modal.jsx index a55095dc0..4a73e86a9 100644 --- a/app/javascript/mastodon/features/ui/components/image_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/image_modal.jsx @@ -1,8 +1,12 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import classNames from 'classnames'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl } from 'react-intl'; + +import classNames from 'classnames'; + import { IconButton } from 'mastodon/components/icon_button'; + import ImageLoader from './image_loader'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/ui/components/link_footer.jsx b/app/javascript/mastodon/features/ui/components/link_footer.jsx index 273b089bb..4ae6f1dcf 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.jsx +++ b/app/javascript/mastodon/features/ui/components/link_footer.jsx @@ -1,12 +1,16 @@ -import { connect } from 'react-redux'; -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; + import { Link } from 'react-router-dom'; -import { domain, version, source_url, statusPageUrl, profile_directory as profileDirectory } from 'mastodon/initial_state'; -import { logOut } from 'mastodon/utils/log_out'; + +import { connect } from 'react-redux'; + import { openModal } from 'mastodon/actions/modal'; +import { domain, version, source_url, statusPageUrl, profile_directory as profileDirectory } from 'mastodon/initial_state'; import { PERMISSION_INVITE_USERS } from 'mastodon/permissions'; +import { logOut } from 'mastodon/utils/log_out'; const messages = defineMessages({ logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, diff --git a/app/javascript/mastodon/features/ui/components/list_panel.jsx b/app/javascript/mastodon/features/ui/components/list_panel.jsx index 70e84e9b6..10fe89d8a 100644 --- a/app/javascript/mastodon/features/ui/components/list_panel.jsx +++ b/app/javascript/mastodon/features/ui/components/list_panel.jsx @@ -1,10 +1,14 @@ import PropTypes from 'prop-types'; -import { createSelector } from 'reselect'; + +import { withRouter } from 'react-router-dom'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { withRouter } from 'react-router-dom'; +import { createSelector } from 'reselect'; + import { fetchLists } from 'mastodon/actions/lists'; + import ColumnLink from './column_link'; const getOrderedLists = createSelector([state => state.get('lists')], lists => { diff --git a/app/javascript/mastodon/features/ui/components/media_modal.jsx b/app/javascript/mastodon/features/ui/components/media_modal.jsx index 1c9cf19e0..fad08b675 100644 --- a/app/javascript/mastodon/features/ui/components/media_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/media_modal.jsx @@ -1,17 +1,23 @@ -import ReactSwipeableViews from 'react-swipeable-views'; -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import Video from 'mastodon/features/video'; -import classNames from 'classnames'; + import { defineMessages, injectIntl } from 'react-intl'; -import { IconButton } from 'mastodon/components/icon_button'; + +import classNames from 'classnames'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import ImageLoader from './image_loader'; -import { Icon } from 'mastodon/components/icon'; -import { GIFV } from 'mastodon/components/gifv'; -import { disableSwiping } from 'mastodon/initial_state'; -import Footer from 'mastodon/features/picture_in_picture/components/footer'; + +import ReactSwipeableViews from 'react-swipeable-views'; + import { getAverageFromBlurhash } from 'mastodon/blurhash'; +import { GIFV } from 'mastodon/components/gifv'; +import { Icon } from 'mastodon/components/icon'; +import { IconButton } from 'mastodon/components/icon_button'; +import Footer from 'mastodon/features/picture_in_picture/components/footer'; +import Video from 'mastodon/features/video'; +import { disableSwiping } from 'mastodon/initial_state'; + +import ImageLoader from './image_loader'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, diff --git a/app/javascript/mastodon/features/ui/components/modal_root.jsx b/app/javascript/mastodon/features/ui/components/modal_root.jsx index c86b5726d..5700e0f54 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.jsx +++ b/app/javascript/mastodon/features/ui/components/modal_root.jsx @@ -1,18 +1,9 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { getScrollbarWidth } from 'mastodon/utils/scrollbar'; +import { PureComponent } from 'react'; + +import { Helmet } from 'react-helmet'; + import Base from 'mastodon/components/modal_root'; -import BundleContainer from '../containers/bundle_container'; -import BundleModalError from './bundle_modal_error'; -import ModalLoading from './modal_loading'; -import ActionsModal from './actions_modal'; -import MediaModal from './media_modal'; -import VideoModal from './video_modal'; -import BoostModal from './boost_modal'; -import AudioModal from './audio_modal'; -import ConfirmationModal from './confirmation_modal'; -import FocalPointModal from './focal_point_modal'; -import ImageModal from './image_modal'; import { MuteModal, BlockModal, @@ -26,7 +17,20 @@ import { SubscribedLanguagesModal, ClosedRegistrationsModal, } from 'mastodon/features/ui/util/async-components'; -import { Helmet } from 'react-helmet'; +import { getScrollbarWidth } from 'mastodon/utils/scrollbar'; + +import BundleContainer from '../containers/bundle_container'; + +import ActionsModal from './actions_modal'; +import AudioModal from './audio_modal'; +import BoostModal from './boost_modal'; +import BundleModalError from './bundle_modal_error'; +import ConfirmationModal from './confirmation_modal'; +import FocalPointModal from './focal_point_modal'; +import ImageModal from './image_modal'; +import MediaModal from './media_modal'; +import ModalLoading from './modal_loading'; +import VideoModal from './video_modal'; const MODAL_COMPONENTS = { 'MEDIA': () => Promise.resolve({ default: MediaModal }), diff --git a/app/javascript/mastodon/features/ui/components/mute_modal.jsx b/app/javascript/mastodon/features/ui/components/mute_modal.jsx index f43a9b8ed..dd21fa046 100644 --- a/app/javascript/mastodon/features/ui/components/mute_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/mute_modal.jsx @@ -1,12 +1,16 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; + +import { connect } from 'react-redux'; + import Toggle from 'react-toggle'; -import Button from '../../../components/button'; -import { closeModal } from '../../../actions/modal'; + import { muteAccount } from '../../../actions/accounts'; +import { closeModal } from '../../../actions/modal'; import { toggleHideNotifications, changeMuteDuration } from '../../../actions/mutes'; +import Button from '../../../components/button'; const messages = defineMessages({ minutes: { id: 'intervals.full.minutes', defaultMessage: '{number, plural, one {# minute} other {# minutes}}' }, diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx index e4857093a..4de6c2ae6 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx @@ -1,16 +1,20 @@ -import { Component } from 'react'; import PropTypes from 'prop-types'; +import { Component } from 'react'; + import { defineMessages, injectIntl } from 'react-intl'; + import { Link } from 'react-router-dom'; + import { WordmarkLogo } from 'mastodon/components/logo'; +import NavigationPortal from 'mastodon/components/navigation_portal'; import { timelinePreview, showTrends } from 'mastodon/initial_state'; + import ColumnLink from './column_link'; import DisabledAccountBanner from './disabled_account_banner'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; import SignInBanner from './sign_in_banner'; -import NavigationPortal from 'mastodon/components/navigation_portal'; const messages = defineMessages({ home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, diff --git a/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js b/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js index 7ef251603..7a9032b98 100644 --- a/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js +++ b/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js @@ -1,4 +1,5 @@ import { connect } from 'react-redux'; + import { IconWithBadge } from 'mastodon/components/icon_with_badge'; const mapStateToProps = state => ({ diff --git a/app/javascript/mastodon/features/ui/components/report_modal.jsx b/app/javascript/mastodon/features/ui/components/report_modal.jsx index c7909040e..9958df618 100644 --- a/app/javascript/mastodon/features/ui/components/report_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/report_modal.jsx @@ -1,19 +1,22 @@ -import { connect } from 'react-redux'; -import { submitReport } from 'mastodon/actions/reports'; -import { expandAccountTimeline } from 'mastodon/actions/timelines'; -import { fetchServer } from 'mastodon/actions/server'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { makeGetAccount } from 'mastodon/selectors'; + import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; + import { OrderedSet } from 'immutable'; +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; + +import { submitReport } from 'mastodon/actions/reports'; +import { fetchServer } from 'mastodon/actions/server'; +import { expandAccountTimeline } from 'mastodon/actions/timelines'; import { IconButton } from 'mastodon/components/icon_button'; import Category from 'mastodon/features/report/category'; -import Statuses from 'mastodon/features/report/statuses'; -import Rules from 'mastodon/features/report/rules'; import Comment from 'mastodon/features/report/comment'; +import Rules from 'mastodon/features/report/rules'; +import Statuses from 'mastodon/features/report/statuses'; import Thanks from 'mastodon/features/report/thanks'; +import { makeGetAccount } from 'mastodon/selectors'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, diff --git a/app/javascript/mastodon/features/ui/components/sign_in_banner.jsx b/app/javascript/mastodon/features/ui/components/sign_in_banner.jsx index 53aefd34c..25de95fd3 100644 --- a/app/javascript/mastodon/features/ui/components/sign_in_banner.jsx +++ b/app/javascript/mastodon/features/ui/components/sign_in_banner.jsx @@ -1,8 +1,11 @@ import { useCallback } from 'react'; + import { FormattedMessage } from 'react-intl'; -import { useAppDispatch, useAppSelector } from 'mastodon/store'; -import { registrationsOpen } from 'mastodon/initial_state'; + + import { openModal } from 'mastodon/actions/modal'; +import { registrationsOpen } from 'mastodon/initial_state'; +import { useAppDispatch, useAppSelector } from 'mastodon/store'; const SignInBanner = () => { const dispatch = useAppDispatch(); diff --git a/app/javascript/mastodon/features/ui/components/upload_area.jsx b/app/javascript/mastodon/features/ui/components/upload_area.jsx index 64df8fbf7..b2702d35e 100644 --- a/app/javascript/mastodon/features/ui/components/upload_area.jsx +++ b/app/javascript/mastodon/features/ui/components/upload_area.jsx @@ -1,9 +1,12 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import Motion from '../util/optional_motion'; -import spring from 'react-motion/lib/spring'; +import { PureComponent } from 'react'; + import { FormattedMessage } from 'react-intl'; +import spring from 'react-motion/lib/spring'; + +import Motion from '../util/optional_motion'; + export default class UploadArea extends PureComponent { static propTypes = { diff --git a/app/javascript/mastodon/features/ui/components/video_modal.jsx b/app/javascript/mastodon/features/ui/components/video_modal.jsx index ffc863530..2cc88c043 100644 --- a/app/javascript/mastodon/features/ui/components/video_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/video_modal.jsx @@ -1,10 +1,12 @@ -import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import Video from 'mastodon/features/video'; -import { connect } from 'react-redux'; + +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import Footer from 'mastodon/features/picture_in_picture/components/footer'; +import { connect } from 'react-redux'; + import { getAverageFromBlurhash } from 'mastodon/blurhash'; +import Footer from 'mastodon/features/picture_in_picture/components/footer'; +import Video from 'mastodon/features/video'; const mapStateToProps = (state, { statusId }) => ({ language: state.getIn(['statuses', statusId, 'language']), diff --git a/app/javascript/mastodon/features/ui/components/zoomable_image.jsx b/app/javascript/mastodon/features/ui/components/zoomable_image.jsx index 47d8b63ed..f2cada3f6 100644 --- a/app/javascript/mastodon/features/ui/components/zoomable_image.jsx +++ b/app/javascript/mastodon/features/ui/components/zoomable_image.jsx @@ -1,8 +1,10 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { IconButton } from 'mastodon/components/icon_button'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl } from 'react-intl'; +import { IconButton } from 'mastodon/components/icon_button'; + const messages = defineMessages({ compress: { id: 'lightbox.compress', defaultMessage: 'Compress image view box' }, expand: { id: 'lightbox.expand', defaultMessage: 'Expand image view box' }, diff --git a/app/javascript/mastodon/features/ui/containers/bundle_container.js b/app/javascript/mastodon/features/ui/containers/bundle_container.js index 7e3f0c3a6..6a476fe24 100644 --- a/app/javascript/mastodon/features/ui/containers/bundle_container.js +++ b/app/javascript/mastodon/features/ui/containers/bundle_container.js @@ -1,8 +1,7 @@ import { connect } from 'react-redux'; -import Bundle from '../components/bundle'; - import { fetchBundleRequest, fetchBundleSuccess, fetchBundleFail } from '../../../actions/bundles'; +import Bundle from '../components/bundle'; const mapDispatchToProps = dispatch => ({ onFetch () { diff --git a/app/javascript/mastodon/features/ui/containers/columns_area_container.js b/app/javascript/mastodon/features/ui/containers/columns_area_container.js index 42b9e4824..f8473d38b 100644 --- a/app/javascript/mastodon/features/ui/containers/columns_area_container.js +++ b/app/javascript/mastodon/features/ui/containers/columns_area_container.js @@ -1,4 +1,5 @@ import { connect } from 'react-redux'; + import ColumnsArea from '../components/columns_area'; const mapStateToProps = state => ({ diff --git a/app/javascript/mastodon/features/ui/containers/loading_bar_container.js b/app/javascript/mastodon/features/ui/containers/loading_bar_container.js index 63e994f92..7efdac55e 100644 --- a/app/javascript/mastodon/features/ui/containers/loading_bar_container.js +++ b/app/javascript/mastodon/features/ui/containers/loading_bar_container.js @@ -1,4 +1,5 @@ import { connect } from 'react-redux'; + import LoadingBar from 'react-redux-loading-bar'; const mapStateToProps = (state, ownProps) => ({ diff --git a/app/javascript/mastodon/features/ui/containers/modal_container.js b/app/javascript/mastodon/features/ui/containers/modal_container.js index 35be26222..b14d0410d 100644 --- a/app/javascript/mastodon/features/ui/containers/modal_container.js +++ b/app/javascript/mastodon/features/ui/containers/modal_container.js @@ -1,4 +1,5 @@ import { connect } from 'react-redux'; + import { openModal, closeModal } from '../../../actions/modal'; import ModalRoot from '../components/modal_root'; diff --git a/app/javascript/mastodon/features/ui/containers/notifications_container.js b/app/javascript/mastodon/features/ui/containers/notifications_container.js index 3819da3d8..c1d19f710 100644 --- a/app/javascript/mastodon/features/ui/containers/notifications_container.js +++ b/app/javascript/mastodon/features/ui/containers/notifications_container.js @@ -1,6 +1,9 @@ import { injectIntl } from 'react-intl'; + import { connect } from 'react-redux'; + import { NotificationStack } from 'react-notification'; + import { dismissAlert } from '../../../actions/alerts'; import { getAlerts } from '../../../selectors'; diff --git a/app/javascript/mastodon/features/ui/containers/status_list_container.js b/app/javascript/mastodon/features/ui/containers/status_list_container.js index 8e97460c4..36a8f58f8 100644 --- a/app/javascript/mastodon/features/ui/containers/status_list_container.js +++ b/app/javascript/mastodon/features/ui/containers/status_list_container.js @@ -1,9 +1,11 @@ -import { connect } from 'react-redux'; -import StatusList from '../../../components/status_list'; -import { scrollTopTimeline, loadPending } from '../../../actions/timelines'; import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; +import { connect } from 'react-redux'; import { createSelector } from 'reselect'; + import { debounce } from 'lodash'; + +import { scrollTopTimeline, loadPending } from '../../../actions/timelines'; +import StatusList from '../../../components/status_list'; import { me } from '../../../initial_state'; const makeGetStatusIds = (pending = false) => createSelector([ diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx index 09b30d4d7..fb43ba9e5 100644 --- a/app/javascript/mastodon/features/ui/index.jsx +++ b/app/javascript/mastodon/features/ui/index.jsx @@ -1,27 +1,36 @@ -import classNames from 'classnames'; -import { PureComponent } from 'react'; -import { HotKeys } from 'react-hotkeys'; -import { defineMessages, injectIntl } from 'react-intl'; -import { connect } from 'react-redux'; -import { Redirect, Route, withRouter } from 'react-router-dom'; import PropTypes from 'prop-types'; -import NotificationsContainer from './containers/notifications_container'; -import LoadingBarContainer from './containers/loading_bar_container'; -import ModalContainer from './containers/modal_container'; -import { layoutFromWindow } from 'mastodon/is_mobile'; +import { PureComponent } from 'react'; + +import { defineMessages, injectIntl } from 'react-intl'; + +import classNames from 'classnames'; +import { Redirect, Route, withRouter } from 'react-router-dom'; + +import { connect } from 'react-redux'; + import { debounce } from 'lodash'; -import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose'; -import { expandHomeTimeline } from '../../actions/timelines'; -import { expandNotifications } from '../../actions/notifications'; -import { fetchServer, fetchServerTranslationLanguages } from '../../actions/server'; -import { clearHeight } from '../../actions/height_cache'; +import { HotKeys } from 'react-hotkeys'; + import { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers'; -import { WrappedSwitch, WrappedRoute } from './util/react_router_helpers'; +import { INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; +import PictureInPicture from 'mastodon/features/picture_in_picture'; +import { layoutFromWindow } from 'mastodon/is_mobile'; + +import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose'; +import { clearHeight } from '../../actions/height_cache'; +import { expandNotifications } from '../../actions/notifications'; +import { fetchServer, fetchServerTranslationLanguages } from '../../actions/server'; +import { expandHomeTimeline } from '../../actions/timelines'; +import initialState, { me, owner, singleUserMode, showTrends, trendsAsLanding } from '../../initial_state'; + import BundleColumnError from './components/bundle_column_error'; +import Header from './components/header'; import UploadArea from './components/upload_area'; import ColumnsAreaContainer from './containers/columns_area_container'; -import PictureInPicture from 'mastodon/features/picture_in_picture'; +import LoadingBarContainer from './containers/loading_bar_container'; +import ModalContainer from './containers/modal_container'; +import NotificationsContainer from './containers/notifications_container'; import { Compose, Status, @@ -55,9 +64,7 @@ import { About, PrivacyPolicy, } from './util/async-components'; -import initialState, { me, owner, singleUserMode, showTrends, trendsAsLanding } from '../../initial_state'; -import { INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; -import Header from './components/header'; +import { WrappedSwitch, WrappedRoute } from './util/react_router_helpers'; // Dummy import, to make sure that <Status /> ends up in the application bundle. // Without this it ends up in ~8 very commonly used bundles. diff --git a/app/javascript/mastodon/features/ui/util/optional_motion.js b/app/javascript/mastodon/features/ui/util/optional_motion.js index df3a8b54a..0b6d4d97f 100644 --- a/app/javascript/mastodon/features/ui/util/optional_motion.js +++ b/app/javascript/mastodon/features/ui/util/optional_motion.js @@ -1,5 +1,7 @@ -import { reduceMotion } from '../../../initial_state'; -import ReducedMotion from './reduced_motion'; import Motion from 'react-motion/lib/Motion'; +import { reduceMotion } from '../../../initial_state'; + +import ReducedMotion from './reduced_motion'; + export default reduceMotion ? ReducedMotion : Motion; diff --git a/app/javascript/mastodon/features/ui/util/react_router_helpers.jsx b/app/javascript/mastodon/features/ui/util/react_router_helpers.jsx index 64aad000a..66cfee970 100644 --- a/app/javascript/mastodon/features/ui/util/react_router_helpers.jsx +++ b/app/javascript/mastodon/features/ui/util/react_router_helpers.jsx @@ -1,9 +1,12 @@ -import { Component, PureComponent, cloneElement, Children } from 'react'; import PropTypes from 'prop-types'; +import { Component, PureComponent, cloneElement, Children } from 'react'; + import { Switch, Route } from 'react-router-dom'; + import StackTrace from 'stacktrace-js'; -import ColumnLoading from '../components/column_loading'; + import BundleColumnError from '../components/bundle_column_error'; +import ColumnLoading from '../components/column_loading'; import BundleContainer from '../containers/bundle_container'; // Small wrapper to pass multiColumn to the route components diff --git a/app/javascript/mastodon/features/ui/util/reduced_motion.jsx b/app/javascript/mastodon/features/ui/util/reduced_motion.jsx index 85ede744c..fd044497f 100644 --- a/app/javascript/mastodon/features/ui/util/reduced_motion.jsx +++ b/app/javascript/mastodon/features/ui/util/reduced_motion.jsx @@ -1,8 +1,9 @@ // Like react-motion's Motion, but reduces all animations to cross-fades // for the benefit of users with motion sickness. -import { Component } from 'react'; -import Motion from 'react-motion/lib/Motion'; import PropTypes from 'prop-types'; +import { Component } from 'react'; + +import Motion from 'react-motion/lib/Motion'; const stylesToKeep = ['opacity', 'backgroundOpacity']; diff --git a/app/javascript/mastodon/features/video/index.jsx b/app/javascript/mastodon/features/video/index.jsx index 81ed457c9..78650d34f 100644 --- a/app/javascript/mastodon/features/video/index.jsx +++ b/app/javascript/mastodon/features/video/index.jsx @@ -1,13 +1,19 @@ -import { PureComponent } from 'react'; import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; + import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { is } from 'immutable'; -import { throttle } from 'lodash'; + import classNames from 'classnames'; -import { isFullscreen, requestFullscreen, exitFullscreen } from '../ui/util/fullscreen'; -import { displayMedia, useBlurhash } from '../../initial_state'; -import { Icon } from 'mastodon/components/icon'; + +import { is } from 'immutable'; + +import { throttle } from 'lodash'; + import { Blurhash } from 'mastodon/components/blurhash'; +import { Icon } from 'mastodon/components/icon'; + +import { displayMedia, useBlurhash } from '../../initial_state'; +import { isFullscreen, requestFullscreen, exitFullscreen } from '../ui/util/fullscreen'; const messages = defineMessages({ play: { id: 'video.play', defaultMessage: 'Play' }, diff --git a/app/javascript/mastodon/main.jsx b/app/javascript/mastodon/main.jsx index 8f45e18f7..f82603631 100644 --- a/app/javascript/mastodon/main.jsx +++ b/app/javascript/mastodon/main.jsx @@ -1,10 +1,11 @@ import { createRoot } from 'react-dom/client'; + import { setupBrowserNotifications } from 'mastodon/actions/notifications'; import Mastodon from 'mastodon/containers/mastodon'; -import { store } from 'mastodon/store'; import { me } from 'mastodon/initial_state'; -import ready from 'mastodon/ready'; import * as perf from 'mastodon/performance'; +import ready from 'mastodon/ready'; +import { store } from 'mastodon/store'; /** * @returns {Promise<void>} diff --git a/app/javascript/mastodon/reducers/accounts.js b/app/javascript/mastodon/reducers/accounts.js index 44973e939..76122cc63 100644 --- a/app/javascript/mastodon/reducers/accounts.js +++ b/app/javascript/mastodon/reducers/accounts.js @@ -1,7 +1,8 @@ -import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from 'mastodon/actions/importer'; -import { ACCOUNT_REVEAL } from 'mastodon/actions/accounts'; import { Map as ImmutableMap, fromJS } from 'immutable'; +import { ACCOUNT_REVEAL } from 'mastodon/actions/accounts'; +import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from 'mastodon/actions/importer'; + const initialState = ImmutableMap(); const normalizeAccount = (state, account) => { diff --git a/app/javascript/mastodon/reducers/accounts_counters.js b/app/javascript/mastodon/reducers/accounts_counters.js index 640b2a889..eb7878deb 100644 --- a/app/javascript/mastodon/reducers/accounts_counters.js +++ b/app/javascript/mastodon/reducers/accounts_counters.js @@ -1,10 +1,12 @@ +import { Map as ImmutableMap, fromJS } from 'immutable'; + +import { me } from 'mastodon/initial_state'; + import { ACCOUNT_FOLLOW_SUCCESS, ACCOUNT_UNFOLLOW_SUCCESS, } from '../actions/accounts'; import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from '../actions/importer'; -import { Map as ImmutableMap, fromJS } from 'immutable'; -import { me } from 'mastodon/initial_state'; const normalizeAccount = (state, account) => state.set(account.id, fromJS({ followers_count: account.followers_count, diff --git a/app/javascript/mastodon/reducers/accounts_map.js b/app/javascript/mastodon/reducers/accounts_map.js index 8412ad4d0..fca0e3ce1 100644 --- a/app/javascript/mastodon/reducers/accounts_map.js +++ b/app/javascript/mastodon/reducers/accounts_map.js @@ -1,7 +1,8 @@ -import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from '../actions/importer'; -import { ACCOUNT_LOOKUP_FAIL } from '../actions/accounts'; import { Map as ImmutableMap } from 'immutable'; +import { ACCOUNT_LOOKUP_FAIL } from '../actions/accounts'; +import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from '../actions/importer'; + export const normalizeForLookup = str => str.toLowerCase(); const initialState = ImmutableMap(); diff --git a/app/javascript/mastodon/reducers/alerts.js b/app/javascript/mastodon/reducers/alerts.js index 5b3010a59..bd49d748f 100644 --- a/app/javascript/mastodon/reducers/alerts.js +++ b/app/javascript/mastodon/reducers/alerts.js @@ -1,9 +1,10 @@ +import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; + import { ALERT_SHOW, ALERT_DISMISS, ALERT_CLEAR, } from '../actions/alerts'; -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; const initialState = ImmutableList([]); diff --git a/app/javascript/mastodon/reducers/announcements.js b/app/javascript/mastodon/reducers/announcements.js index b53f93a4a..2134b04c6 100644 --- a/app/javascript/mastodon/reducers/announcements.js +++ b/app/javascript/mastodon/reducers/announcements.js @@ -1,3 +1,5 @@ +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + import { ANNOUNCEMENTS_FETCH_REQUEST, ANNOUNCEMENTS_FETCH_SUCCESS, @@ -12,7 +14,6 @@ import { ANNOUNCEMENTS_DELETE, ANNOUNCEMENTS_DISMISS_SUCCESS, } from '../actions/announcements'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; const initialState = ImmutableMap({ items: ImmutableList(), diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index 3e750c4cf..e6b2509f6 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -1,3 +1,5 @@ +import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; + import { COMPOSE_MOUNT, COMPOSE_UNMOUNT, @@ -48,13 +50,12 @@ import { COMPOSE_SET_STATUS, COMPOSE_FOCUS, } from '../actions/compose'; -import { TIMELINE_DELETE } from '../actions/timelines'; -import { STORE_HYDRATE } from '../actions/store'; import { REDRAFT } from '../actions/statuses'; -import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; -import { uuid } from '../uuid'; +import { STORE_HYDRATE } from '../actions/store'; +import { TIMELINE_DELETE } from '../actions/timelines'; import { me } from '../initial_state'; import { unescapeHTML } from '../utils/html'; +import { uuid } from '../uuid'; const initialState = ImmutableMap({ mounted: 0, diff --git a/app/javascript/mastodon/reducers/contexts.js b/app/javascript/mastodon/reducers/contexts.js index 8772e175e..32e194dd4 100644 --- a/app/javascript/mastodon/reducers/contexts.js +++ b/app/javascript/mastodon/reducers/contexts.js @@ -1,10 +1,11 @@ +import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; + import { ACCOUNT_BLOCK_SUCCESS, ACCOUNT_MUTE_SUCCESS, } from '../actions/accounts'; import { CONTEXT_FETCH_SUCCESS } from '../actions/statuses'; import { TIMELINE_DELETE, TIMELINE_UPDATE } from '../actions/timelines'; -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; import { compareId } from '../compare_id'; const initialState = ImmutableMap({ diff --git a/app/javascript/mastodon/reducers/conversations.js b/app/javascript/mastodon/reducers/conversations.js index 942c6941b..247e8a597 100644 --- a/app/javascript/mastodon/reducers/conversations.js +++ b/app/javascript/mastodon/reducers/conversations.js @@ -1,4 +1,8 @@ import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; + +import { ACCOUNT_BLOCK_SUCCESS, ACCOUNT_MUTE_SUCCESS } from 'mastodon/actions/accounts'; +import { DOMAIN_BLOCK_SUCCESS } from 'mastodon/actions/domain_blocks'; + import { CONVERSATIONS_MOUNT, CONVERSATIONS_UNMOUNT, @@ -9,8 +13,6 @@ import { CONVERSATIONS_READ, CONVERSATIONS_DELETE_SUCCESS, } from '../actions/conversations'; -import { ACCOUNT_BLOCK_SUCCESS, ACCOUNT_MUTE_SUCCESS } from 'mastodon/actions/accounts'; -import { DOMAIN_BLOCK_SUCCESS } from 'mastodon/actions/domain_blocks'; import { compareId } from '../compare_id'; const initialState = ImmutableMap({ diff --git a/app/javascript/mastodon/reducers/custom_emojis.js b/app/javascript/mastodon/reducers/custom_emojis.js index 0338c2e53..56ec80f2f 100644 --- a/app/javascript/mastodon/reducers/custom_emojis.js +++ b/app/javascript/mastodon/reducers/custom_emojis.js @@ -1,7 +1,8 @@ import { List as ImmutableList, fromJS as ConvertToImmutable } from 'immutable'; + import { CUSTOM_EMOJIS_FETCH_SUCCESS } from '../actions/custom_emojis'; -import { search as emojiSearch } from '../features/emoji/emoji_mart_search_light'; import { buildCustomEmojis } from '../features/emoji/emoji'; +import { search as emojiSearch } from '../features/emoji/emoji_mart_search_light'; const initialState = ImmutableList([]); diff --git a/app/javascript/mastodon/reducers/domain_lists.js b/app/javascript/mastodon/reducers/domain_lists.js index 6bf8cee68..8cdd3ba37 100644 --- a/app/javascript/mastodon/reducers/domain_lists.js +++ b/app/javascript/mastodon/reducers/domain_lists.js @@ -1,9 +1,10 @@ +import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable'; + import { DOMAIN_BLOCKS_FETCH_SUCCESS, DOMAIN_BLOCKS_EXPAND_SUCCESS, DOMAIN_UNBLOCK_SUCCESS, } from '../actions/domain_blocks'; -import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable'; const initialState = ImmutableMap({ blocks: ImmutableMap({ diff --git a/app/javascript/mastodon/reducers/dropdown_menu.js b/app/javascript/mastodon/reducers/dropdown_menu.js index 51bf9375b..6f92f1bbe 100644 --- a/app/javascript/mastodon/reducers/dropdown_menu.js +++ b/app/javascript/mastodon/reducers/dropdown_menu.js @@ -1,4 +1,5 @@ import Immutable from 'immutable'; + import { DROPDOWN_MENU_OPEN, DROPDOWN_MENU_CLOSE, diff --git a/app/javascript/mastodon/reducers/filters.js b/app/javascript/mastodon/reducers/filters.js index e1f014046..566ad0c6c 100644 --- a/app/javascript/mastodon/reducers/filters.js +++ b/app/javascript/mastodon/reducers/filters.js @@ -1,7 +1,8 @@ -import { FILTERS_IMPORT } from '../actions/importer'; -import { FILTERS_FETCH_SUCCESS, FILTERS_CREATE_SUCCESS } from '../actions/filters'; import { Map as ImmutableMap, is, fromJS } from 'immutable'; +import { FILTERS_FETCH_SUCCESS, FILTERS_CREATE_SUCCESS } from '../actions/filters'; +import { FILTERS_IMPORT } from '../actions/importer'; + const normalizeFilter = (state, filter) => { const normalizedFilter = fromJS({ id: filter.id, diff --git a/app/javascript/mastodon/reducers/followed_tags.js b/app/javascript/mastodon/reducers/followed_tags.js index da20b7b12..afea8e3b3 100644 --- a/app/javascript/mastodon/reducers/followed_tags.js +++ b/app/javascript/mastodon/reducers/followed_tags.js @@ -1,3 +1,5 @@ +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + import { FOLLOWED_HASHTAGS_FETCH_REQUEST, FOLLOWED_HASHTAGS_FETCH_SUCCESS, @@ -6,7 +8,6 @@ import { FOLLOWED_HASHTAGS_EXPAND_SUCCESS, FOLLOWED_HASHTAGS_EXPAND_FAIL, } from 'mastodon/actions/tags'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; const initialState = ImmutableMap({ items: ImmutableList(), diff --git a/app/javascript/mastodon/reducers/height_cache.js b/app/javascript/mastodon/reducers/height_cache.js index 77a59c8c5..2664d4f82 100644 --- a/app/javascript/mastodon/reducers/height_cache.js +++ b/app/javascript/mastodon/reducers/height_cache.js @@ -1,4 +1,5 @@ import { Map as ImmutableMap } from 'immutable'; + import { HEIGHT_CACHE_SET, HEIGHT_CACHE_CLEAR } from '../actions/height_cache'; const initialState = ImmutableMap(); diff --git a/app/javascript/mastodon/reducers/history.js b/app/javascript/mastodon/reducers/history.js index 00b01aa6e..a0f868b1d 100644 --- a/app/javascript/mastodon/reducers/history.js +++ b/app/javascript/mastodon/reducers/history.js @@ -1,6 +1,7 @@ -import { HISTORY_FETCH_REQUEST, HISTORY_FETCH_SUCCESS, HISTORY_FETCH_FAIL } from 'mastodon/actions/history'; import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; +import { HISTORY_FETCH_REQUEST, HISTORY_FETCH_SUCCESS, HISTORY_FETCH_FAIL } from 'mastodon/actions/history'; + const initialHistory = ImmutableMap({ loading: false, items: ImmutableList(), diff --git a/app/javascript/mastodon/reducers/list_adder.js b/app/javascript/mastodon/reducers/list_adder.js index b144610a5..0f61273aa 100644 --- a/app/javascript/mastodon/reducers/list_adder.js +++ b/app/javascript/mastodon/reducers/list_adder.js @@ -1,4 +1,5 @@ import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; + import { LIST_ADDER_RESET, LIST_ADDER_SETUP, diff --git a/app/javascript/mastodon/reducers/list_editor.js b/app/javascript/mastodon/reducers/list_editor.js index 6e020dbe6..ceceb27c7 100644 --- a/app/javascript/mastodon/reducers/list_editor.js +++ b/app/javascript/mastodon/reducers/list_editor.js @@ -1,4 +1,5 @@ import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; + import { LIST_CREATE_REQUEST, LIST_CREATE_FAIL, diff --git a/app/javascript/mastodon/reducers/lists.js b/app/javascript/mastodon/reducers/lists.js index ba3e2b3cb..2a797772b 100644 --- a/app/javascript/mastodon/reducers/lists.js +++ b/app/javascript/mastodon/reducers/lists.js @@ -1,3 +1,5 @@ +import { Map as ImmutableMap, fromJS } from 'immutable'; + import { LIST_FETCH_SUCCESS, LIST_FETCH_FAIL, @@ -6,7 +8,6 @@ import { LIST_UPDATE_SUCCESS, LIST_DELETE_SUCCESS, } from '../actions/lists'; -import { Map as ImmutableMap, fromJS } from 'immutable'; const initialState = ImmutableMap(); diff --git a/app/javascript/mastodon/reducers/markers.js b/app/javascript/mastodon/reducers/markers.js index 3e8b1780a..c7c5d99f6 100644 --- a/app/javascript/mastodon/reducers/markers.js +++ b/app/javascript/mastodon/reducers/markers.js @@ -1,8 +1,9 @@ +import { Map as ImmutableMap } from 'immutable'; + import { MARKERS_SUBMIT_SUCCESS, } from '../actions/markers'; -import { Map as ImmutableMap } from 'immutable'; const initialState = ImmutableMap({ home: '0', diff --git a/app/javascript/mastodon/reducers/media_attachments.js b/app/javascript/mastodon/reducers/media_attachments.js index 7a155b77f..cbb4933bc 100644 --- a/app/javascript/mastodon/reducers/media_attachments.js +++ b/app/javascript/mastodon/reducers/media_attachments.js @@ -1,6 +1,7 @@ -import { STORE_HYDRATE } from '../actions/store'; import { Map as ImmutableMap } from 'immutable'; +import { STORE_HYDRATE } from '../actions/store'; + const initialState = ImmutableMap({ accept_content_types: [], }); diff --git a/app/javascript/mastodon/reducers/meta.js b/app/javascript/mastodon/reducers/meta.js index 16ce751aa..96baf2f11 100644 --- a/app/javascript/mastodon/reducers/meta.js +++ b/app/javascript/mastodon/reducers/meta.js @@ -1,6 +1,7 @@ -import { STORE_HYDRATE } from 'mastodon/actions/store'; -import { changeLayout } from 'mastodon/actions/app'; import { Map as ImmutableMap } from 'immutable'; + +import { changeLayout } from 'mastodon/actions/app'; +import { STORE_HYDRATE } from 'mastodon/actions/store'; import { layoutFromWindow } from 'mastodon/is_mobile'; const initialState = ImmutableMap({ diff --git a/app/javascript/mastodon/reducers/modal.js b/app/javascript/mastodon/reducers/modal.js index edde2f947..348f53899 100644 --- a/app/javascript/mastodon/reducers/modal.js +++ b/app/javascript/mastodon/reducers/modal.js @@ -1,7 +1,8 @@ +import { Stack as ImmutableStack, Map as ImmutableMap } from 'immutable'; + +import { COMPOSE_UPLOAD_CHANGE_SUCCESS } from '../actions/compose'; import { MODAL_OPEN, MODAL_CLOSE } from '../actions/modal'; import { TIMELINE_DELETE } from '../actions/timelines'; -import { COMPOSE_UPLOAD_CHANGE_SUCCESS } from '../actions/compose'; -import { Stack as ImmutableStack, Map as ImmutableMap } from 'immutable'; const initialState = ImmutableMap({ ignoreFocus: false, diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index 77e64284b..66870bec5 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -1,3 +1,20 @@ +import { fromJS, Map as ImmutableMap, List as ImmutableList } from 'immutable'; + +import { DOMAIN_BLOCK_SUCCESS } from 'mastodon/actions/domain_blocks'; + +import { + ACCOUNT_BLOCK_SUCCESS, + ACCOUNT_MUTE_SUCCESS, + FOLLOW_REQUEST_AUTHORIZE_SUCCESS, + FOLLOW_REQUEST_REJECT_SUCCESS, +} from '../actions/accounts'; +import { + focusApp, + unfocusApp, +} from '../actions/app'; +import { + MARKERS_FETCH_SUCCESS, +} from '../actions/markers'; import { NOTIFICATIONS_UPDATE, NOTIFICATIONS_EXPAND_SUCCESS, @@ -13,22 +30,7 @@ import { NOTIFICATIONS_SET_BROWSER_SUPPORT, NOTIFICATIONS_SET_BROWSER_PERMISSION, } from '../actions/notifications'; -import { - ACCOUNT_BLOCK_SUCCESS, - ACCOUNT_MUTE_SUCCESS, - FOLLOW_REQUEST_AUTHORIZE_SUCCESS, - FOLLOW_REQUEST_REJECT_SUCCESS, -} from '../actions/accounts'; -import { - MARKERS_FETCH_SUCCESS, -} from '../actions/markers'; -import { - focusApp, - unfocusApp, -} from '../actions/app'; -import { DOMAIN_BLOCK_SUCCESS } from 'mastodon/actions/domain_blocks'; import { TIMELINE_DELETE, TIMELINE_DISCONNECT } from '../actions/timelines'; -import { fromJS, Map as ImmutableMap, List as ImmutableList } from 'immutable'; import { compareId } from '../compare_id'; const initialState = ImmutableMap({ diff --git a/app/javascript/mastodon/reducers/picture_in_picture.js b/app/javascript/mastodon/reducers/picture_in_picture.js index 10fbc1695..6824ad930 100644 --- a/app/javascript/mastodon/reducers/picture_in_picture.js +++ b/app/javascript/mastodon/reducers/picture_in_picture.js @@ -1,4 +1,5 @@ import { PICTURE_IN_PICTURE_DEPLOY, PICTURE_IN_PICTURE_REMOVE } from 'mastodon/actions/picture_in_picture'; + import { TIMELINE_DELETE } from '../actions/timelines'; const initialState = { diff --git a/app/javascript/mastodon/reducers/polls.js b/app/javascript/mastodon/reducers/polls.js index 9956cf83f..901fdc449 100644 --- a/app/javascript/mastodon/reducers/polls.js +++ b/app/javascript/mastodon/reducers/polls.js @@ -1,6 +1,7 @@ -import { POLLS_IMPORT } from 'mastodon/actions/importer'; import { Map as ImmutableMap, fromJS } from 'immutable'; +import { POLLS_IMPORT } from 'mastodon/actions/importer'; + const importPolls = (state, polls) => state.withMutations(map => polls.forEach(poll => map.set(poll.id, fromJS(poll)))); const initialState = ImmutableMap(); diff --git a/app/javascript/mastodon/reducers/push_notifications.js b/app/javascript/mastodon/reducers/push_notifications.js index 6a62ecb81..fa8af0e8c 100644 --- a/app/javascript/mastodon/reducers/push_notifications.js +++ b/app/javascript/mastodon/reducers/push_notifications.js @@ -1,7 +1,8 @@ -import { STORE_HYDRATE } from '../actions/store'; -import { SET_BROWSER_SUPPORT, SET_SUBSCRIPTION, CLEAR_SUBSCRIPTION, SET_ALERTS } from '../actions/push_notifications'; import Immutable from 'immutable'; +import { SET_BROWSER_SUPPORT, SET_SUBSCRIPTION, CLEAR_SUBSCRIPTION, SET_ALERTS } from '../actions/push_notifications'; +import { STORE_HYDRATE } from '../actions/store'; + const initialState = Immutable.Map({ subscription: null, alerts: new Immutable.Map({ diff --git a/app/javascript/mastodon/reducers/relationships.js b/app/javascript/mastodon/reducers/relationships.js index a3b01a0f6..d1ccf9ac9 100644 --- a/app/javascript/mastodon/reducers/relationships.js +++ b/app/javascript/mastodon/reducers/relationships.js @@ -1,6 +1,8 @@ +import { Map as ImmutableMap, fromJS } from 'immutable'; + import { - NOTIFICATIONS_UPDATE, -} from '../actions/notifications'; + ACCOUNT_NOTE_SUBMIT_SUCCESS, +} from '../actions/account_notes'; import { ACCOUNT_FOLLOW_SUCCESS, ACCOUNT_FOLLOW_REQUEST, @@ -23,9 +25,9 @@ import { DOMAIN_UNBLOCK_SUCCESS, } from '../actions/domain_blocks'; import { - ACCOUNT_NOTE_SUBMIT_SUCCESS, -} from '../actions/account_notes'; -import { Map as ImmutableMap, fromJS } from 'immutable'; + NOTIFICATIONS_UPDATE, +} from '../actions/notifications'; + const normalizeRelationship = (state, relationship) => state.set(relationship.id, fromJS(relationship)); diff --git a/app/javascript/mastodon/reducers/search.js b/app/javascript/mastodon/reducers/search.js index e545f430c..ccef31403 100644 --- a/app/javascript/mastodon/reducers/search.js +++ b/app/javascript/mastodon/reducers/search.js @@ -1,3 +1,10 @@ +import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; + +import { + COMPOSE_MENTION, + COMPOSE_REPLY, + COMPOSE_DIRECT, +} from '../actions/compose'; import { SEARCH_CHANGE, SEARCH_CLEAR, @@ -9,12 +16,6 @@ import { SEARCH_RESULT_CLICK, SEARCH_RESULT_FORGET, } from '../actions/search'; -import { - COMPOSE_MENTION, - COMPOSE_REPLY, - COMPOSE_DIRECT, -} from '../actions/compose'; -import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; const initialState = ImmutableMap({ value: '', diff --git a/app/javascript/mastodon/reducers/server.js b/app/javascript/mastodon/reducers/server.js index 909ab2a66..486314c33 100644 --- a/app/javascript/mastodon/reducers/server.js +++ b/app/javascript/mastodon/reducers/server.js @@ -1,3 +1,5 @@ +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + import { SERVER_FETCH_REQUEST, SERVER_FETCH_SUCCESS, @@ -12,7 +14,6 @@ import { SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS, SERVER_DOMAIN_BLOCKS_FETCH_FAIL, } from 'mastodon/actions/server'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; const initialState = ImmutableMap({ server: ImmutableMap({ diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js index c8fdf1bc8..3641c00a4 100644 --- a/app/javascript/mastodon/reducers/settings.js +++ b/app/javascript/mastodon/reducers/settings.js @@ -1,11 +1,12 @@ -import { SETTING_CHANGE, SETTING_SAVE } from '../actions/settings'; -import { NOTIFICATIONS_FILTER_SET } from '../actions/notifications'; +import { Map as ImmutableMap, fromJS } from 'immutable'; + import { COLUMN_ADD, COLUMN_REMOVE, COLUMN_MOVE, COLUMN_PARAMS_CHANGE } from '../actions/columns'; -import { STORE_HYDRATE } from '../actions/store'; import { EMOJI_USE } from '../actions/emojis'; import { LANGUAGE_USE } from '../actions/languages'; import { LIST_DELETE_SUCCESS, LIST_FETCH_FAIL } from '../actions/lists'; -import { Map as ImmutableMap, fromJS } from 'immutable'; +import { NOTIFICATIONS_FILTER_SET } from '../actions/notifications'; +import { SETTING_CHANGE, SETTING_SAVE } from '../actions/settings'; +import { STORE_HYDRATE } from '../actions/store'; import { uuid } from '../uuid'; const initialState = ImmutableMap({ diff --git a/app/javascript/mastodon/reducers/status_lists.js b/app/javascript/mastodon/reducers/status_lists.js index b1716e9cf..41cc07341 100644 --- a/app/javascript/mastodon/reducers/status_lists.js +++ b/app/javascript/mastodon/reducers/status_lists.js @@ -1,3 +1,17 @@ +import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable'; + +import { + ACCOUNT_BLOCK_SUCCESS, + ACCOUNT_MUTE_SUCCESS, +} from '../actions/accounts'; +import { + BOOKMARKED_STATUSES_FETCH_REQUEST, + BOOKMARKED_STATUSES_FETCH_SUCCESS, + BOOKMARKED_STATUSES_FETCH_FAIL, + BOOKMARKED_STATUSES_EXPAND_REQUEST, + BOOKMARKED_STATUSES_EXPAND_SUCCESS, + BOOKMARKED_STATUSES_EXPAND_FAIL, +} from '../actions/bookmarks'; import { FAVOURITED_STATUSES_FETCH_REQUEST, FAVOURITED_STATUSES_FETCH_SUCCESS, @@ -7,13 +21,13 @@ import { FAVOURITED_STATUSES_EXPAND_FAIL, } from '../actions/favourites'; import { - BOOKMARKED_STATUSES_FETCH_REQUEST, - BOOKMARKED_STATUSES_FETCH_SUCCESS, - BOOKMARKED_STATUSES_FETCH_FAIL, - BOOKMARKED_STATUSES_EXPAND_REQUEST, - BOOKMARKED_STATUSES_EXPAND_SUCCESS, - BOOKMARKED_STATUSES_EXPAND_FAIL, -} from '../actions/bookmarks'; + FAVOURITE_SUCCESS, + UNFAVOURITE_SUCCESS, + BOOKMARK_SUCCESS, + UNBOOKMARK_SUCCESS, + PIN_SUCCESS, + UNPIN_SUCCESS, +} from '../actions/interactions'; import { PINNED_STATUSES_FETCH_SUCCESS, } from '../actions/pin_statuses'; @@ -25,19 +39,8 @@ import { TRENDS_STATUSES_EXPAND_SUCCESS, TRENDS_STATUSES_EXPAND_FAIL, } from '../actions/trends'; -import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable'; -import { - FAVOURITE_SUCCESS, - UNFAVOURITE_SUCCESS, - BOOKMARK_SUCCESS, - UNBOOKMARK_SUCCESS, - PIN_SUCCESS, - UNPIN_SUCCESS, -} from '../actions/interactions'; -import { - ACCOUNT_BLOCK_SUCCESS, - ACCOUNT_MUTE_SUCCESS, -} from '../actions/accounts'; + + const initialState = ImmutableMap({ favourites: ImmutableMap({ diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index a39ac6b64..fc5d31ab7 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -1,3 +1,6 @@ +import { Map as ImmutableMap, fromJS } from 'immutable'; + +import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer'; import { REBLOG_REQUEST, REBLOG_FAIL, @@ -19,8 +22,6 @@ import { STATUS_FETCH_FAIL, } from '../actions/statuses'; import { TIMELINE_DELETE } from '../actions/timelines'; -import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer'; -import { Map as ImmutableMap, fromJS } from 'immutable'; const importStatus = (state, status) => state.set(status.id, fromJS(status)); diff --git a/app/javascript/mastodon/reducers/suggestions.js b/app/javascript/mastodon/reducers/suggestions.js index 0b4bc7789..ce1bcc774 100644 --- a/app/javascript/mastodon/reducers/suggestions.js +++ b/app/javascript/mastodon/reducers/suggestions.js @@ -1,12 +1,15 @@ +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + +import { ACCOUNT_BLOCK_SUCCESS, ACCOUNT_MUTE_SUCCESS } from 'mastodon/actions/accounts'; +import { DOMAIN_BLOCK_SUCCESS } from 'mastodon/actions/domain_blocks'; + import { SUGGESTIONS_FETCH_REQUEST, SUGGESTIONS_FETCH_SUCCESS, SUGGESTIONS_FETCH_FAIL, SUGGESTIONS_DISMISS, } from '../actions/suggestions'; -import { ACCOUNT_BLOCK_SUCCESS, ACCOUNT_MUTE_SUCCESS } from 'mastodon/actions/accounts'; -import { DOMAIN_BLOCK_SUCCESS } from 'mastodon/actions/domain_blocks'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + const initialState = ImmutableMap({ items: ImmutableList(), diff --git a/app/javascript/mastodon/reducers/tags.js b/app/javascript/mastodon/reducers/tags.js index ea73af452..23a1ae82b 100644 --- a/app/javascript/mastodon/reducers/tags.js +++ b/app/javascript/mastodon/reducers/tags.js @@ -1,3 +1,5 @@ +import { Map as ImmutableMap, fromJS } from 'immutable'; + import { HASHTAG_FETCH_SUCCESS, HASHTAG_FOLLOW_REQUEST, @@ -5,7 +7,6 @@ import { HASHTAG_UNFOLLOW_REQUEST, HASHTAG_UNFOLLOW_FAIL, } from 'mastodon/actions/tags'; -import { Map as ImmutableMap, fromJS } from 'immutable'; const initialState = ImmutableMap(); diff --git a/app/javascript/mastodon/reducers/timelines.js b/app/javascript/mastodon/reducers/timelines.js index 41892ae46..cb3da5072 100644 --- a/app/javascript/mastodon/reducers/timelines.js +++ b/app/javascript/mastodon/reducers/timelines.js @@ -1,3 +1,10 @@ +import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; + +import { + ACCOUNT_BLOCK_SUCCESS, + ACCOUNT_MUTE_SUCCESS, + ACCOUNT_UNFOLLOW_SUCCESS, +} from '../actions/accounts'; import { TIMELINE_UPDATE, TIMELINE_DELETE, @@ -11,12 +18,6 @@ import { TIMELINE_LOAD_PENDING, TIMELINE_MARK_AS_PARTIAL, } from '../actions/timelines'; -import { - ACCOUNT_BLOCK_SUCCESS, - ACCOUNT_MUTE_SUCCESS, - ACCOUNT_UNFOLLOW_SUCCESS, -} from '../actions/accounts'; -import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; import { compareId } from '../compare_id'; const initialState = ImmutableMap(); diff --git a/app/javascript/mastodon/reducers/trends.js b/app/javascript/mastodon/reducers/trends.js index 3d5f6ecd6..819e9152f 100644 --- a/app/javascript/mastodon/reducers/trends.js +++ b/app/javascript/mastodon/reducers/trends.js @@ -1,3 +1,5 @@ +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + import { TRENDS_TAGS_FETCH_REQUEST, TRENDS_TAGS_FETCH_SUCCESS, @@ -6,7 +8,6 @@ import { TRENDS_LINKS_FETCH_SUCCESS, TRENDS_LINKS_FETCH_FAIL, } from 'mastodon/actions/trends'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; const initialState = ImmutableMap({ tags: ImmutableMap({ diff --git a/app/javascript/mastodon/reducers/user_lists.js b/app/javascript/mastodon/reducers/user_lists.js index 2a80cf639..e33d365c9 100644 --- a/app/javascript/mastodon/reducers/user_lists.js +++ b/app/javascript/mastodon/reducers/user_lists.js @@ -1,6 +1,19 @@ +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + import { - NOTIFICATIONS_UPDATE, -} from '../actions/notifications'; + DIRECTORY_FETCH_REQUEST, + DIRECTORY_FETCH_SUCCESS, + DIRECTORY_FETCH_FAIL, + DIRECTORY_EXPAND_REQUEST, + DIRECTORY_EXPAND_SUCCESS, + DIRECTORY_EXPAND_FAIL, +} from 'mastodon/actions/directory'; +import { + FEATURED_TAGS_FETCH_REQUEST, + FEATURED_TAGS_FETCH_SUCCESS, + FEATURED_TAGS_FETCH_FAIL, +} from 'mastodon/actions/featured_tags'; + import { FOLLOWERS_FETCH_REQUEST, FOLLOWERS_FETCH_SUCCESS, @@ -23,10 +36,6 @@ import { FOLLOW_REQUEST_AUTHORIZE_SUCCESS, FOLLOW_REQUEST_REJECT_SUCCESS, } from '../actions/accounts'; -import { - REBLOGS_FETCH_SUCCESS, - FAVOURITES_FETCH_SUCCESS, -} from '../actions/interactions'; import { BLOCKS_FETCH_REQUEST, BLOCKS_FETCH_SUCCESS, @@ -35,6 +44,10 @@ import { BLOCKS_EXPAND_SUCCESS, BLOCKS_EXPAND_FAIL, } from '../actions/blocks'; +import { + REBLOGS_FETCH_SUCCESS, + FAVOURITES_FETCH_SUCCESS, +} from '../actions/interactions'; import { MUTES_FETCH_REQUEST, MUTES_FETCH_SUCCESS, @@ -44,19 +57,10 @@ import { MUTES_EXPAND_FAIL, } from '../actions/mutes'; import { - DIRECTORY_FETCH_REQUEST, - DIRECTORY_FETCH_SUCCESS, - DIRECTORY_FETCH_FAIL, - DIRECTORY_EXPAND_REQUEST, - DIRECTORY_EXPAND_SUCCESS, - DIRECTORY_EXPAND_FAIL, -} from 'mastodon/actions/directory'; -import { - FEATURED_TAGS_FETCH_REQUEST, - FEATURED_TAGS_FETCH_SUCCESS, - FEATURED_TAGS_FETCH_FAIL, -} from 'mastodon/actions/featured_tags'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + NOTIFICATIONS_UPDATE, +} from '../actions/notifications'; + + const initialListState = ImmutableMap({ next: null, diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index 58972bdf7..b67734316 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -1,6 +1,8 @@ -import { createSelector } from 'reselect'; import { List as ImmutableList, Map as ImmutableMap } from 'immutable'; +import { createSelector } from 'reselect'; + import { toServerSideType } from 'mastodon/utils/filters'; + import { me } from '../initial_state'; const getAccountBase = (state, id) => state.getIn(['accounts', id], null); diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js index 9026012fe..a4aebcd3a 100644 --- a/app/javascript/mastodon/service_worker/entry.js +++ b/app/javascript/mastodon/service_worker/entry.js @@ -2,6 +2,7 @@ import { ExpirationPlugin } from 'workbox-expiration'; import { precacheAndRoute } from 'workbox-precaching'; import { registerRoute } from 'workbox-routing'; import { CacheFirst } from 'workbox-strategies'; + import { handleNotificationClick, handlePush } from './web_push_notifications'; const CACHE_NAME_PREFIX = 'mastodon-'; diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js index b9d626694..54247e6f6 100644 --- a/app/javascript/mastodon/service_worker/web_push_notifications.js +++ b/app/javascript/mastodon/service_worker/web_push_notifications.js @@ -1,5 +1,7 @@ import IntlMessageFormat from 'intl-messageformat'; + import { unescape } from 'lodash'; + import locales from './web_push_locales'; const MAX_NOTIFICATIONS = 5; diff --git a/app/javascript/packs/admin.jsx b/app/javascript/packs/admin.jsx index 5f52677af..9bb4d4dbf 100644 --- a/app/javascript/packs/admin.jsx +++ b/app/javascript/packs/admin.jsx @@ -1,9 +1,11 @@ import './public-path'; -import { delegate } from '@rails/ujs'; -import ready from '../mastodon/ready'; import React from 'react'; import { createRoot } from 'react-dom/client'; +import { delegate } from '@rails/ujs'; + +import ready from '../mastodon/ready'; + const setAnnouncementEndsAttributes = (target) => { const valid = target?.value && target?.validity?.valid; const element = document.querySelector('input[type="datetime-local"]#announcement_ends_at'); diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js index ab8708365..29fd5cde9 100644 --- a/app/javascript/packs/application.js +++ b/app/javascript/packs/application.js @@ -1,6 +1,6 @@ import './public-path'; -import { loadPolyfills } from '../mastodon/polyfills'; import { start } from '../mastodon/common'; +import { loadPolyfills } from '../mastodon/polyfills'; start(); diff --git a/app/javascript/packs/public.jsx b/app/javascript/packs/public.jsx index ab4ef573b..72c7acbb4 100644 --- a/app/javascript/packs/public.jsx +++ b/app/javascript/packs/public.jsx @@ -1,22 +1,25 @@ +import { createRoot } from 'react-dom/client'; + import './public-path'; + +import * as IntlMessageFormat from 'intl-messageformat'; +import { defineMessages } from 'react-intl'; + +import { delegate } from '@rails/ujs'; +import axios from 'axios'; import escapeTextContentForBrowser from 'escape-html'; +import { createBrowserHistory } from 'history'; +import { throttle } from 'lodash'; + +import { start } from '../mastodon/common'; +import { timeAgoString } from '../mastodon/components/relative_timestamp'; +import emojify from '../mastodon/features/emoji/emoji'; +import loadKeyboardExtensions from '../mastodon/load_keyboard_extensions'; +import { getLocale } from '../mastodon/locales'; import { loadPolyfills } from '../mastodon/polyfills'; import ready from '../mastodon/ready'; -import { start } from '../mastodon/common'; -import loadKeyboardExtensions from '../mastodon/load_keyboard_extensions'; import 'cocoon-js-vanilla'; -import axios from 'axios'; -import { throttle } from 'lodash'; -import { defineMessages } from 'react-intl'; -import * as IntlMessageFormat from 'intl-messageformat'; -import { timeAgoString } from '../mastodon/components/relative_timestamp'; -import { delegate } from '@rails/ujs'; -import emojify from '../mastodon/features/emoji/emoji'; -import { getLocale } from '../mastodon/locales'; -import React from 'react'; -import { createRoot } from 'react-dom/client'; -import { createBrowserHistory } from 'history'; start(); diff --git a/app/javascript/packs/share.jsx b/app/javascript/packs/share.jsx index 6a87eccda..3bec37d1e 100644 --- a/app/javascript/packs/share.jsx +++ b/app/javascript/packs/share.jsx @@ -1,11 +1,12 @@ import './public-path'; -import { loadPolyfills } from '../mastodon/polyfills'; -import { start } from '../mastodon/common'; -import ready from '../mastodon/ready'; -import ComposeContainer from '../mastodon/containers/compose_container'; import React from 'react'; import { createRoot } from 'react-dom/client'; +import { start } from '../mastodon/common'; +import ComposeContainer from '../mastodon/containers/compose_container'; +import { loadPolyfills } from '../mastodon/polyfills'; +import ready from '../mastodon/ready'; + start(); function loaded() { diff --git a/app/javascript/packs/sign_up.js b/app/javascript/packs/sign_up.js index 260e404eb..9aae9c11b 100644 --- a/app/javascript/packs/sign_up.js +++ b/app/javascript/packs/sign_up.js @@ -1,7 +1,8 @@ import './public-path'; -import ready from '../mastodon/ready'; import axios from 'axios'; +import ready from '../mastodon/ready'; + ready(() => { setInterval(() => { axios.get('/api/v1/emails/check_confirmation').then((response) => { diff --git a/app/javascript/packs/two_factor_authentication.js b/app/javascript/packs/two_factor_authentication.js index dde06be8c..e77965c75 100644 --- a/app/javascript/packs/two_factor_authentication.js +++ b/app/javascript/packs/two_factor_authentication.js @@ -1,5 +1,6 @@ -import axios from 'axios'; import * as WebAuthnJSON from '@github/webauthn-json'; +import axios from 'axios'; + import ready from '../mastodon/ready'; import 'regenerator-runtime/runtime'; diff --git a/config/webpack/configuration.js b/config/webpack/configuration.js index 25b6b7abd..a647b4599 100644 --- a/config/webpack/configuration.js +++ b/config/webpack/configuration.js @@ -1,9 +1,10 @@ // Common configuration for webpacker loaded from config/webpacker.yml +const { readFileSync } = require('fs'); const { resolve } = require('path'); const { env } = require('process'); + const { load } = require('js-yaml'); -const { readFileSync } = require('fs'); const configPath = resolve('config', 'webpacker.yml'); const settings = load(readFileSync(configPath), 'utf8')[env.RAILS_ENV || env.NODE_ENV]; diff --git a/config/webpack/development.js b/config/webpack/development.js index c3cf1b655..e3fbfe4b9 100644 --- a/config/webpack/development.js +++ b/config/webpack/development.js @@ -1,8 +1,9 @@ // Note: You must restart bin/webpack-dev-server for changes to take effect const { merge } = require('webpack-merge'); -const sharedConfig = require('./shared'); + const { settings, output } = require('./configuration'); +const sharedConfig = require('./shared'); const watchOptions = {}; diff --git a/config/webpack/generateLocalePacks.js b/config/webpack/generateLocalePacks.js index be2f35ef4..b8d5d82c6 100644 --- a/config/webpack/generateLocalePacks.js +++ b/config/webpack/generateLocalePacks.js @@ -4,8 +4,9 @@ const fs = require('fs'); const path = require('path'); -const rimraf = require('rimraf'); + const { mkdirp } = require('mkdirp'); +const rimraf = require('rimraf'); const localesJsonPath = path.join(__dirname, '../../app/javascript/mastodon/locales'); const locales = fs.readdirSync(localesJsonPath).filter(filename => { diff --git a/config/webpack/production.js b/config/webpack/production.js index 143a23b99..7f1ee4a8f 100644 --- a/config/webpack/production.js +++ b/config/webpack/production.js @@ -3,11 +3,13 @@ const { createHash } = require('crypto'); const { readFileSync } = require('fs'); const { resolve } = require('path'); -const { merge } = require('webpack-merge'); -const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); -const TerserPlugin = require('terser-webpack-plugin'); + const CompressionPlugin = require('compression-webpack-plugin'); +const TerserPlugin = require('terser-webpack-plugin'); +const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); +const { merge } = require('webpack-merge'); const { InjectManifest } = require('workbox-webpack-plugin'); + const sharedConfig = require('./shared'); const root = resolve(__dirname, '..', '..'); diff --git a/config/webpack/rules/babel.js b/config/webpack/rules/babel.js index ba1aff93a..2811a1674 100644 --- a/config/webpack/rules/babel.js +++ b/config/webpack/rules/babel.js @@ -1,4 +1,5 @@ const { join, resolve } = require('path'); + const { env, settings } = require('../configuration'); module.exports = { diff --git a/config/webpack/rules/file.js b/config/webpack/rules/file.js index f2fb58780..25cda0eae 100644 --- a/config/webpack/rules/file.js +++ b/config/webpack/rules/file.js @@ -1,4 +1,5 @@ const { join } = require('path'); + const { settings } = require('../configuration'); module.exports = { diff --git a/config/webpack/rules/index.js b/config/webpack/rules/index.js index 92a384e6d..7e1857341 100644 --- a/config/webpack/rules/index.js +++ b/config/webpack/rules/index.js @@ -1,8 +1,8 @@ const babel = require('./babel'); const css = require('./css'); const file = require('./file'); -const tesseract = require('./tesseract'); const nodeModules = require('./node_modules'); +const tesseract = require('./tesseract'); // Webpack loaders are processed in reverse order // https://webpack.js.org/concepts/loaders/#loader-features diff --git a/config/webpack/rules/node_modules.js b/config/webpack/rules/node_modules.js index c084d3a57..89c9d422d 100644 --- a/config/webpack/rules/node_modules.js +++ b/config/webpack/rules/node_modules.js @@ -1,4 +1,5 @@ const { join } = require('path'); + const { settings, env } = require('../configuration'); module.exports = { diff --git a/config/webpack/shared.js b/config/webpack/shared.js index 037243965..f2f182c56 100644 --- a/config/webpack/shared.js +++ b/config/webpack/shared.js @@ -1,14 +1,16 @@ // Note: You must restart bin/webpack-dev-server for changes to take effect -const webpack = require('webpack'); const { basename, dirname, join, relative, resolve } = require('path'); + const { sync } = require('glob'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const AssetsManifestPlugin = require('webpack-assets-manifest'); const extname = require('path-complete-extname'); +const webpack = require('webpack'); +const AssetsManifestPlugin = require('webpack-assets-manifest'); + const { env, settings, themes, output } = require('./configuration'); -const rules = require('./rules'); const localePackPaths = require('./generateLocalePacks'); +const rules = require('./rules'); const extensionGlob = `**/*{${settings.extensions.join(',')}}*`; const entryPath = join(settings.source_path, settings.source_entry_path); diff --git a/config/webpack/tests.js b/config/webpack/tests.js index 84f008eac..1f7bdea9d 100644 --- a/config/webpack/tests.js +++ b/config/webpack/tests.js @@ -1,6 +1,7 @@ // Note: You must restart bin/webpack-dev-server for changes to take effect const { merge } = require('webpack-merge'); + const sharedConfig = require('./shared'); module.exports = merge(sharedConfig, { diff --git a/config/webpack/translationRunner.js b/config/webpack/translationRunner.js index 38050baf8..9c684c277 100644 --- a/config/webpack/translationRunner.js +++ b/config/webpack/translationRunner.js @@ -1,5 +1,7 @@ const fs = require('fs'); const path = require('path'); + +// eslint-disable-next-line import/order const { default: manageTranslations } = require('react-intl-translations-manager'); const RFC5646_REGEXP = /^[a-z]{2,3}(?:-(?:x|[A-Za-z]{2,4}))*$/; diff --git a/streaming/index.js b/streaming/index.js index 07cc91f3f..279ebbad8 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -1,17 +1,18 @@ // @ts-check +const fs = require('fs'); +const http = require('http'); +const url = require('url'); + const dotenv = require('dotenv'); const express = require('express'); -const http = require('http'); -const redis = require('redis'); +const { JSDOM } = require('jsdom'); +const log = require('npmlog'); const pg = require('pg'); const dbUrlToConfig = require('pg-connection-string').parse; -const log = require('npmlog'); -const url = require('url'); +const redis = require('redis'); const uuid = require('uuid'); -const fs = require('fs'); const WebSocket = require('ws'); -const { JSDOM } = require('jsdom'); const environment = process.env.NODE_ENV || 'development';