From 2e112e240666b62b8c3d4fa201fb24b841f6c92b Mon Sep 17 00:00:00 2001
From: Yamagishi Kazutoshi
Date: Sun, 21 May 2017 00:31:47 +0900
Subject: [PATCH] Improve eslint rules (#3147)
* Add semi to ESLint rules
* Add padded-blocks to ESLint rules
* Add comma-dangle to ESLint rules
* add config/webpack and storyboard
* add streaming/
* yarn test:lint -- --fix
---
.eslintrc.yml | 7 +
app/javascript/mastodon/actions/accounts.js | 136 +++----
app/javascript/mastodon/actions/alerts.js | 6 +-
app/javascript/mastodon/actions/blocks.js | 14 +-
app/javascript/mastodon/actions/cards.js | 6 +-
app/javascript/mastodon/actions/compose.js | 54 +--
.../mastodon/actions/domain_blocks.js | 20 +-
app/javascript/mastodon/actions/favourites.js | 14 +-
.../mastodon/actions/interactions.js | 38 +-
app/javascript/mastodon/actions/modal.js | 4 +-
app/javascript/mastodon/actions/mutes.js | 14 +-
.../mastodon/actions/notifications.js | 24 +-
app/javascript/mastodon/actions/reports.js | 14 +-
app/javascript/mastodon/actions/search.js | 18 +-
app/javascript/mastodon/actions/settings.js | 4 +-
app/javascript/mastodon/actions/statuses.js | 30 +-
app/javascript/mastodon/actions/store.js | 2 +-
app/javascript/mastodon/actions/timelines.js | 28 +-
app/javascript/mastodon/api.js | 4 +-
app/javascript/mastodon/components/account.js | 6 +-
.../mastodon/components/attachment_list.js | 2 +-
.../components/autosuggest_textarea.js | 8 +-
app/javascript/mastodon/components/avatar.js | 8 +-
.../mastodon/components/avatar_overlay.js | 7 +-
app/javascript/mastodon/components/button.js | 6 +-
.../mastodon/components/collapsable.js | 2 +-
.../mastodon/components/column_back_button.js | 2 +-
.../components/column_back_button_slim.js | 3 +-
.../mastodon/components/column_collapsable.js | 5 +-
.../mastodon/components/display_name.js | 2 +-
.../mastodon/components/dropdown_menu.js | 6 +-
.../components/extended_video_player.js | 2 +-
.../mastodon/components/icon_button.js | 8 +-
.../mastodon/components/load_more.js | 2 +-
.../mastodon/components/media_gallery.js | 8 +-
.../mastodon/components/permalink.js | 4 +-
.../mastodon/components/relative_timestamp.js | 2 +-
app/javascript/mastodon/components/status.js | 4 +-
.../mastodon/components/status_action_bar.js | 4 +-
.../mastodon/components/status_content.js | 8 +-
.../mastodon/components/status_list.js | 4 +-
.../mastodon/components/video_player.js | 8 +-
.../mastodon/containers/account_container.js | 4 +-
.../mastodon/containers/mastodon.js | 8 +-
.../mastodon/containers/status_container.js | 18 +-
.../features/account/components/action_bar.js | 2 +-
.../features/account/components/header.js | 12 +-
.../account_gallery/components/media_item.js | 3 +-
.../features/account_gallery/index.js | 2 +-
.../account_timeline/components/header.js | 2 +-
.../containers/header_container.js | 12 +-
.../features/account_timeline/index.js | 6 +-
.../mastodon/features/blocks/index.js | 7 +-
.../features/community_timeline/index.js | 10 +-
.../compose/components/autosuggest_account.js | 2 +-
.../compose/components/character_counter.js | 2 +-
.../compose/components/compose_form.js | 2 +-
.../components/emoji_picker_dropdown.js | 12 +-
.../compose/components/navigation_bar.js | 2 +-
.../compose/components/privacy_dropdown.js | 12 +-
.../compose/components/reply_indicator.js | 6 +-
.../features/compose/components/search.js | 4 +-
.../compose/components/search_results.js | 2 +-
.../compose/components/text_icon_button.js | 2 +-
.../compose/components/upload_button.js | 10 +-
.../compose/components/upload_form.js | 4 +-
.../compose/components/upload_progress.js | 2 +-
.../features/compose/components/warning.js | 2 +-
.../autosuggest_account_container.js | 2 +-
.../autosuggest_status_container.js | 2 +-
.../containers/compose_form_container.js | 4 +-
.../containers/navigation_container.js | 2 +-
.../containers/privacy_dropdown_container.js | 4 +-
.../containers/reply_indicator_container.js | 2 +-
.../compose/containers/search_container.js | 6 +-
.../containers/search_results_container.js | 2 +-
.../containers/sensitive_button_container.js | 8 +-
.../containers/spoiler_button_container.js | 6 +-
.../containers/upload_button_container.js | 4 +-
.../containers/upload_form_container.js | 2 +-
.../containers/upload_progress_container.js | 2 +-
.../compose/containers/warning_container.js | 2 +-
.../mastodon/features/compose/index.js | 6 +-
.../features/favourited_statuses/index.js | 6 +-
.../mastodon/features/favourites/index.js | 4 +-
.../components/account_authorize.js | 4 +-
.../containers/account_authorize_container.js | 4 +-
.../features/follow_requests/index.js | 6 +-
.../mastodon/features/followers/index.js | 6 +-
.../mastodon/features/following/index.js | 6 +-
.../features/getting_started/index.js | 9 +-
.../features/hashtag_timeline/index.js | 8 +-
.../components/column_settings.js | 4 +-
.../home_timeline/components/setting_text.js | 4 +-
.../containers/column_settings_container.js | 4 +-
.../mastodon/features/home_timeline/index.js | 8 +-
.../mastodon/features/mutes/index.js | 6 +-
.../components/clear_column_button.js | 5 +-
.../components/column_settings.js | 6 +-
.../notifications/components/notification.js | 2 +-
.../components/setting_toggle.js | 2 +-
.../containers/column_settings_container.js | 4 +-
.../containers/notification_container.js | 2 +-
.../mastodon/features/notifications/index.js | 12 +-
.../features/public_timeline/index.js | 10 +-
.../mastodon/features/reblogs/index.js | 4 +-
.../report/components/status_check_box.js | 2 +-
.../containers/status_check_box_container.js | 4 +-
.../mastodon/features/report/index.js | 8 +-
.../features/status/components/action_bar.js | 4 +-
.../features/status/components/card.js | 7 +-
.../status/components/detailed_status.js | 2 +-
.../status/containers/card_container.js | 2 +-
.../mastodon/features/status/index.js | 18 +-
.../features/ui/components/boost_modal.js | 6 +-
.../mastodon/features/ui/components/column.js | 6 +-
.../features/ui/components/column_header.js | 4 +-
.../features/ui/components/column_link.js | 2 +-
.../features/ui/components/columns_area.js | 2 +-
.../ui/components/confirmation_modal.js | 2 +-
.../features/ui/components/media_modal.js | 6 +-
.../features/ui/components/modal_root.js | 6 +-
.../ui/components/onboarding_modal.js | 20 +-
.../features/ui/components/upload_area.js | 4 +-
.../features/ui/components/video_modal.js | 4 +-
.../ui/containers/loading_bar_container.js | 2 +-
.../features/ui/containers/modal_container.js | 2 +-
.../ui/containers/notifications_container.js | 6 +-
.../ui/containers/status_list_container.js | 6 +-
app/javascript/mastodon/features/ui/index.js | 4 +-
app/javascript/mastodon/link_header.js | 26 +-
.../mastodon/locales/locale-data/oc.js | 62 +--
app/javascript/mastodon/main.js | 2 +-
app/javascript/mastodon/middleware/sounds.js | 4 +-
app/javascript/mastodon/reducers/accounts.js | 18 +-
.../mastodon/reducers/accounts_counters.js | 18 +-
app/javascript/mastodon/reducers/alerts.js | 4 +-
app/javascript/mastodon/reducers/compose.js | 4 +-
app/javascript/mastodon/reducers/index.js | 2 +-
app/javascript/mastodon/reducers/meta.js | 2 +-
app/javascript/mastodon/reducers/modal.js | 2 +-
.../mastodon/reducers/notifications.js | 6 +-
.../mastodon/reducers/relationships.js | 4 +-
app/javascript/mastodon/reducers/reports.js | 6 +-
app/javascript/mastodon/reducers/search.js | 20 +-
app/javascript/mastodon/reducers/settings.js | 16 +-
.../mastodon/reducers/status_lists.js | 6 +-
app/javascript/mastodon/reducers/statuses.js | 12 +-
app/javascript/mastodon/reducers/timelines.js | 18 +-
.../mastodon/reducers/user_lists.js | 12 +-
app/javascript/mastodon/selectors/index.js | 6 +-
app/javascript/packs/application.js | 2 +-
app/javascript/packs/public.js | 4 +-
config/webpack/configuration.js | 28 +-
config/webpack/development.js | 12 +-
config/webpack/development.server.js | 14 +-
config/webpack/loaders/assets.js | 10 +-
config/webpack/loaders/babel.js | 6 +-
config/webpack/loaders/coffee.js | 4 +-
config/webpack/loaders/erb.js | 6 +-
config/webpack/loaders/sass.js | 12 +-
config/webpack/production.js | 20 +-
config/webpack/shared.js | 46 +--
config/webpack/test.js | 6 +-
config/webpack/translationRunner.js | 14 +-
package.json | 2 +-
storybook/config.js | 2 +-
.../stories/autosuggest_textarea.story.js | 10 +-
storybook/webpack.config.js | 14 +-
streaming/index.js | 354 +++++++++---------
170 files changed, 919 insertions(+), 904 deletions(-)
diff --git a/.eslintrc.yml b/.eslintrc.yml
index 12bdf342a..59218cb24 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -47,6 +47,13 @@ rules:
no-mixed-spaces-and-tabs: warn
no-nested-ternary: warn
no-trailing-spaces: warn
+ semi: error
+ padded-blocks:
+ - error
+ - classes: always
+ comma-dangle:
+ - error
+ - always-multiline
react/jsx-wrap-multilines: error
react/jsx-no-bind: error
diff --git a/app/javascript/mastodon/actions/accounts.js b/app/javascript/mastodon/actions/accounts.js
index 2b7bce681..d093815e2 100644
--- a/app/javascript/mastodon/actions/accounts.js
+++ b/app/javascript/mastodon/actions/accounts.js
@@ -1,4 +1,4 @@
-import api, { getLinks } from '../api'
+import api, { getLinks } from '../api';
import Immutable from 'immutable';
export const ACCOUNT_FETCH_REQUEST = 'ACCOUNT_FETCH_REQUEST';
@@ -154,8 +154,8 @@ export function expandAccountTimeline(id) {
api(getState).get(`/api/v1/accounts/${id}/statuses`, {
params: {
limit: 10,
- max_id: lastId
- }
+ max_id: lastId,
+ },
}).then(response => {
const next = getLinks(response).refs.find(link => link.rel === 'next');
dispatch(expandAccountTimelineSuccess(id, response.data, next));
@@ -175,8 +175,8 @@ export function expandAccountMediaTimeline(id) {
params: {
limit: 12,
only_media: 'true',
- max_id: lastId
- }
+ max_id: lastId,
+ },
}).then(response => {
const next = getLinks(response).refs.find(link => link.rel === 'next');
dispatch(expandAccountMediaTimelineSuccess(id, response.data, next));
@@ -189,14 +189,14 @@ export function expandAccountMediaTimeline(id) {
export function fetchAccountRequest(id) {
return {
type: ACCOUNT_FETCH_REQUEST,
- id
+ id,
};
};
export function fetchAccountSuccess(account) {
return {
type: ACCOUNT_FETCH_SUCCESS,
- account
+ account,
};
};
@@ -205,7 +205,7 @@ export function fetchAccountFail(id, error) {
type: ACCOUNT_FETCH_FAIL,
id,
error,
- skipAlert: true
+ skipAlert: true,
};
};
@@ -230,48 +230,48 @@ export function unfollowAccount(id) {
}).catch(error => {
dispatch(unfollowAccountFail(error));
});
- }
+ };
};
export function followAccountRequest(id) {
return {
type: ACCOUNT_FOLLOW_REQUEST,
- id
+ id,
};
};
export function followAccountSuccess(relationship) {
return {
type: ACCOUNT_FOLLOW_SUCCESS,
- relationship
+ relationship,
};
};
export function followAccountFail(error) {
return {
type: ACCOUNT_FOLLOW_FAIL,
- error
+ error,
};
};
export function unfollowAccountRequest(id) {
return {
type: ACCOUNT_UNFOLLOW_REQUEST,
- id
+ id,
};
};
export function unfollowAccountSuccess(relationship) {
return {
type: ACCOUNT_UNFOLLOW_SUCCESS,
- relationship
+ relationship,
};
};
export function unfollowAccountFail(error) {
return {
type: ACCOUNT_UNFOLLOW_FAIL,
- error
+ error,
};
};
@@ -279,7 +279,7 @@ export function fetchAccountTimelineRequest(id, skipLoading) {
return {
type: ACCOUNT_TIMELINE_FETCH_REQUEST,
id,
- skipLoading
+ skipLoading,
};
};
@@ -289,7 +289,7 @@ export function fetchAccountTimelineSuccess(id, statuses, replace, skipLoading)
id,
statuses,
replace,
- skipLoading
+ skipLoading,
};
};
@@ -299,7 +299,7 @@ export function fetchAccountTimelineFail(id, error, skipLoading) {
id,
error,
skipLoading,
- skipAlert: error.response.status === 404
+ skipAlert: error.response.status === 404,
};
};
@@ -307,7 +307,7 @@ export function fetchAccountMediaTimelineRequest(id, skipLoading) {
return {
type: ACCOUNT_MEDIA_TIMELINE_FETCH_REQUEST,
id,
- skipLoading
+ skipLoading,
};
};
@@ -317,7 +317,7 @@ export function fetchAccountMediaTimelineSuccess(id, statuses, replace, skipLoad
id,
statuses,
replace,
- skipLoading
+ skipLoading,
};
};
@@ -327,14 +327,14 @@ export function fetchAccountMediaTimelineFail(id, error, skipLoading) {
id,
error,
skipLoading,
- skipAlert: error.response.status === 404
+ skipAlert: error.response.status === 404,
};
};
export function expandAccountTimelineRequest(id) {
return {
type: ACCOUNT_TIMELINE_EXPAND_REQUEST,
- id
+ id,
};
};
@@ -343,7 +343,7 @@ export function expandAccountTimelineSuccess(id, statuses, next) {
type: ACCOUNT_TIMELINE_EXPAND_SUCCESS,
id,
statuses,
- next
+ next,
};
};
@@ -351,14 +351,14 @@ export function expandAccountTimelineFail(id, error) {
return {
type: ACCOUNT_TIMELINE_EXPAND_FAIL,
id,
- error
+ error,
};
};
export function expandAccountMediaTimelineRequest(id) {
return {
type: ACCOUNT_MEDIA_TIMELINE_EXPAND_REQUEST,
- id
+ id,
};
};
@@ -367,7 +367,7 @@ export function expandAccountMediaTimelineSuccess(id, statuses, next) {
type: ACCOUNT_MEDIA_TIMELINE_EXPAND_SUCCESS,
id,
statuses,
- next
+ next,
};
};
@@ -375,7 +375,7 @@ export function expandAccountMediaTimelineFail(id, error) {
return {
type: ACCOUNT_MEDIA_TIMELINE_EXPAND_FAIL,
id,
- error
+ error,
};
};
@@ -407,7 +407,7 @@ export function unblockAccount(id) {
export function blockAccountRequest(id) {
return {
type: ACCOUNT_BLOCK_REQUEST,
- id
+ id,
};
};
@@ -415,35 +415,35 @@ export function blockAccountSuccess(relationship, statuses) {
return {
type: ACCOUNT_BLOCK_SUCCESS,
relationship,
- statuses
+ statuses,
};
};
export function blockAccountFail(error) {
return {
type: ACCOUNT_BLOCK_FAIL,
- error
+ error,
};
};
export function unblockAccountRequest(id) {
return {
type: ACCOUNT_UNBLOCK_REQUEST,
- id
+ id,
};
};
export function unblockAccountSuccess(relationship) {
return {
type: ACCOUNT_UNBLOCK_SUCCESS,
- relationship
+ relationship,
};
};
export function unblockAccountFail(error) {
return {
type: ACCOUNT_UNBLOCK_FAIL,
- error
+ error,
};
};
@@ -476,7 +476,7 @@ export function unmuteAccount(id) {
export function muteAccountRequest(id) {
return {
type: ACCOUNT_MUTE_REQUEST,
- id
+ id,
};
};
@@ -484,35 +484,35 @@ export function muteAccountSuccess(relationship, statuses) {
return {
type: ACCOUNT_MUTE_SUCCESS,
relationship,
- statuses
+ statuses,
};
};
export function muteAccountFail(error) {
return {
type: ACCOUNT_MUTE_FAIL,
- error
+ error,
};
};
export function unmuteAccountRequest(id) {
return {
type: ACCOUNT_UNMUTE_REQUEST,
- id
+ id,
};
};
export function unmuteAccountSuccess(relationship) {
return {
type: ACCOUNT_UNMUTE_SUCCESS,
- relationship
+ relationship,
};
};
export function unmuteAccountFail(error) {
return {
type: ACCOUNT_UNMUTE_FAIL,
- error
+ error,
};
};
@@ -535,7 +535,7 @@ export function fetchFollowers(id) {
export function fetchFollowersRequest(id) {
return {
type: FOLLOWERS_FETCH_REQUEST,
- id
+ id,
};
};
@@ -544,7 +544,7 @@ export function fetchFollowersSuccess(id, accounts, next) {
type: FOLLOWERS_FETCH_SUCCESS,
id,
accounts,
- next
+ next,
};
};
@@ -552,7 +552,7 @@ export function fetchFollowersFail(id, error) {
return {
type: FOLLOWERS_FETCH_FAIL,
id,
- error
+ error,
};
};
@@ -580,7 +580,7 @@ export function expandFollowers(id) {
export function expandFollowersRequest(id) {
return {
type: FOLLOWERS_EXPAND_REQUEST,
- id
+ id,
};
};
@@ -589,7 +589,7 @@ export function expandFollowersSuccess(id, accounts, next) {
type: FOLLOWERS_EXPAND_SUCCESS,
id,
accounts,
- next
+ next,
};
};
@@ -597,7 +597,7 @@ export function expandFollowersFail(id, error) {
return {
type: FOLLOWERS_EXPAND_FAIL,
id,
- error
+ error,
};
};
@@ -619,7 +619,7 @@ export function fetchFollowing(id) {
export function fetchFollowingRequest(id) {
return {
type: FOLLOWING_FETCH_REQUEST,
- id
+ id,
};
};
@@ -628,7 +628,7 @@ export function fetchFollowingSuccess(id, accounts, next) {
type: FOLLOWING_FETCH_SUCCESS,
id,
accounts,
- next
+ next,
};
};
@@ -636,7 +636,7 @@ export function fetchFollowingFail(id, error) {
return {
type: FOLLOWING_FETCH_FAIL,
id,
- error
+ error,
};
};
@@ -664,7 +664,7 @@ export function expandFollowing(id) {
export function expandFollowingRequest(id) {
return {
type: FOLLOWING_EXPAND_REQUEST,
- id
+ id,
};
};
@@ -673,7 +673,7 @@ export function expandFollowingSuccess(id, accounts, next) {
type: FOLLOWING_EXPAND_SUCCESS,
id,
accounts,
- next
+ next,
};
};
@@ -681,7 +681,7 @@ export function expandFollowingFail(id, error) {
return {
type: FOLLOWING_EXPAND_FAIL,
id,
- error
+ error,
};
};
@@ -708,7 +708,7 @@ export function fetchRelationshipsRequest(ids) {
return {
type: RELATIONSHIPS_FETCH_REQUEST,
ids,
- skipLoading: true
+ skipLoading: true,
};
};
@@ -716,7 +716,7 @@ export function fetchRelationshipsSuccess(relationships) {
return {
type: RELATIONSHIPS_FETCH_SUCCESS,
relationships,
- skipLoading: true
+ skipLoading: true,
};
};
@@ -724,7 +724,7 @@ export function fetchRelationshipsFail(error) {
return {
type: RELATIONSHIPS_FETCH_FAIL,
error,
- skipLoading: true
+ skipLoading: true,
};
};
@@ -734,14 +734,14 @@ export function fetchFollowRequests() {
api(getState).get('/api/v1/follow_requests').then(response => {
const next = getLinks(response).refs.find(link => link.rel === 'next');
- dispatch(fetchFollowRequestsSuccess(response.data, next ? next.uri : null))
+ dispatch(fetchFollowRequestsSuccess(response.data, next ? next.uri : null));
}).catch(error => dispatch(fetchFollowRequestsFail(error)));
};
};
export function fetchFollowRequestsRequest() {
return {
- type: FOLLOW_REQUESTS_FETCH_REQUEST
+ type: FOLLOW_REQUESTS_FETCH_REQUEST,
};
};
@@ -749,14 +749,14 @@ export function fetchFollowRequestsSuccess(accounts, next) {
return {
type: FOLLOW_REQUESTS_FETCH_SUCCESS,
accounts,
- next
+ next,
};
};
export function fetchFollowRequestsFail(error) {
return {
type: FOLLOW_REQUESTS_FETCH_FAIL,
- error
+ error,
};
};
@@ -772,14 +772,14 @@ export function expandFollowRequests() {
api(getState).get(url).then(response => {
const next = getLinks(response).refs.find(link => link.rel === 'next');
- dispatch(expandFollowRequestsSuccess(response.data, next ? next.uri : null))
+ dispatch(expandFollowRequestsSuccess(response.data, next ? next.uri : null));
}).catch(error => dispatch(expandFollowRequestsFail(error)));
};
};
export function expandFollowRequestsRequest() {
return {
- type: FOLLOW_REQUESTS_EXPAND_REQUEST
+ type: FOLLOW_REQUESTS_EXPAND_REQUEST,
};
};
@@ -787,14 +787,14 @@ export function expandFollowRequestsSuccess(accounts, next) {
return {
type: FOLLOW_REQUESTS_EXPAND_SUCCESS,
accounts,
- next
+ next,
};
};
export function expandFollowRequestsFail(error) {
return {
type: FOLLOW_REQUESTS_EXPAND_FAIL,
- error
+ error,
};
};
@@ -812,14 +812,14 @@ export function authorizeFollowRequest(id) {
export function authorizeFollowRequestRequest(id) {
return {
type: FOLLOW_REQUEST_AUTHORIZE_REQUEST,
- id
+ id,
};
};
export function authorizeFollowRequestSuccess(id) {
return {
type: FOLLOW_REQUEST_AUTHORIZE_SUCCESS,
- id
+ id,
};
};
@@ -827,7 +827,7 @@ export function authorizeFollowRequestFail(id, error) {
return {
type: FOLLOW_REQUEST_AUTHORIZE_FAIL,
id,
- error
+ error,
};
};
@@ -846,14 +846,14 @@ export function rejectFollowRequest(id) {
export function rejectFollowRequestRequest(id) {
return {
type: FOLLOW_REQUEST_REJECT_REQUEST,
- id
+ id,
};
};
export function rejectFollowRequestSuccess(id) {
return {
type: FOLLOW_REQUEST_REJECT_SUCCESS,
- id
+ id,
};
};
@@ -861,6 +861,6 @@ export function rejectFollowRequestFail(id, error) {
return {
type: FOLLOW_REQUEST_REJECT_FAIL,
id,
- error
+ error,
};
};
diff --git a/app/javascript/mastodon/actions/alerts.js b/app/javascript/mastodon/actions/alerts.js
index 086e0727e..f37fdeeb6 100644
--- a/app/javascript/mastodon/actions/alerts.js
+++ b/app/javascript/mastodon/actions/alerts.js
@@ -5,13 +5,13 @@ export const ALERT_CLEAR = 'ALERT_CLEAR';
export function dismissAlert(alert) {
return {
type: ALERT_DISMISS,
- alert
+ alert,
};
};
export function clearAlert() {
return {
- type: ALERT_CLEAR
+ type: ALERT_CLEAR,
};
};
@@ -19,6 +19,6 @@ export function showAlert(title, message) {
return {
type: ALERT_SHOW,
title,
- message
+ message,
};
};
diff --git a/app/javascript/mastodon/actions/blocks.js b/app/javascript/mastodon/actions/blocks.js
index 79e316497..553283a71 100644
--- a/app/javascript/mastodon/actions/blocks.js
+++ b/app/javascript/mastodon/actions/blocks.js
@@ -1,4 +1,4 @@
-import api, { getLinks } from '../api'
+import api, { getLinks } from '../api';
import { fetchRelationships } from './accounts';
export const BLOCKS_FETCH_REQUEST = 'BLOCKS_FETCH_REQUEST';
@@ -23,7 +23,7 @@ export function fetchBlocks() {
export function fetchBlocksRequest() {
return {
- type: BLOCKS_FETCH_REQUEST
+ type: BLOCKS_FETCH_REQUEST,
};
};
@@ -31,14 +31,14 @@ export function fetchBlocksSuccess(accounts, next) {
return {
type: BLOCKS_FETCH_SUCCESS,
accounts,
- next
+ next,
};
};
export function fetchBlocksFail(error) {
return {
type: BLOCKS_FETCH_FAIL,
- error
+ error,
};
};
@@ -62,7 +62,7 @@ export function expandBlocks() {
export function expandBlocksRequest() {
return {
- type: BLOCKS_EXPAND_REQUEST
+ type: BLOCKS_EXPAND_REQUEST,
};
};
@@ -70,13 +70,13 @@ export function expandBlocksSuccess(accounts, next) {
return {
type: BLOCKS_EXPAND_SUCCESS,
accounts,
- next
+ next,
};
};
export function expandBlocksFail(error) {
return {
type: BLOCKS_EXPAND_FAIL,
- error
+ error,
};
};
diff --git a/app/javascript/mastodon/actions/cards.js b/app/javascript/mastodon/actions/cards.js
index 805be9709..baf04833a 100644
--- a/app/javascript/mastodon/actions/cards.js
+++ b/app/javascript/mastodon/actions/cards.js
@@ -28,7 +28,7 @@ export function fetchStatusCardRequest(id) {
return {
type: STATUS_CARD_FETCH_REQUEST,
id,
- skipLoading: true
+ skipLoading: true,
};
};
@@ -37,7 +37,7 @@ export function fetchStatusCardSuccess(id, card) {
type: STATUS_CARD_FETCH_SUCCESS,
id,
card,
- skipLoading: true
+ skipLoading: true,
};
};
@@ -47,6 +47,6 @@ export function fetchStatusCardFail(id, error) {
id,
error,
skipLoading: true,
- skipAlert: true
+ skipAlert: true,
};
};
diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js
index d7ff6ea63..647a52b93 100644
--- a/app/javascript/mastodon/actions/compose.js
+++ b/app/javascript/mastodon/actions/compose.js
@@ -35,7 +35,7 @@ export const COMPOSE_EMOJI_INSERT = 'COMPOSE_EMOJI_INSERT';
export function changeCompose(text) {
return {
type: COMPOSE_CHANGE,
- text: text
+ text: text,
};
};
@@ -43,7 +43,7 @@ export function replyCompose(status, router) {
return (dispatch, getState) => {
dispatch({
type: COMPOSE_REPLY,
- status: status
+ status: status,
});
if (!getState().getIn(['compose', 'mounted'])) {
@@ -54,7 +54,7 @@ export function replyCompose(status, router) {
export function cancelReplyCompose() {
return {
- type: COMPOSE_REPLY_CANCEL
+ type: COMPOSE_REPLY_CANCEL,
};
};
@@ -62,7 +62,7 @@ export function mentionCompose(account, router) {
return (dispatch, getState) => {
dispatch({
type: COMPOSE_MENTION,
- account: account
+ account: account,
});
if (!getState().getIn(['compose', 'mounted'])) {
@@ -84,11 +84,11 @@ export function submitCompose() {
media_ids: getState().getIn(['compose', 'media_attachments']).map(item => item.get('id')),
sensitive: getState().getIn(['compose', 'sensitive']),
spoiler_text: getState().getIn(['compose', 'spoiler_text'], ''),
- visibility: getState().getIn(['compose', 'privacy'])
+ visibility: getState().getIn(['compose', 'privacy']),
}, {
headers: {
- 'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey'])
- }
+ 'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']),
+ },
}).then(function (response) {
dispatch(submitComposeSuccess({ ...response.data }));
@@ -112,21 +112,21 @@ export function submitCompose() {
export function submitComposeRequest() {
return {
- type: COMPOSE_SUBMIT_REQUEST
+ type: COMPOSE_SUBMIT_REQUEST,
};
};
export function submitComposeSuccess(status) {
return {
type: COMPOSE_SUBMIT_SUCCESS,
- status: status
+ status: status,
};
};
export function submitComposeFail(error) {
return {
type: COMPOSE_SUBMIT_FAIL,
- error: error
+ error: error,
};
};
@@ -144,7 +144,7 @@ export function uploadCompose(files) {
api(getState).post('/api/v1/media', data, {
onUploadProgress: function (e) {
dispatch(uploadComposeProgress(e.loaded, e.total));
- }
+ },
}).then(function (response) {
dispatch(uploadComposeSuccess(response.data));
}).catch(function (error) {
@@ -156,7 +156,7 @@ export function uploadCompose(files) {
export function uploadComposeRequest() {
return {
type: COMPOSE_UPLOAD_REQUEST,
- skipLoading: true
+ skipLoading: true,
};
};
@@ -164,7 +164,7 @@ export function uploadComposeProgress(loaded, total) {
return {
type: COMPOSE_UPLOAD_PROGRESS,
loaded: loaded,
- total: total
+ total: total,
};
};
@@ -172,7 +172,7 @@ export function uploadComposeSuccess(media) {
return {
type: COMPOSE_UPLOAD_SUCCESS,
media: media,
- skipLoading: true
+ skipLoading: true,
};
};
@@ -180,20 +180,20 @@ export function uploadComposeFail(error) {
return {
type: COMPOSE_UPLOAD_FAIL,
error: error,
- skipLoading: true
+ skipLoading: true,
};
};
export function undoUploadCompose(media_id) {
return {
type: COMPOSE_UPLOAD_UNDO,
- media_id: media_id
+ media_id: media_id,
};
};
export function clearComposeSuggestions() {
return {
- type: COMPOSE_SUGGESTIONS_CLEAR
+ type: COMPOSE_SUGGESTIONS_CLEAR,
};
};
@@ -203,8 +203,8 @@ export function fetchComposeSuggestions(token) {
params: {
q: token,
resolve: false,
- limit: 4
- }
+ limit: 4,
+ },
}).then(response => {
dispatch(readyComposeSuggestions(token, response.data));
});
@@ -215,7 +215,7 @@ export function readyComposeSuggestions(token, accounts) {
return {
type: COMPOSE_SUGGESTIONS_READY,
token,
- accounts
+ accounts,
};
};
@@ -227,20 +227,20 @@ export function selectComposeSuggestion(position, token, accountId) {
type: COMPOSE_SUGGESTION_SELECT,
position,
token,
- completion
+ completion,
});
};
};
export function mountCompose() {
return {
- type: COMPOSE_MOUNT
+ type: COMPOSE_MOUNT,
};
};
export function unmountCompose() {
return {
- type: COMPOSE_UNMOUNT
+ type: COMPOSE_UNMOUNT,
};
};
@@ -252,21 +252,21 @@ export function changeComposeSensitivity() {
export function changeComposeSpoilerness() {
return {
- type: COMPOSE_SPOILERNESS_CHANGE
+ type: COMPOSE_SPOILERNESS_CHANGE,
};
};
export function changeComposeSpoilerText(text) {
return {
type: COMPOSE_SPOILER_TEXT_CHANGE,
- text
+ text,
};
};
export function changeComposeVisibility(value) {
return {
type: COMPOSE_VISIBILITY_CHANGE,
- value
+ value,
};
};
@@ -274,6 +274,6 @@ export function insertEmojiCompose(position, emoji) {
return {
type: COMPOSE_EMOJI_INSERT,
position,
- emoji
+ emoji,
};
};
diff --git a/app/javascript/mastodon/actions/domain_blocks.js b/app/javascript/mastodon/actions/domain_blocks.js
index c88498117..530ba9cf1 100644
--- a/app/javascript/mastodon/actions/domain_blocks.js
+++ b/app/javascript/mastodon/actions/domain_blocks.js
@@ -1,4 +1,4 @@
-import api, { getLinks } from '../api'
+import api, { getLinks } from '../api';
export const DOMAIN_BLOCK_REQUEST = 'DOMAIN_BLOCK_REQUEST';
export const DOMAIN_BLOCK_SUCCESS = 'DOMAIN_BLOCK_SUCCESS';
@@ -27,7 +27,7 @@ export function blockDomain(domain, accountId) {
export function blockDomainRequest(domain) {
return {
type: DOMAIN_BLOCK_REQUEST,
- domain
+ domain,
};
};
@@ -35,7 +35,7 @@ export function blockDomainSuccess(domain, accountId) {
return {
type: DOMAIN_BLOCK_SUCCESS,
domain,
- accountId
+ accountId,
};
};
@@ -43,7 +43,7 @@ export function blockDomainFail(domain, error) {
return {
type: DOMAIN_BLOCK_FAIL,
domain,
- error
+ error,
};
};
@@ -62,7 +62,7 @@ export function unblockDomain(domain, accountId) {
export function unblockDomainRequest(domain) {
return {
type: DOMAIN_UNBLOCK_REQUEST,
- domain
+ domain,
};
};
@@ -70,7 +70,7 @@ export function unblockDomainSuccess(domain, accountId) {
return {
type: DOMAIN_UNBLOCK_SUCCESS,
domain,
- accountId
+ accountId,
};
};
@@ -78,7 +78,7 @@ export function unblockDomainFail(domain, error) {
return {
type: DOMAIN_UNBLOCK_FAIL,
domain,
- error
+ error,
};
};
@@ -97,7 +97,7 @@ export function fetchDomainBlocks() {
export function fetchDomainBlocksRequest() {
return {
- type: DOMAIN_BLOCKS_FETCH_REQUEST
+ type: DOMAIN_BLOCKS_FETCH_REQUEST,
};
};
@@ -105,13 +105,13 @@ export function fetchDomainBlocksSuccess(domains, next) {
return {
type: DOMAIN_BLOCKS_FETCH_SUCCESS,
domains,
- next
+ next,
};
};
export function fetchDomainBlocksFail(error) {
return {
type: DOMAIN_BLOCKS_FETCH_FAIL,
- error
+ error,
};
};
diff --git a/app/javascript/mastodon/actions/favourites.js b/app/javascript/mastodon/actions/favourites.js
index a25c1ae1c..09ce51fce 100644
--- a/app/javascript/mastodon/actions/favourites.js
+++ b/app/javascript/mastodon/actions/favourites.js
@@ -1,4 +1,4 @@
-import api, { getLinks } from '../api'
+import api, { getLinks } from '../api';
export const FAVOURITED_STATUSES_FETCH_REQUEST = 'FAVOURITED_STATUSES_FETCH_REQUEST';
export const FAVOURITED_STATUSES_FETCH_SUCCESS = 'FAVOURITED_STATUSES_FETCH_SUCCESS';
@@ -23,7 +23,7 @@ export function fetchFavouritedStatuses() {
export function fetchFavouritedStatusesRequest() {
return {
- type: FAVOURITED_STATUSES_FETCH_REQUEST
+ type: FAVOURITED_STATUSES_FETCH_REQUEST,
};
};
@@ -31,14 +31,14 @@ export function fetchFavouritedStatusesSuccess(statuses, next) {
return {
type: FAVOURITED_STATUSES_FETCH_SUCCESS,
statuses,
- next
+ next,
};
};
export function fetchFavouritedStatusesFail(error) {
return {
type: FAVOURITED_STATUSES_FETCH_FAIL,
- error
+ error,
};
};
@@ -63,7 +63,7 @@ export function expandFavouritedStatuses() {
export function expandFavouritedStatusesRequest() {
return {
- type: FAVOURITED_STATUSES_EXPAND_REQUEST
+ type: FAVOURITED_STATUSES_EXPAND_REQUEST,
};
};
@@ -71,13 +71,13 @@ export function expandFavouritedStatusesSuccess(statuses, next) {
return {
type: FAVOURITED_STATUSES_EXPAND_SUCCESS,
statuses,
- next
+ next,
};
};
export function expandFavouritedStatusesFail(error) {
return {
type: FAVOURITED_STATUSES_EXPAND_FAIL,
- error
+ error,
};
};
diff --git a/app/javascript/mastodon/actions/interactions.js b/app/javascript/mastodon/actions/interactions.js
index 45f4508f6..36eec4934 100644
--- a/app/javascript/mastodon/actions/interactions.js
+++ b/app/javascript/mastodon/actions/interactions.js
@@ -1,4 +1,4 @@
-import api from '../api'
+import api from '../api';
export const REBLOG_REQUEST = 'REBLOG_REQUEST';
export const REBLOG_SUCCESS = 'REBLOG_SUCCESS';
@@ -53,7 +53,7 @@ export function unreblog(status) {
export function reblogRequest(status) {
return {
type: REBLOG_REQUEST,
- status: status
+ status: status,
};
};
@@ -61,7 +61,7 @@ export function reblogSuccess(status, response) {
return {
type: REBLOG_SUCCESS,
status: status,
- response: response
+ response: response,
};
};
@@ -69,14 +69,14 @@ export function reblogFail(status, error) {
return {
type: REBLOG_FAIL,
status: status,
- error: error
+ error: error,
};
};
export function unreblogRequest(status) {
return {
type: UNREBLOG_REQUEST,
- status: status
+ status: status,
};
};
@@ -84,7 +84,7 @@ export function unreblogSuccess(status, response) {
return {
type: UNREBLOG_SUCCESS,
status: status,
- response: response
+ response: response,
};
};
@@ -92,7 +92,7 @@ export function unreblogFail(status, error) {
return {
type: UNREBLOG_FAIL,
status: status,
- error: error
+ error: error,
};
};
@@ -123,7 +123,7 @@ export function unfavourite(status) {
export function favouriteRequest(status) {
return {
type: FAVOURITE_REQUEST,
- status: status
+ status: status,
};
};
@@ -131,7 +131,7 @@ export function favouriteSuccess(status, response) {
return {
type: FAVOURITE_SUCCESS,
status: status,
- response: response
+ response: response,
};
};
@@ -139,14 +139,14 @@ export function favouriteFail(status, error) {
return {
type: FAVOURITE_FAIL,
status: status,
- error: error
+ error: error,
};
};
export function unfavouriteRequest(status) {
return {
type: UNFAVOURITE_REQUEST,
- status: status
+ status: status,
};
};
@@ -154,7 +154,7 @@ export function unfavouriteSuccess(status, response) {
return {
type: UNFAVOURITE_SUCCESS,
status: status,
- response: response
+ response: response,
};
};
@@ -162,7 +162,7 @@ export function unfavouriteFail(status, error) {
return {
type: UNFAVOURITE_FAIL,
status: status,
- error: error
+ error: error,
};
};
@@ -181,7 +181,7 @@ export function fetchReblogs(id) {
export function fetchReblogsRequest(id) {
return {
type: REBLOGS_FETCH_REQUEST,
- id
+ id,
};
};
@@ -189,14 +189,14 @@ export function fetchReblogsSuccess(id, accounts) {
return {
type: REBLOGS_FETCH_SUCCESS,
id,
- accounts
+ accounts,
};
};
export function fetchReblogsFail(id, error) {
return {
type: REBLOGS_FETCH_FAIL,
- error
+ error,
};
};
@@ -215,7 +215,7 @@ export function fetchFavourites(id) {
export function fetchFavouritesRequest(id) {
return {
type: FAVOURITES_FETCH_REQUEST,
- id
+ id,
};
};
@@ -223,13 +223,13 @@ export function fetchFavouritesSuccess(id, accounts) {
return {
type: FAVOURITES_FETCH_SUCCESS,
id,
- accounts
+ accounts,
};
};
export function fetchFavouritesFail(id, error) {
return {
type: FAVOURITES_FETCH_FAIL,
- error
+ error,
};
};
diff --git a/app/javascript/mastodon/actions/modal.js b/app/javascript/mastodon/actions/modal.js
index 615cd6bfe..80e15c28e 100644
--- a/app/javascript/mastodon/actions/modal.js
+++ b/app/javascript/mastodon/actions/modal.js
@@ -5,12 +5,12 @@ export function openModal(type, props) {
return {
type: MODAL_OPEN,
modalType: type,
- modalProps: props
+ modalProps: props,
};
};
export function closeModal() {
return {
- type: MODAL_CLOSE
+ type: MODAL_CLOSE,
};
};
diff --git a/app/javascript/mastodon/actions/mutes.js b/app/javascript/mastodon/actions/mutes.js
index 824821594..febda7219 100644
--- a/app/javascript/mastodon/actions/mutes.js
+++ b/app/javascript/mastodon/actions/mutes.js
@@ -1,4 +1,4 @@
-import api, { getLinks } from '../api'
+import api, { getLinks } from '../api';
import { fetchRelationships } from './accounts';
export const MUTES_FETCH_REQUEST = 'MUTES_FETCH_REQUEST';
@@ -23,7 +23,7 @@ export function fetchMutes() {
export function fetchMutesRequest() {
return {
- type: MUTES_FETCH_REQUEST
+ type: MUTES_FETCH_REQUEST,
};
};
@@ -31,14 +31,14 @@ export function fetchMutesSuccess(accounts, next) {
return {
type: MUTES_FETCH_SUCCESS,
accounts,
- next
+ next,
};
};
export function fetchMutesFail(error) {
return {
type: MUTES_FETCH_FAIL,
- error
+ error,
};
};
@@ -62,7 +62,7 @@ export function expandMutes() {
export function expandMutesRequest() {
return {
- type: MUTES_EXPAND_REQUEST
+ type: MUTES_EXPAND_REQUEST,
};
};
@@ -70,13 +70,13 @@ export function expandMutesSuccess(accounts, next) {
return {
type: MUTES_EXPAND_SUCCESS,
accounts,
- next
+ next,
};
};
export function expandMutesFail(error) {
return {
type: MUTES_EXPAND_FAIL,
- error
+ error,
};
};
diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js
index da3d562d5..51b06ed32 100644
--- a/app/javascript/mastodon/actions/notifications.js
+++ b/app/javascript/mastodon/actions/notifications.js
@@ -1,4 +1,4 @@
-import api, { getLinks } from '../api'
+import api, { getLinks } from '../api';
import Immutable from 'immutable';
import IntlMessageFormat from 'intl-messageformat';
import { fetchRelationships } from './accounts';
@@ -33,7 +33,7 @@ const unescapeHTML = (html) => {
const wrapper = document.createElement('div');
wrapper.innerHTML = html;
return wrapper.textContent;
-}
+};
export function updateNotifications(notification, intlMessages, intlLocale) {
return (dispatch, getState) => {
@@ -45,7 +45,7 @@ export function updateNotifications(notification, intlMessages, intlLocale) {
notification,
account: notification.account,
status: notification.status,
- meta: playSound ? { sound: 'boop' } : undefined
+ meta: playSound ? { sound: 'boop' } : undefined,
});
fetchRelatedRelationships(dispatch, [notification]);
@@ -99,7 +99,7 @@ export function refreshNotifications() {
export function refreshNotificationsRequest(skipLoading) {
return {
type: NOTIFICATIONS_REFRESH_REQUEST,
- skipLoading
+ skipLoading,
};
};
@@ -110,7 +110,7 @@ export function refreshNotificationsSuccess(notifications, skipLoading, next) {
accounts: notifications.map(item => item.account),
statuses: notifications.map(item => item.status).filter(status => !!status),
skipLoading,
- next
+ next,
};
};
@@ -118,7 +118,7 @@ export function refreshNotificationsFail(error, skipLoading) {
return {
type: NOTIFICATIONS_REFRESH_FAIL,
error,
- skipLoading
+ skipLoading,
};
};
@@ -135,7 +135,7 @@ export function expandNotifications() {
const params = {
max_id: lastId,
- limit: 20
+ limit: 20,
};
params.exclude_types = excludeTypesFromSettings(getState());
@@ -153,7 +153,7 @@ export function expandNotifications() {
export function expandNotificationsRequest() {
return {
- type: NOTIFICATIONS_EXPAND_REQUEST
+ type: NOTIFICATIONS_EXPAND_REQUEST,
};
};
@@ -163,21 +163,21 @@ export function expandNotificationsSuccess(notifications, next) {
notifications,
accounts: notifications.map(item => item.account),
statuses: notifications.map(item => item.status).filter(status => !!status),
- next
+ next,
};
};
export function expandNotificationsFail(error) {
return {
type: NOTIFICATIONS_EXPAND_FAIL,
- error
+ error,
};
};
export function clearNotifications() {
return (dispatch, getState) => {
dispatch({
- type: NOTIFICATIONS_CLEAR
+ type: NOTIFICATIONS_CLEAR,
});
api(getState).post('/api/v1/notifications/clear');
@@ -187,6 +187,6 @@ export function clearNotifications() {
export function scrollTopNotifications(top) {
return {
type: NOTIFICATIONS_SCROLL_TOP,
- top
+ top,
};
};
diff --git a/app/javascript/mastodon/actions/reports.js b/app/javascript/mastodon/actions/reports.js
index 094670d62..9b632be74 100644
--- a/app/javascript/mastodon/actions/reports.js
+++ b/app/javascript/mastodon/actions/reports.js
@@ -14,13 +14,13 @@ export function initReport(account, status) {
return {
type: REPORT_INIT,
account,
- status
+ status,
};
};
export function cancelReport() {
return {
- type: REPORT_CANCEL
+ type: REPORT_CANCEL,
};
};
@@ -39,34 +39,34 @@ export function submitReport() {
api(getState).post('/api/v1/reports', {
account_id: getState().getIn(['reports', 'new', 'account_id']),
status_ids: getState().getIn(['reports', 'new', 'status_ids']),
- comment: getState().getIn(['reports', 'new', 'comment'])
+ comment: getState().getIn(['reports', 'new', 'comment']),
}).then(response => dispatch(submitReportSuccess(response.data))).catch(error => dispatch(submitReportFail(error)));
};
};
export function submitReportRequest() {
return {
- type: REPORT_SUBMIT_REQUEST
+ type: REPORT_SUBMIT_REQUEST,
};
};
export function submitReportSuccess(report) {
return {
type: REPORT_SUBMIT_SUCCESS,
- report
+ report,
};
};
export function submitReportFail(error) {
return {
type: REPORT_SUBMIT_FAIL,
- error
+ error,
};
};
export function changeReportComment(comment) {
return {
type: REPORT_COMMENT_CHANGE,
- comment
+ comment,
};
};
diff --git a/app/javascript/mastodon/actions/search.js b/app/javascript/mastodon/actions/search.js
index df3ae0db1..78c6109f7 100644
--- a/app/javascript/mastodon/actions/search.js
+++ b/app/javascript/mastodon/actions/search.js
@@ -1,4 +1,4 @@
-import api from '../api'
+import api from '../api';
export const SEARCH_CHANGE = 'SEARCH_CHANGE';
export const SEARCH_CLEAR = 'SEARCH_CLEAR';
@@ -11,13 +11,13 @@ export const SEARCH_FETCH_FAIL = 'SEARCH_FETCH_FAIL';
export function changeSearch(value) {
return {
type: SEARCH_CHANGE,
- value
+ value,
};
};
export function clearSearch() {
return {
- type: SEARCH_CLEAR
+ type: SEARCH_CLEAR,
};
};
@@ -34,8 +34,8 @@ export function submitSearch() {
api(getState).get('/api/v1/search', {
params: {
q: value,
- resolve: true
- }
+ resolve: true,
+ },
}).then(response => {
dispatch(fetchSearchSuccess(response.data));
}).catch(error => {
@@ -46,7 +46,7 @@ export function submitSearch() {
export function fetchSearchRequest() {
return {
- type: SEARCH_FETCH_REQUEST
+ type: SEARCH_FETCH_REQUEST,
};
};
@@ -55,19 +55,19 @@ export function fetchSearchSuccess(results) {
type: SEARCH_FETCH_SUCCESS,
results,
accounts: results.accounts,
- statuses: results.statuses
+ statuses: results.statuses,
};
};
export function fetchSearchFail(error) {
return {
type: SEARCH_FETCH_FAIL,
- error
+ error,
};
};
export function showSearch() {
return {
- type: SEARCH_SHOW
+ type: SEARCH_SHOW,
};
};
diff --git a/app/javascript/mastodon/actions/settings.js b/app/javascript/mastodon/actions/settings.js
index c754b30ca..2d260b84c 100644
--- a/app/javascript/mastodon/actions/settings.js
+++ b/app/javascript/mastodon/actions/settings.js
@@ -6,14 +6,14 @@ export function changeSetting(key, value) {
return {
type: SETTING_CHANGE,
key,
- value
+ value,
};
};
export function saveSettings() {
return (_, getState) => {
axios.put('/api/web/settings', {
- data: getState().get('settings').toJS()
+ data: getState().get('settings').toJS(),
});
};
};
diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js
index 5eb9bf817..6956447ba 100644
--- a/app/javascript/mastodon/actions/statuses.js
+++ b/app/javascript/mastodon/actions/statuses.js
@@ -27,7 +27,7 @@ export function fetchStatusRequest(id, skipLoading) {
return {
type: STATUS_FETCH_REQUEST,
id,
- skipLoading
+ skipLoading,
};
};
@@ -56,7 +56,7 @@ export function fetchStatusSuccess(status, skipLoading) {
return {
type: STATUS_FETCH_SUCCESS,
status,
- skipLoading
+ skipLoading,
};
};
@@ -66,7 +66,7 @@ export function fetchStatusFail(id, error, skipLoading) {
id,
error,
skipLoading,
- skipAlert: true
+ skipAlert: true,
};
};
@@ -86,14 +86,14 @@ export function deleteStatus(id) {
export function deleteStatusRequest(id) {
return {
type: STATUS_DELETE_REQUEST,
- id: id
+ id: id,
};
};
export function deleteStatusSuccess(id) {
return {
type: STATUS_DELETE_SUCCESS,
- id: id
+ id: id,
};
};
@@ -101,7 +101,7 @@ export function deleteStatusFail(id, error) {
return {
type: STATUS_DELETE_FAIL,
id: id,
- error: error
+ error: error,
};
};
@@ -125,7 +125,7 @@ export function fetchContext(id) {
export function fetchContextRequest(id) {
return {
type: CONTEXT_FETCH_REQUEST,
- id
+ id,
};
};
@@ -135,7 +135,7 @@ export function fetchContextSuccess(id, ancestors, descendants) {
id,
ancestors,
descendants,
- statuses: ancestors.concat(descendants)
+ statuses: ancestors.concat(descendants),
};
};
@@ -144,7 +144,7 @@ export function fetchContextFail(id, error) {
type: CONTEXT_FETCH_FAIL,
id,
error,
- skipAlert: true
+ skipAlert: true,
};
};
@@ -163,14 +163,14 @@ export function muteStatus(id) {
export function muteStatusRequest(id) {
return {
type: STATUS_MUTE_REQUEST,
- id
+ id,
};
};
export function muteStatusSuccess(id) {
return {
type: STATUS_MUTE_SUCCESS,
- id
+ id,
};
};
@@ -178,7 +178,7 @@ export function muteStatusFail(id, error) {
return {
type: STATUS_MUTE_FAIL,
id,
- error
+ error,
};
};
@@ -197,14 +197,14 @@ export function unmuteStatus(id) {
export function unmuteStatusRequest(id) {
return {
type: STATUS_UNMUTE_REQUEST,
- id
+ id,
};
};
export function unmuteStatusSuccess(id) {
return {
type: STATUS_UNMUTE_SUCCESS,
- id
+ id,
};
};
@@ -212,6 +212,6 @@ export function unmuteStatusFail(id, error) {
return {
type: STATUS_UNMUTE_FAIL,
id,
- error
+ error,
};
};
diff --git a/app/javascript/mastodon/actions/store.js b/app/javascript/mastodon/actions/store.js
index 3bba99549..601cea001 100644
--- a/app/javascript/mastodon/actions/store.js
+++ b/app/javascript/mastodon/actions/store.js
@@ -12,6 +12,6 @@ export function hydrateStore(rawState) {
return {
type: STORE_HYDRATE,
- state
+ state,
};
};
diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js
index 5b37509a9..98e441cd1 100644
--- a/app/javascript/mastodon/actions/timelines.js
+++ b/app/javascript/mastodon/actions/timelines.js
@@ -1,4 +1,4 @@
-import api, { getLinks } from '../api'
+import api, { getLinks } from '../api';
import Immutable from 'immutable';
export const TIMELINE_UPDATE = 'TIMELINE_UPDATE';
@@ -23,7 +23,7 @@ export function refreshTimelineSuccess(timeline, statuses, skipLoading, next) {
timeline,
statuses,
skipLoading,
- next
+ next,
};
};
@@ -35,7 +35,7 @@ export function updateTimeline(timeline, status) {
type: TIMELINE_UPDATE,
timeline,
status,
- references
+ references,
});
};
};
@@ -51,7 +51,7 @@ export function deleteFromTimelines(id) {
id,
accountId,
references,
- reblogOf
+ reblogOf,
});
};
};
@@ -61,7 +61,7 @@ export function refreshTimelineRequest(timeline, id, skipLoading) {
type: TIMELINE_REFRESH_REQUEST,
timeline,
id,
- skipLoading
+ skipLoading,
};
};
@@ -106,7 +106,7 @@ export function refreshTimelineFail(timeline, error, skipLoading) {
type: TIMELINE_REFRESH_FAIL,
timeline,
error,
- skipLoading
+ skipLoading,
};
};
@@ -130,8 +130,8 @@ export function expandTimeline(timeline) {
params: {
...params,
max_id: lastId,
- limit: 10
- }
+ limit: 10,
+ },
}).then(response => {
const next = getLinks(response).refs.find(link => link.rel === 'next');
dispatch(expandTimelineSuccess(timeline, response.data, next ? next.uri : null));
@@ -144,7 +144,7 @@ export function expandTimeline(timeline) {
export function expandTimelineRequest(timeline) {
return {
type: TIMELINE_EXPAND_REQUEST,
- timeline
+ timeline,
};
};
@@ -153,7 +153,7 @@ export function expandTimelineSuccess(timeline, statuses, next) {
type: TIMELINE_EXPAND_SUCCESS,
timeline,
statuses,
- next
+ next,
};
};
@@ -161,7 +161,7 @@ export function expandTimelineFail(timeline, error) {
return {
type: TIMELINE_EXPAND_FAIL,
timeline,
- error
+ error,
};
};
@@ -169,20 +169,20 @@ export function scrollTopTimeline(timeline, top) {
return {
type: TIMELINE_SCROLL_TOP,
timeline,
- top
+ top,
};
};
export function connectTimeline(timeline) {
return {
type: TIMELINE_CONNECT,
- timeline
+ timeline,
};
};
export function disconnectTimeline(timeline) {
return {
type: TIMELINE_DISCONNECT,
- timeline
+ timeline,
};
};
diff --git a/app/javascript/mastodon/api.js b/app/javascript/mastodon/api.js
index 185729ce0..ecc703c0a 100644
--- a/app/javascript/mastodon/api.js
+++ b/app/javascript/mastodon/api.js
@@ -13,7 +13,7 @@ export const getLinks = response => {
export default getState => axios.create({
headers: {
- 'Authorization': `Bearer ${getState().getIn(['meta', 'access_token'], '')}`
+ 'Authorization': `Bearer ${getState().getIn(['meta', 'access_token'], '')}`,
},
transformResponse: [function (data) {
@@ -22,5 +22,5 @@ export default getState => axios.create({
} catch(Exception) {
return data;
}
- }]
+ }],
});
diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js
index 5850a8791..baac734aa 100644
--- a/app/javascript/mastodon/components/account.js
+++ b/app/javascript/mastodon/components/account.js
@@ -13,7 +13,7 @@ const messages = defineMessages({
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' },
unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },
- unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }
+ unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' },
});
class Account extends ImmutablePureComponent {
@@ -24,7 +24,7 @@ class Account extends ImmutablePureComponent {
onFollow: PropTypes.func.isRequired,
onBlock: PropTypes.func.isRequired,
onMute: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
constructor (props, context) {
@@ -62,7 +62,7 @@ class Account extends ImmutablePureComponent {
const muting = account.getIn(['relationship', 'muting']);
if (requested) {
- buttons =
+ buttons = ;
} else if (blocking) {
buttons = ;
} else if (muting) {
diff --git a/app/javascript/mastodon/components/attachment_list.js b/app/javascript/mastodon/components/attachment_list.js
index f6449e2c0..54d3643bd 100644
--- a/app/javascript/mastodon/components/attachment_list.js
+++ b/app/javascript/mastodon/components/attachment_list.js
@@ -6,7 +6,7 @@ const filename = url => url.split('/').pop().split('#')[0].split('?')[0];
class AttachmentList extends React.PureComponent {
static propTypes = {
- media: ImmutablePropTypes.list.isRequired
+ media: ImmutablePropTypes.list.isRequired,
};
render () {
diff --git a/app/javascript/mastodon/components/autosuggest_textarea.js b/app/javascript/mastodon/components/autosuggest_textarea.js
index 24fa2b920..0a9af5126 100644
--- a/app/javascript/mastodon/components/autosuggest_textarea.js
+++ b/app/javascript/mastodon/components/autosuggest_textarea.js
@@ -44,11 +44,11 @@ class AutosuggestTextarea extends ImmutablePureComponent {
onKeyUp: PropTypes.func,
onKeyDown: PropTypes.func,
onPaste: PropTypes.func.isRequired,
- autoFocus: PropTypes.bool
+ autoFocus: PropTypes.bool,
};
static defaultProps = {
- autoFocus: true
+ autoFocus: true,
};
constructor (props, context) {
@@ -57,7 +57,7 @@ class AutosuggestTextarea extends ImmutablePureComponent {
suggestionsHidden: false,
selectedSuggestion: 0,
lastToken: null,
- tokenStart: 0
+ tokenStart: 0,
};
this.onChange = this.onChange.bind(this);
this.onKeyDown = this.onKeyDown.bind(this);
@@ -164,7 +164,7 @@ class AutosuggestTextarea extends ImmutablePureComponent {
onPaste (e) {
if (e.clipboardData && e.clipboardData.files.length === 1) {
- this.props.onPaste(e.clipboardData.files)
+ this.props.onPaste(e.clipboardData.files);
e.preventDefault();
}
}
diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.js
index 90c84f32a..d8e8e7dda 100644
--- a/app/javascript/mastodon/components/avatar.js
+++ b/app/javascript/mastodon/components/avatar.js
@@ -9,17 +9,17 @@ class Avatar extends React.PureComponent {
size: PropTypes.number.isRequired,
style: PropTypes.object,
animate: PropTypes.bool,
- inline: PropTypes.bool
+ inline: PropTypes.bool,
};
static defaultProps = {
animate: false,
size: 20,
- inline: false
+ inline: false,
};
state = {
- hovering: true
+ hovering: true,
};
handleMouseEnter = () => {
@@ -46,7 +46,7 @@ class Avatar extends React.PureComponent {
...this.props.style,
width: `${size}px`,
height: `${size}px`,
- backgroundSize: `${size}px ${size}px`
+ backgroundSize: `${size}px ${size}px`,
};
if (hovering || animate) {
diff --git a/app/javascript/mastodon/components/avatar_overlay.js b/app/javascript/mastodon/components/avatar_overlay.js
index b76750513..a9643499d 100644
--- a/app/javascript/mastodon/components/avatar_overlay.js
+++ b/app/javascript/mastodon/components/avatar_overlay.js
@@ -2,20 +2,21 @@ import React from 'react';
import PropTypes from 'prop-types';
class AvatarOverlay extends React.PureComponent {
+
static propTypes = {
staticSrc: PropTypes.string.isRequired,
- overlaySrc: PropTypes.string.isRequired
+ overlaySrc: PropTypes.string.isRequired,
};
render() {
const {staticSrc, overlaySrc} = this.props;
const baseStyle = {
- backgroundImage: `url(${staticSrc})`
+ backgroundImage: `url(${staticSrc})`,
};
const overlayStyle = {
- backgroundImage: `url(${overlaySrc})`
+ backgroundImage: `url(${overlaySrc})`,
};
return (
diff --git a/app/javascript/mastodon/components/button.js b/app/javascript/mastodon/components/button.js
index 7612bd233..cc6482cde 100644
--- a/app/javascript/mastodon/components/button.js
+++ b/app/javascript/mastodon/components/button.js
@@ -11,11 +11,11 @@ class Button extends React.PureComponent {
secondary: PropTypes.bool,
size: PropTypes.number,
style: PropTypes.object,
- children: PropTypes.node
+ children: PropTypes.node,
};
static defaultProps = {
- size: 36
+ size: 36,
};
handleClick = (e) => {
@@ -29,7 +29,7 @@ class Button extends React.PureComponent {
padding: `0 ${this.props.size / 2.25}px`,
height: `${this.props.size}px`,
lineHeight: `${this.props.size}px`,
- ...this.props.style
+ ...this.props.style,
};
return (
diff --git a/app/javascript/mastodon/components/collapsable.js b/app/javascript/mastodon/components/collapsable.js
index ac42bc6c7..ad1453589 100644
--- a/app/javascript/mastodon/components/collapsable.js
+++ b/app/javascript/mastodon/components/collapsable.js
@@ -16,7 +16,7 @@ const Collapsable = ({ fullHeight, isVisible, children }) => (
Collapsable.propTypes = {
fullHeight: PropTypes.number.isRequired,
isVisible: PropTypes.bool.isRequired,
- children: PropTypes.node.isRequired
+ children: PropTypes.node.isRequired,
};
export default Collapsable;
diff --git a/app/javascript/mastodon/components/column_back_button.js b/app/javascript/mastodon/components/column_back_button.js
index a4971f5f8..9d2de40f5 100644
--- a/app/javascript/mastodon/components/column_back_button.js
+++ b/app/javascript/mastodon/components/column_back_button.js
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
class ColumnBackButton extends React.PureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
handleClick = () => {
diff --git a/app/javascript/mastodon/components/column_back_button_slim.js b/app/javascript/mastodon/components/column_back_button_slim.js
index 6966a138d..6f6bbc0b8 100644
--- a/app/javascript/mastodon/components/column_back_button_slim.js
+++ b/app/javascript/mastodon/components/column_back_button_slim.js
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
class ColumnBackButtonSlim extends React.PureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
handleClick = () => {
@@ -22,6 +22,7 @@ class ColumnBackButtonSlim extends React.PureComponent {
);
}
+
}
export default ColumnBackButtonSlim;
diff --git a/app/javascript/mastodon/components/column_collapsable.js b/app/javascript/mastodon/components/column_collapsable.js
index c75f8ff36..fc4ed309c 100644
--- a/app/javascript/mastodon/components/column_collapsable.js
+++ b/app/javascript/mastodon/components/column_collapsable.js
@@ -8,11 +8,11 @@ class ColumnCollapsable extends React.PureComponent {
title: PropTypes.string,
fullHeight: PropTypes.number.isRequired,
children: PropTypes.node,
- onCollapse: PropTypes.func
+ onCollapse: PropTypes.func,
};
state = {
- collapsed: true
+ collapsed: true,
};
handleToggleCollapsed = () => {
@@ -41,6 +41,7 @@ class ColumnCollapsable extends React.PureComponent {
);
}
+
}
export default ColumnCollapsable;
diff --git a/app/javascript/mastodon/components/display_name.js b/app/javascript/mastodon/components/display_name.js
index e122debf4..6fbc1dfc0 100644
--- a/app/javascript/mastodon/components/display_name.js
+++ b/app/javascript/mastodon/components/display_name.js
@@ -6,7 +6,7 @@ import emojify from '../emoji';
class DisplayName extends React.PureComponent {
static propTypes = {
- account: ImmutablePropTypes.map.isRequired
+ account: ImmutablePropTypes.map.isRequired,
};
render () {
diff --git a/app/javascript/mastodon/components/dropdown_menu.js b/app/javascript/mastodon/components/dropdown_menu.js
index 8dee211fa..ea8606626 100644
--- a/app/javascript/mastodon/components/dropdown_menu.js
+++ b/app/javascript/mastodon/components/dropdown_menu.js
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
class DropdownMenu extends React.PureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
@@ -13,11 +13,11 @@ class DropdownMenu extends React.PureComponent {
items: PropTypes.array.isRequired,
size: PropTypes.number.isRequired,
direction: PropTypes.string,
- ariaLabel: PropTypes.string
+ ariaLabel: PropTypes.string,
};
static defaultProps = {
- ariaLabel: "Menu"
+ ariaLabel: "Menu",
};
state = {
diff --git a/app/javascript/mastodon/components/extended_video_player.js b/app/javascript/mastodon/components/extended_video_player.js
index a07d27186..4d92bd779 100644
--- a/app/javascript/mastodon/components/extended_video_player.js
+++ b/app/javascript/mastodon/components/extended_video_player.js
@@ -7,7 +7,7 @@ class ExtendedVideoPlayer extends React.PureComponent {
src: PropTypes.string.isRequired,
time: PropTypes.number,
controls: PropTypes.bool.isRequired,
- muted: PropTypes.bool.isRequired
+ muted: PropTypes.bool.isRequired,
};
handleLoadedData = () => {
diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js
index 3ae22faef..c8df589b6 100644
--- a/app/javascript/mastodon/components/icon_button.js
+++ b/app/javascript/mastodon/components/icon_button.js
@@ -17,7 +17,7 @@ class IconButton extends React.PureComponent {
disabled: PropTypes.bool,
inverted: PropTypes.bool,
animate: PropTypes.bool,
- overlay: PropTypes.bool
+ overlay: PropTypes.bool,
};
static defaultProps = {
@@ -25,7 +25,7 @@ class IconButton extends React.PureComponent {
active: false,
disabled: false,
animate: false,
- overlay: false
+ overlay: false,
};
handleClick = (e) => {
@@ -43,7 +43,7 @@ class IconButton extends React.PureComponent {
height: `${this.props.size * 1.28571429}px`,
lineHeight: `${this.props.size}px`,
...this.props.style,
- ...(this.props.active ? this.props.activeStyle : {})
+ ...(this.props.active ? this.props.activeStyle : {}),
};
const classes = ['icon-button'];
@@ -65,7 +65,7 @@ class IconButton extends React.PureComponent {
}
if (this.props.className) {
- classes.push(this.props.className)
+ classes.push(this.props.className);
}
return (
diff --git a/app/javascript/mastodon/components/load_more.js b/app/javascript/mastodon/components/load_more.js
index 36dae79af..212011386 100644
--- a/app/javascript/mastodon/components/load_more.js
+++ b/app/javascript/mastodon/components/load_more.js
@@ -9,7 +9,7 @@ const LoadMore = ({ onClick }) => (
);
LoadMore.propTypes = {
- onClick: PropTypes.func
+ onClick: PropTypes.func,
};
export default LoadMore;
diff --git a/app/javascript/mastodon/components/media_gallery.js b/app/javascript/mastodon/components/media_gallery.js
index 10389751e..baa7f9afa 100644
--- a/app/javascript/mastodon/components/media_gallery.js
+++ b/app/javascript/mastodon/components/media_gallery.js
@@ -6,7 +6,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import { isIOS } from '../is_mobile';
const messages = defineMessages({
- toggle_visible: { id: 'media_gallery.toggle_visible', defaultMessage: 'Toggle visibility' }
+ toggle_visible: { id: 'media_gallery.toggle_visible', defaultMessage: 'Toggle visibility' },
});
class Item extends React.PureComponent {
@@ -16,7 +16,7 @@ class Item extends React.PureComponent {
index: PropTypes.number.isRequired,
size: PropTypes.number.isRequired,
onClick: PropTypes.func.isRequired,
- autoPlayGif: PropTypes.bool.isRequired
+ autoPlayGif: PropTypes.bool.isRequired,
};
handleClick = (e) => {
@@ -131,11 +131,11 @@ class MediaGallery extends React.PureComponent {
height: PropTypes.number.isRequired,
onOpenMedia: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
- autoPlayGif: PropTypes.bool.isRequired
+ autoPlayGif: PropTypes.bool.isRequired,
};
state = {
- visible: !this.props.sensitive
+ visible: !this.props.sensitive,
};
handleOpen = (e) => {
diff --git a/app/javascript/mastodon/components/permalink.js b/app/javascript/mastodon/components/permalink.js
index 08f187728..b45969d85 100644
--- a/app/javascript/mastodon/components/permalink.js
+++ b/app/javascript/mastodon/components/permalink.js
@@ -4,14 +4,14 @@ import PropTypes from 'prop-types';
class Permalink extends React.PureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
className: PropTypes.string,
href: PropTypes.string.isRequired,
to: PropTypes.string.isRequired,
- children: PropTypes.node
+ children: PropTypes.node,
};
handleClick = (e) => {
diff --git a/app/javascript/mastodon/components/relative_timestamp.js b/app/javascript/mastodon/components/relative_timestamp.js
index 9c7a8121e..13c36c0e4 100644
--- a/app/javascript/mastodon/components/relative_timestamp.js
+++ b/app/javascript/mastodon/components/relative_timestamp.js
@@ -14,7 +14,7 @@ const RelativeTimestamp = ({ intl, timestamp }) => {
RelativeTimestamp.propTypes = {
intl: PropTypes.object.isRequired,
- timestamp: PropTypes.string.isRequired
+ timestamp: PropTypes.string.isRequired,
};
export default injectIntl(RelativeTimestamp);
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js
index 9ce43833f..ec83a5331 100644
--- a/app/javascript/mastodon/components/status.js
+++ b/app/javascript/mastodon/components/status.js
@@ -18,7 +18,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
class Status extends ImmutablePureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
@@ -35,7 +35,7 @@ class Status extends ImmutablePureComponent {
me: PropTypes.number,
boostModal: PropTypes.bool,
autoPlayGif: PropTypes.bool,
- muted: PropTypes.bool
+ muted: PropTypes.bool,
};
handleClick = () => {
diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js
index 4d077fb98..1f9fa4c67 100644
--- a/app/javascript/mastodon/components/status_action_bar.js
+++ b/app/javascript/mastodon/components/status_action_bar.js
@@ -24,7 +24,7 @@ const messages = defineMessages({
class StatusActionBar extends React.PureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
@@ -40,7 +40,7 @@ class StatusActionBar extends React.PureComponent {
onMuteConversation: PropTypes.func,
me: PropTypes.number.isRequired,
withDismiss: PropTypes.bool,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
handleReplyClick = () => {
diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js
index 4d002607d..1a474802a 100644
--- a/app/javascript/mastodon/components/status_content.js
+++ b/app/javascript/mastodon/components/status_content.js
@@ -10,16 +10,16 @@ import Permalink from './permalink';
class StatusContent extends React.PureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
status: ImmutablePropTypes.map.isRequired,
- onClick: PropTypes.func
+ onClick: PropTypes.func,
};
state = {
- hidden: true
+ hidden: true,
};
componentDidMount () {
@@ -107,7 +107,7 @@ class StatusContent extends React.PureComponent {
@{item.get('username')}
- )).reduce((aggregate, item) => [...aggregate, item, ' '], [])
+ )).reduce((aggregate, item) => [...aggregate, item, ' '], []);
const toggleText = hidden ? : ;
diff --git a/app/javascript/mastodon/components/status_list.js b/app/javascript/mastodon/components/status_list.js
index 9e6c8fd18..b669a5564 100644
--- a/app/javascript/mastodon/components/status_list.js
+++ b/app/javascript/mastodon/components/status_list.js
@@ -20,11 +20,11 @@ class StatusList extends ImmutablePureComponent {
isUnread: PropTypes.bool,
hasMore: PropTypes.bool,
prepend: PropTypes.node,
- emptyMessage: PropTypes.node
+ emptyMessage: PropTypes.node,
};
static defaultProps = {
- trackScroll: true
+ trackScroll: true,
};
handleScroll = (e) => {
diff --git a/app/javascript/mastodon/components/video_player.js b/app/javascript/mastodon/components/video_player.js
index cd4b69659..29da769e0 100644
--- a/app/javascript/mastodon/components/video_player.js
+++ b/app/javascript/mastodon/components/video_player.js
@@ -20,12 +20,12 @@ class VideoPlayer extends React.PureComponent {
sensitive: PropTypes.bool,
intl: PropTypes.object.isRequired,
autoplay: PropTypes.bool,
- onOpenVideo: PropTypes.func.isRequired
+ onOpenVideo: PropTypes.func.isRequired,
};
static defaultProps = {
width: 239,
- height: 110
+ height: 110,
};
state = {
@@ -33,7 +33,7 @@ class VideoPlayer extends React.PureComponent {
preview: true,
muted: true,
hasAudio: true,
- videoError: false
+ videoError: false,
};
handleClick = () => {
@@ -59,7 +59,7 @@ class VideoPlayer extends React.PureComponent {
handleVisibility = () => {
this.setState({
visible: !this.state.visible,
- preview: true
+ preview: true,
});
}
diff --git a/app/javascript/mastodon/containers/account_container.js b/app/javascript/mastodon/containers/account_container.js
index 3c30be715..1426bcaa4 100644
--- a/app/javascript/mastodon/containers/account_container.js
+++ b/app/javascript/mastodon/containers/account_container.js
@@ -15,7 +15,7 @@ const makeMapStateToProps = () => {
const mapStateToProps = (state, props) => ({
account: getAccount(state, props.id),
- me: state.getIn(['meta', 'me'])
+ me: state.getIn(['meta', 'me']),
});
return mapStateToProps;
@@ -44,7 +44,7 @@ const mapDispatchToProps = (dispatch) => ({
} else {
dispatch(muteAccount(account.get('id')));
}
- }
+ },
});
export default connect(makeMapStateToProps, mapDispatchToProps)(Account);
diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.js
index 165a6f045..ac44063a2 100644
--- a/app/javascript/mastodon/containers/mastodon.js
+++ b/app/javascript/mastodon/containers/mastodon.js
@@ -8,7 +8,7 @@ import {
deleteFromTimelines,
refreshTimeline,
connectTimeline,
- disconnectTimeline
+ disconnectTimeline,
} from '../actions/timelines';
import { showOnboardingOnce } from '../actions/onboarding';
import { updateNotifications, refreshNotifications } from '../actions/notifications';
@@ -75,7 +75,7 @@ const initialState = JSON.parse(document.getElementById("initial-state").textCon
store.dispatch(hydrateStore(initialState));
const browserHistory = useRouterHistory(createBrowserHistory)({
- basename: '/web'
+ basename: '/web',
});
addLocaleData([
@@ -155,7 +155,7 @@ class Mastodon extends React.PureComponent {
store.dispatch(connectTimeline('home'));
store.dispatch(refreshTimeline('home'));
store.dispatch(refreshNotifications());
- }
+ },
});
@@ -223,7 +223,7 @@ class Mastodon extends React.PureComponent {
}
Mastodon.propTypes = {
- locale: PropTypes.string.isRequired
+ locale: PropTypes.string.isRequired,
};
export default Mastodon;
diff --git a/app/javascript/mastodon/containers/status_container.js b/app/javascript/mastodon/containers/status_container.js
index 8b7d6dc53..141f287af 100644
--- a/app/javascript/mastodon/containers/status_container.js
+++ b/app/javascript/mastodon/containers/status_container.js
@@ -4,23 +4,23 @@ import Status from '../components/status';
import { makeGetStatus } from '../selectors';
import {
replyCompose,
- mentionCompose
+ mentionCompose,
} from '../actions/compose';
import {
reblog,
favourite,
unreblog,
- unfavourite
+ unfavourite,
} from '../actions/interactions';
import {
blockAccount,
- muteAccount
+ muteAccount,
} from '../actions/accounts';
import { muteStatus, unmuteStatus, deleteStatus } from '../actions/statuses';
import { initReport } from '../actions/reports';
import { openModal } from '../actions/modal';
-import { createSelector } from 'reselect'
-import { isMobile } from '../is_mobile'
+import { createSelector } from 'reselect';
+import { isMobile } from '../is_mobile';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
const messages = defineMessages({
@@ -37,7 +37,7 @@ const makeMapStateToProps = () => {
status: getStatus(state, props.id),
me: state.getIn(['meta', 'me']),
boostModal: state.getIn(['meta', 'boost_modal']),
- autoPlayGif: state.getIn(['meta', 'auto_play_gif'])
+ autoPlayGif: state.getIn(['meta', 'auto_play_gif']),
});
return mapStateToProps;
@@ -77,7 +77,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
dispatch(openModal('CONFIRM', {
message: intl.formatMessage(messages.deleteMessage),
confirm: intl.formatMessage(messages.deleteConfirm),
- onConfirm: () => dispatch(deleteStatus(status.get('id')))
+ onConfirm: () => dispatch(deleteStatus(status.get('id'))),
}));
},
@@ -97,7 +97,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
dispatch(openModal('CONFIRM', {
message: @{account.get('acct')} }} />,
confirm: intl.formatMessage(messages.blockConfirm),
- onConfirm: () => dispatch(blockAccount(account.get('id')))
+ onConfirm: () => dispatch(blockAccount(account.get('id'))),
}));
},
@@ -109,7 +109,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
dispatch(openModal('CONFIRM', {
message: @{account.get('acct')} }} />,
confirm: intl.formatMessage(messages.muteConfirm),
- onConfirm: () => dispatch(muteAccount(account.get('id')))
+ onConfirm: () => dispatch(muteAccount(account.get('id'))),
}));
},
diff --git a/app/javascript/mastodon/features/account/components/action_bar.js b/app/javascript/mastodon/features/account/components/action_bar.js
index 3a47a1686..56ebefd77 100644
--- a/app/javascript/mastodon/features/account/components/action_bar.js
+++ b/app/javascript/mastodon/features/account/components/action_bar.js
@@ -33,7 +33,7 @@ class ActionBar extends React.PureComponent {
onMute: PropTypes.func.isRequired,
onBlockDomain: PropTypes.func.isRequired,
onUnblockDomain: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
render () {
diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js
index 8a21c6039..e71d72112 100644
--- a/app/javascript/mastodon/features/account/components/header.js
+++ b/app/javascript/mastodon/features/account/components/header.js
@@ -13,12 +13,12 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
follow: { id: 'account.follow', defaultMessage: 'Follow' },
- requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' }
+ requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' },
});
const makeMapStateToProps = () => {
const mapStateToProps = (state, props) => ({
- autoPlayGif: state.getIn(['meta', 'auto_play_gif'])
+ autoPlayGif: state.getIn(['meta', 'auto_play_gif']),
});
return mapStateToProps;
@@ -28,11 +28,11 @@ class Avatar extends ImmutablePureComponent {
static propTypes = {
account: ImmutablePropTypes.map.isRequired,
- autoPlayGif: PropTypes.bool.isRequired
+ autoPlayGif: PropTypes.bool.isRequired,
};
state = {
- isHovered: false
+ isHovered: false,
};
handleMouseOver = () => {
@@ -77,7 +77,7 @@ class Header extends ImmutablePureComponent {
me: PropTypes.number.isRequired,
onFollow: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
- autoPlayGif: PropTypes.bool.isRequired
+ autoPlayGif: PropTypes.bool.isRequired,
};
render () {
@@ -97,7 +97,7 @@ class Header extends ImmutablePureComponent {
}
if (me !== account.get('id') && account.getIn(['relationship', 'followed_by'])) {
- info =
+ info = ;
}
if (me !== account.get('id')) {
diff --git a/app/javascript/mastodon/features/account_gallery/components/media_item.js b/app/javascript/mastodon/features/account_gallery/components/media_item.js
index 7d8dddf87..8f2949ca5 100644
--- a/app/javascript/mastodon/features/account_gallery/components/media_item.js
+++ b/app/javascript/mastodon/features/account_gallery/components/media_item.js
@@ -6,7 +6,7 @@ import Permalink from '../../../components/permalink';
class MediaItem extends ImmutablePureComponent {
static propTypes = {
- media: ImmutablePropTypes.map.isRequired
+ media: ImmutablePropTypes.map.isRequired,
};
render () {
@@ -34,6 +34,7 @@ class MediaItem extends ImmutablePureComponent {
);
}
+
}
export default MediaItem;
diff --git a/app/javascript/mastodon/features/account_gallery/index.js b/app/javascript/mastodon/features/account_gallery/index.js
index 28b19a269..6ddfcb0a0 100644
--- a/app/javascript/mastodon/features/account_gallery/index.js
+++ b/app/javascript/mastodon/features/account_gallery/index.js
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
import {
fetchAccount,
fetchAccountMediaTimeline,
- expandAccountMediaTimeline
+ expandAccountMediaTimeline,
} from '../../actions/accounts';
import LoadingIndicator from '../../components/loading_indicator';
import Column from '../ui/components/column';
diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js
index f1a0e8d77..d2fe86476 100644
--- a/app/javascript/mastodon/features/account_timeline/components/header.js
+++ b/app/javascript/mastodon/features/account_timeline/components/header.js
@@ -21,7 +21,7 @@ class Header extends ImmutablePureComponent {
};
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
handleFollow = () => {
diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.js
index 0964efdcf..19dd64699 100644
--- a/app/javascript/mastodon/features/account_timeline/containers/header_container.js
+++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.js
@@ -8,7 +8,7 @@ import {
blockAccount,
unblockAccount,
muteAccount,
- unmuteAccount
+ unmuteAccount,
} from '../../../actions/accounts';
import { mentionCompose } from '../../../actions/compose';
import { initReport } from '../../../actions/reports';
@@ -27,7 +27,7 @@ const makeMapStateToProps = () => {
const mapStateToProps = (state, { accountId }) => ({
account: getAccount(state, Number(accountId)),
- me: state.getIn(['meta', 'me'])
+ me: state.getIn(['meta', 'me']),
});
return mapStateToProps;
@@ -49,7 +49,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
dispatch(openModal('CONFIRM', {
message: @{account.get('acct')} }} />,
confirm: intl.formatMessage(messages.blockConfirm),
- onConfirm: () => dispatch(blockAccount(account.get('id')))
+ onConfirm: () => dispatch(blockAccount(account.get('id'))),
}));
}
},
@@ -69,7 +69,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
dispatch(openModal('CONFIRM', {
message: @{account.get('acct')} }} />,
confirm: intl.formatMessage(messages.muteConfirm),
- onConfirm: () => dispatch(muteAccount(account.get('id')))
+ onConfirm: () => dispatch(muteAccount(account.get('id'))),
}));
}
},
@@ -78,13 +78,13 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
dispatch(openModal('CONFIRM', {
message: {domain} }} />,
confirm: intl.formatMessage(messages.blockDomainConfirm),
- onConfirm: () => dispatch(blockDomain(domain, accountId))
+ onConfirm: () => dispatch(blockDomain(domain, accountId)),
}));
},
onUnblockDomain (domain, accountId) {
dispatch(unblockDomain(domain, accountId));
- }
+ },
});
export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header));
diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js
index 4a7ac3eba..299f9ad5c 100644
--- a/app/javascript/mastodon/features/account_timeline/index.js
+++ b/app/javascript/mastodon/features/account_timeline/index.js
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
import {
fetchAccount,
fetchAccountTimeline,
- expandAccountTimeline
+ expandAccountTimeline,
} from '../../actions/accounts';
import StatusList from '../../components/status_list';
import LoadingIndicator from '../../components/loading_indicator';
@@ -19,7 +19,7 @@ const mapStateToProps = (state, props) => ({
statusIds: state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'items'], Immutable.List()),
isLoading: state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'isLoading']),
hasMore: !!state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'next']),
- me: state.getIn(['meta', 'me'])
+ me: state.getIn(['meta', 'me']),
});
class AccountTimeline extends ImmutablePureComponent {
@@ -30,7 +30,7 @@ class AccountTimeline extends ImmutablePureComponent {
statusIds: ImmutablePropTypes.list,
isLoading: PropTypes.bool,
hasMore: PropTypes.bool,
- me: PropTypes.number.isRequired
+ me: PropTypes.number.isRequired,
};
componentWillMount () {
diff --git a/app/javascript/mastodon/features/blocks/index.js b/app/javascript/mastodon/features/blocks/index.js
index d8fd29325..de02e53cc 100644
--- a/app/javascript/mastodon/features/blocks/index.js
+++ b/app/javascript/mastodon/features/blocks/index.js
@@ -12,11 +12,11 @@ import { defineMessages, injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
- heading: { id: 'column.blocks', defaultMessage: 'Blocked users' }
+ heading: { id: 'column.blocks', defaultMessage: 'Blocked users' },
});
const mapStateToProps = state => ({
- accountIds: state.getIn(['user_lists', 'blocks', 'items'])
+ accountIds: state.getIn(['user_lists', 'blocks', 'items']),
});
class Blocks extends ImmutablePureComponent {
@@ -25,7 +25,7 @@ class Blocks extends ImmutablePureComponent {
params: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
accountIds: ImmutablePropTypes.list,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
componentWillMount () {
@@ -64,6 +64,7 @@ class Blocks extends ImmutablePureComponent {
);
}
+
}
export default connect(mapStateToProps)(injectIntl(Blocks));
diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js
index 5b0efa77c..a8d58d3fa 100644
--- a/app/javascript/mastodon/features/community_timeline/index.js
+++ b/app/javascript/mastodon/features/community_timeline/index.js
@@ -8,20 +8,20 @@ import {
updateTimeline,
deleteFromTimelines,
connectTimeline,
- disconnectTimeline
+ disconnectTimeline,
} from '../../actions/timelines';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import ColumnBackButtonSlim from '../../components/column_back_button_slim';
import createStream from '../../stream';
const messages = defineMessages({
- title: { id: 'column.community', defaultMessage: 'Local timeline' }
+ title: { id: 'column.community', defaultMessage: 'Local timeline' },
});
const mapStateToProps = state => ({
hasUnread: state.getIn(['timelines', 'community', 'unread']) > 0,
streamingAPIBaseURL: state.getIn(['meta', 'streaming_api_base_url']),
- accessToken: state.getIn(['meta', 'access_token'])
+ accessToken: state.getIn(['meta', 'access_token']),
});
let subscription;
@@ -33,7 +33,7 @@ class CommunityTimeline extends React.PureComponent {
intl: PropTypes.object.isRequired,
streamingAPIBaseURL: PropTypes.string.isRequired,
accessToken: PropTypes.string.isRequired,
- hasUnread: PropTypes.bool
+ hasUnread: PropTypes.bool,
};
componentDidMount () {
@@ -68,7 +68,7 @@ class CommunityTimeline extends React.PureComponent {
dispatch(deleteFromTimelines(data.payload));
break;
}
- }
+ },
});
}
diff --git a/app/javascript/mastodon/features/compose/components/autosuggest_account.js b/app/javascript/mastodon/features/compose/components/autosuggest_account.js
index 32bd3ec5c..23665811e 100644
--- a/app/javascript/mastodon/features/compose/components/autosuggest_account.js
+++ b/app/javascript/mastodon/features/compose/components/autosuggest_account.js
@@ -7,7 +7,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
class AutosuggestAccount extends ImmutablePureComponent {
static propTypes = {
- account: ImmutablePropTypes.map.isRequired
+ account: ImmutablePropTypes.map.isRequired,
};
render () {
diff --git a/app/javascript/mastodon/features/compose/components/character_counter.js b/app/javascript/mastodon/features/compose/components/character_counter.js
index 29598f953..e35f2b879 100644
--- a/app/javascript/mastodon/features/compose/components/character_counter.js
+++ b/app/javascript/mastodon/features/compose/components/character_counter.js
@@ -6,7 +6,7 @@ class CharacterCounter extends React.PureComponent {
static propTypes = {
text: PropTypes.string.isRequired,
- max: PropTypes.number.isRequired
+ max: PropTypes.number.isRequired,
};
checkRemainingText (diff) {
diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js
index 43f289730..43b76e353 100644
--- a/app/javascript/mastodon/features/compose/components/compose_form.js
+++ b/app/javascript/mastodon/features/compose/components/compose_form.js
@@ -53,7 +53,7 @@ class ComposeForm extends ImmutablePureComponent {
};
static defaultProps = {
- showSearch: false
+ showSearch: false,
};
handleChange = (e) => {
diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
index 50b8ef37e..e3c61b4fe 100644
--- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
+++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
@@ -13,13 +13,13 @@ const messages = defineMessages({
travel: { id: 'emoji_button.travel', defaultMessage: 'Travel & Places' },
objects: { id: 'emoji_button.objects', defaultMessage: 'Objects' },
symbols: { id: 'emoji_button.symbols', defaultMessage: 'Symbols' },
- flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' }
+ flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' },
});
const settings = {
imageType: 'png',
sprites: false,
- imagePathPNG: '/emoji/'
+ imagePathPNG: '/emoji/',
};
let EmojiPicker; // load asynchronously
@@ -28,12 +28,12 @@ class EmojiPickerDropdown extends React.PureComponent {
static propTypes = {
intl: PropTypes.object.isRequired,
- onPickEmoji: PropTypes.func.isRequired
+ onPickEmoji: PropTypes.func.isRequired,
};
state = {
active: false,
- loading: false
+ loading: false,
};
setRef = (c) => {
@@ -98,8 +98,8 @@ class EmojiPickerDropdown extends React.PureComponent {
flags: {
title: intl.formatMessage(messages.flags),
emoji: 'flag_gb',
- }
- }
+ },
+ };
const { active, loading } = this.state;
diff --git a/app/javascript/mastodon/features/compose/components/navigation_bar.js b/app/javascript/mastodon/features/compose/components/navigation_bar.js
index e9ffa67c4..6f3dbc5af 100644
--- a/app/javascript/mastodon/features/compose/components/navigation_bar.js
+++ b/app/javascript/mastodon/features/compose/components/navigation_bar.js
@@ -11,7 +11,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
class NavigationBar extends ImmutablePureComponent {
static propTypes = {
- account: ImmutablePropTypes.map.isRequired
+ account: ImmutablePropTypes.map.isRequired,
};
render () {
diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
index b02421949..8da5ce72a 100644
--- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
+++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
@@ -12,24 +12,24 @@ const messages = defineMessages({
private_long: { id: 'privacy.private.long', defaultMessage: 'Post to followers only' },
direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' },
direct_long: { id: 'privacy.direct.long', defaultMessage: 'Post to mentioned users only' },
- change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' }
+ change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' },
});
const iconStyle = {
height: null,
- lineHeight: '27px'
-}
+ lineHeight: '27px',
+};
class PrivacyDropdown extends React.PureComponent {
static propTypes = {
value: PropTypes.string.isRequired,
onChange: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
state = {
- open: false
+ open: false,
};
handleToggle = () => {
@@ -71,7 +71,7 @@ class PrivacyDropdown extends React.PureComponent {
{ icon: 'globe', value: 'public', shortText: intl.formatMessage(messages.public_short), longText: intl.formatMessage(messages.public_long) },
{ icon: 'unlock-alt', value: 'unlisted', shortText: intl.formatMessage(messages.unlisted_short), longText: intl.formatMessage(messages.unlisted_long) },
{ icon: 'lock', value: 'private', shortText: intl.formatMessage(messages.private_short), longText: intl.formatMessage(messages.private_long) },
- { icon: 'envelope', value: 'direct', shortText: intl.formatMessage(messages.direct_short), longText: intl.formatMessage(messages.direct_long) }
+ { icon: 'envelope', value: 'direct', shortText: intl.formatMessage(messages.direct_short), longText: intl.formatMessage(messages.direct_long) },
];
const valueOption = options.find(item => item.value === value);
diff --git a/app/javascript/mastodon/features/compose/components/reply_indicator.js b/app/javascript/mastodon/features/compose/components/reply_indicator.js
index 58375976e..8ad401121 100644
--- a/app/javascript/mastodon/features/compose/components/reply_indicator.js
+++ b/app/javascript/mastodon/features/compose/components/reply_indicator.js
@@ -9,19 +9,19 @@ import { defineMessages, injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
- cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' }
+ cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' },
});
class ReplyIndicator extends ImmutablePureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
status: ImmutablePropTypes.map,
onCancel: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
handleClick = () => {
diff --git a/app/javascript/mastodon/features/compose/components/search.js b/app/javascript/mastodon/features/compose/components/search.js
index 341d76920..800080a7d 100644
--- a/app/javascript/mastodon/features/compose/components/search.js
+++ b/app/javascript/mastodon/features/compose/components/search.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
const messages = defineMessages({
- placeholder: { id: 'search.placeholder', defaultMessage: 'Search' }
+ placeholder: { id: 'search.placeholder', defaultMessage: 'Search' },
});
class Search extends React.PureComponent {
@@ -15,7 +15,7 @@ class Search extends React.PureComponent {
onSubmit: PropTypes.func.isRequired,
onClear: PropTypes.func.isRequired,
onShow: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
handleChange = (e) => {
diff --git a/app/javascript/mastodon/features/compose/components/search_results.js b/app/javascript/mastodon/features/compose/components/search_results.js
index 87dc810e5..e710cc030 100644
--- a/app/javascript/mastodon/features/compose/components/search_results.js
+++ b/app/javascript/mastodon/features/compose/components/search_results.js
@@ -9,7 +9,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
class SearchResults extends ImmutablePureComponent {
static propTypes = {
- results: ImmutablePropTypes.map.isRequired
+ results: ImmutablePropTypes.map.isRequired,
};
render () {
diff --git a/app/javascript/mastodon/features/compose/components/text_icon_button.js b/app/javascript/mastodon/features/compose/components/text_icon_button.js
index f415398e5..cc0fbd11a 100644
--- a/app/javascript/mastodon/features/compose/components/text_icon_button.js
+++ b/app/javascript/mastodon/features/compose/components/text_icon_button.js
@@ -8,7 +8,7 @@ class TextIconButton extends React.PureComponent {
title: PropTypes.string,
active: PropTypes.bool,
onClick: PropTypes.func.isRequired,
- ariaControls: PropTypes.string
+ ariaControls: PropTypes.string,
};
handleClick = (e) => {
diff --git a/app/javascript/mastodon/features/compose/components/upload_button.js b/app/javascript/mastodon/features/compose/components/upload_button.js
index c8c1c0c9d..bc5cfd1bc 100644
--- a/app/javascript/mastodon/features/compose/components/upload_button.js
+++ b/app/javascript/mastodon/features/compose/components/upload_button.js
@@ -5,7 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl';
import { connect } from 'react-redux';
const messages = defineMessages({
- upload: { id: 'upload_button.label', defaultMessage: 'Add media' }
+ upload: { id: 'upload_button.label', defaultMessage: 'Add media' },
});
const makeMapStateToProps = () => {
@@ -14,12 +14,12 @@ const makeMapStateToProps = () => {
});
return mapStateToProps;
-}
+};
const iconStyle = {
height: null,
- lineHeight: '27px'
-}
+ lineHeight: '27px',
+};
class UploadButton extends React.PureComponent {
@@ -29,7 +29,7 @@ class UploadButton extends React.PureComponent {
style: PropTypes.object,
resetFileKey: PropTypes.number,
acceptContentTypes: PropTypes.arrayOf(PropTypes.string).isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
handleChange = (e) => {
diff --git a/app/javascript/mastodon/features/compose/components/upload_form.js b/app/javascript/mastodon/features/compose/components/upload_form.js
index ac26e018a..7e665683a 100644
--- a/app/javascript/mastodon/features/compose/components/upload_form.js
+++ b/app/javascript/mastodon/features/compose/components/upload_form.js
@@ -8,7 +8,7 @@ import Motion from 'react-motion/lib/Motion';
import spring from 'react-motion/lib/spring';
const messages = defineMessages({
- undo: { id: 'upload_form.undo', defaultMessage: 'Undo' }
+ undo: { id: 'upload_form.undo', defaultMessage: 'Undo' },
});
class UploadForm extends React.PureComponent {
@@ -16,7 +16,7 @@ class UploadForm extends React.PureComponent {
static propTypes = {
media: ImmutablePropTypes.list.isRequired,
onRemoveFile: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
onRemoveFile = (e) => {
diff --git a/app/javascript/mastodon/features/compose/components/upload_progress.js b/app/javascript/mastodon/features/compose/components/upload_progress.js
index dae6bf259..8c8ce3835 100644
--- a/app/javascript/mastodon/features/compose/components/upload_progress.js
+++ b/app/javascript/mastodon/features/compose/components/upload_progress.js
@@ -8,7 +8,7 @@ class UploadProgress extends React.PureComponent {
static propTypes = {
active: PropTypes.bool,
- progress: PropTypes.number
+ progress: PropTypes.number,
};
render () {
diff --git a/app/javascript/mastodon/features/compose/components/warning.js b/app/javascript/mastodon/features/compose/components/warning.js
index 9a06b88c0..d0e75a5c3 100644
--- a/app/javascript/mastodon/features/compose/components/warning.js
+++ b/app/javascript/mastodon/features/compose/components/warning.js
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
class Warning extends React.PureComponent {
static propTypes = {
- message: PropTypes.node.isRequired
+ message: PropTypes.node.isRequired,
};
render () {
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 de76a364d..4190e54ca 100644
--- a/app/javascript/mastodon/features/compose/containers/autosuggest_account_container.js
+++ b/app/javascript/mastodon/features/compose/containers/autosuggest_account_container.js
@@ -6,7 +6,7 @@ const makeMapStateToProps = () => {
const getAccount = makeGetAccount();
const mapStateToProps = (state, { id }) => ({
- account: getAccount(state, id)
+ account: getAccount(state, id),
});
return mapStateToProps;
diff --git a/app/javascript/mastodon/features/compose/containers/autosuggest_status_container.js b/app/javascript/mastodon/features/compose/containers/autosuggest_status_container.js
index ef46eb09c..a9e3a9edf 100644
--- a/app/javascript/mastodon/features/compose/containers/autosuggest_status_container.js
+++ b/app/javascript/mastodon/features/compose/containers/autosuggest_status_container.js
@@ -6,7 +6,7 @@ const makeMapStateToProps = () => {
const getStatus = makeGetStatus();
const mapStateToProps = (state, { id }) => ({
- status: getStatus(state, id)
+ status: getStatus(state, id),
});
return mapStateToProps;
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 33ad65be5..12d435ded 100644
--- a/app/javascript/mastodon/features/compose/containers/compose_form_container.js
+++ b/app/javascript/mastodon/features/compose/containers/compose_form_container.js
@@ -8,7 +8,7 @@ import {
fetchComposeSuggestions,
selectComposeSuggestion,
changeComposeSpoilerText,
- insertEmojiCompose
+ insertEmojiCompose,
} from '../../../actions/compose';
const mapStateToProps = state => ({
@@ -23,7 +23,7 @@ const mapStateToProps = state => ({
is_submitting: state.getIn(['compose', 'is_submitting']),
is_uploading: state.getIn(['compose', 'is_uploading']),
me: state.getIn(['compose', 'me']),
- showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden'])
+ showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']),
});
const mapDispatchToProps = (dispatch) => ({
diff --git a/app/javascript/mastodon/features/compose/containers/navigation_container.js b/app/javascript/mastodon/features/compose/containers/navigation_container.js
index 0006608da..75f288f18 100644
--- a/app/javascript/mastodon/features/compose/containers/navigation_container.js
+++ b/app/javascript/mastodon/features/compose/containers/navigation_container.js
@@ -3,7 +3,7 @@ import NavigationBar from '../components/navigation_bar';
const mapStateToProps = (state, props) => {
return {
- account: state.getIn(['accounts', state.getIn(['meta', 'me'])])
+ account: state.getIn(['accounts', state.getIn(['meta', 'me'])]),
};
};
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 1eee8f84c..9c05e054e 100644
--- a/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js
+++ b/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js
@@ -3,14 +3,14 @@ import PrivacyDropdown from '../components/privacy_dropdown';
import { changeComposeVisibility } from '../../../actions/compose';
const mapStateToProps = state => ({
- value: state.getIn(['compose', 'privacy'])
+ value: state.getIn(['compose', 'privacy']),
});
const mapDispatchToProps = dispatch => ({
onChange (value) {
dispatch(changeComposeVisibility(value));
- }
+ },
});
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 39b48f3b6..7f3eeb89c 100644
--- a/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js
+++ b/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js
@@ -17,7 +17,7 @@ const mapDispatchToProps = dispatch => ({
onCancel () {
dispatch(cancelReplyCompose());
- }
+ },
});
diff --git a/app/javascript/mastodon/features/compose/containers/search_container.js b/app/javascript/mastodon/features/compose/containers/search_container.js
index 906c0c28c..392bd0f56 100644
--- a/app/javascript/mastodon/features/compose/containers/search_container.js
+++ b/app/javascript/mastodon/features/compose/containers/search_container.js
@@ -3,13 +3,13 @@ import {
changeSearch,
clearSearch,
submitSearch,
- showSearch
+ showSearch,
} from '../../../actions/search';
import Search from '../components/search';
const mapStateToProps = state => ({
value: state.getIn(['search', 'value']),
- submitted: state.getIn(['search', 'submitted'])
+ submitted: state.getIn(['search', 'submitted']),
});
const mapDispatchToProps = dispatch => ({
@@ -28,7 +28,7 @@ const mapDispatchToProps = dispatch => ({
onShow () {
dispatch(showSearch());
- }
+ },
});
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 e5911fd38..16d95d417 100644
--- a/app/javascript/mastodon/features/compose/containers/search_results_container.js
+++ b/app/javascript/mastodon/features/compose/containers/search_results_container.js
@@ -2,7 +2,7 @@ import { connect } from 'react-redux';
import SearchResults from '../components/search_results';
const mapStateToProps = state => ({
- results: state.getIn(['search', 'results'])
+ results: state.getIn(['search', 'results']),
});
export default connect(mapStateToProps)(SearchResults);
diff --git a/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js b/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js
index c8aed5589..761ae8c08 100644
--- a/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js
+++ b/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js
@@ -8,19 +8,19 @@ import spring from 'react-motion/lib/spring';
import { injectIntl, defineMessages } from 'react-intl';
const messages = defineMessages({
- title: { id: 'compose_form.sensitive', defaultMessage: 'Mark media as sensitive' }
+ title: { id: 'compose_form.sensitive', defaultMessage: 'Mark media as sensitive' },
});
const mapStateToProps = state => ({
visible: state.getIn(['compose', 'media_attachments']).size > 0,
- active: state.getIn(['compose', 'sensitive'])
+ active: state.getIn(['compose', 'sensitive']),
});
const mapDispatchToProps = dispatch => ({
onClick () {
dispatch(changeComposeSensitivity());
- }
+ },
});
@@ -30,7 +30,7 @@ class SensitiveButton extends React.PureComponent {
visible: PropTypes.bool,
active: PropTypes.bool,
onClick: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
render () {
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 b1c80fe19..4179b9706 100644
--- a/app/javascript/mastodon/features/compose/containers/spoiler_button_container.js
+++ b/app/javascript/mastodon/features/compose/containers/spoiler_button_container.js
@@ -4,21 +4,21 @@ import { changeComposeSpoilerness } from '../../../actions/compose';
import { injectIntl, defineMessages } from 'react-intl';
const messages = defineMessages({
- title: { id: 'compose_form.spoiler', defaultMessage: 'Hide text behind warning' }
+ title: { id: 'compose_form.spoiler', defaultMessage: 'Hide text behind warning' },
});
const mapStateToProps = (state, { intl }) => ({
label: 'CW',
title: intl.formatMessage(messages.title),
active: state.getIn(['compose', 'spoiler']),
- ariaControls: 'cw-spoiler-input'
+ ariaControls: 'cw-spoiler-input',
});
const mapDispatchToProps = dispatch => ({
onClick () {
dispatch(changeComposeSpoilerness());
- }
+ },
});
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 78e5312f5..1f1d915bc 100644
--- a/app/javascript/mastodon/features/compose/containers/upload_button_container.js
+++ b/app/javascript/mastodon/features/compose/containers/upload_button_container.js
@@ -4,14 +4,14 @@ import { uploadCompose } from '../../../actions/compose';
const mapStateToProps = state => ({
disabled: state.getIn(['compose', 'is_uploading']) || (state.getIn(['compose', 'media_attachments']).size > 3 || state.getIn(['compose', 'media_attachments']).some(m => m.get('type') === 'video')),
- resetFileKey: state.getIn(['compose', 'resetFileKey'])
+ resetFileKey: state.getIn(['compose', 'resetFileKey']),
});
const mapDispatchToProps = dispatch => ({
onSelectFile (files) {
dispatch(uploadCompose(files));
- }
+ },
});
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 a6a202e17..3125564c2 100644
--- a/app/javascript/mastodon/features/compose/containers/upload_form_container.js
+++ b/app/javascript/mastodon/features/compose/containers/upload_form_container.js
@@ -10,7 +10,7 @@ const mapDispatchToProps = dispatch => ({
onRemoveFile (media_id) {
dispatch(undoUploadCompose(media_id));
- }
+ },
});
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 b0f1d4d19..51af4440c 100644
--- a/app/javascript/mastodon/features/compose/containers/upload_progress_container.js
+++ b/app/javascript/mastodon/features/compose/containers/upload_progress_container.js
@@ -3,7 +3,7 @@ import UploadProgress from '../components/upload_progress';
const mapStateToProps = (state, props) => ({
active: state.getIn(['compose', 'is_uploading']),
- progress: state.getIn(['compose', 'progress'])
+ progress: state.getIn(['compose', 'progress']),
});
export default connect(mapStateToProps)(UploadProgress);
diff --git a/app/javascript/mastodon/features/compose/containers/warning_container.js b/app/javascript/mastodon/features/compose/containers/warning_container.js
index a5fb8d79d..6e7d11c63 100644
--- a/app/javascript/mastodon/features/compose/containers/warning_container.js
+++ b/app/javascript/mastodon/features/compose/containers/warning_container.js
@@ -20,7 +20,7 @@ const mapStateToProps = state => {
return {
needsLeakWarning: (state.getIn(['compose', 'privacy']) === 'private' || state.getIn(['compose', 'privacy']) === 'direct') && mentionedUsernames !== null,
mentionedDomains: mentionedUsernamesWithDomains,
- needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', state.getIn(['meta', 'me']), 'locked'])
+ needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', state.getIn(['meta', 'me']), 'locked']),
};
};
diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js
index 0bea9a090..f64e3b891 100644
--- a/app/javascript/mastodon/features/compose/index.js
+++ b/app/javascript/mastodon/features/compose/index.js
@@ -17,11 +17,11 @@ const messages = defineMessages({
public: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' },
community: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
- logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' }
+ logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },
});
const mapStateToProps = state => ({
- showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden'])
+ showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']),
});
class Compose extends React.PureComponent {
@@ -30,7 +30,7 @@ class Compose extends React.PureComponent {
dispatch: PropTypes.func.isRequired,
withHeader: PropTypes.bool,
showSearch: PropTypes.bool,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
componentDidMount () {
diff --git a/app/javascript/mastodon/features/favourited_statuses/index.js b/app/javascript/mastodon/features/favourited_statuses/index.js
index acdeae35c..2b343ba5a 100644
--- a/app/javascript/mastodon/features/favourited_statuses/index.js
+++ b/app/javascript/mastodon/features/favourited_statuses/index.js
@@ -11,13 +11,13 @@ import { defineMessages, injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
- heading: { id: 'column.favourites', defaultMessage: 'Favourites' }
+ heading: { id: 'column.favourites', defaultMessage: 'Favourites' },
});
const mapStateToProps = state => ({
statusIds: state.getIn(['status_lists', 'favourites', 'items']),
loaded: state.getIn(['status_lists', 'favourites', 'loaded']),
- me: state.getIn(['meta', 'me'])
+ me: state.getIn(['meta', 'me']),
});
class Favourites extends ImmutablePureComponent {
@@ -27,7 +27,7 @@ class Favourites extends ImmutablePureComponent {
statusIds: ImmutablePropTypes.list.isRequired,
loaded: PropTypes.bool,
intl: PropTypes.object.isRequired,
- me: PropTypes.number.isRequired
+ me: PropTypes.number.isRequired,
};
componentWillMount () {
diff --git a/app/javascript/mastodon/features/favourites/index.js b/app/javascript/mastodon/features/favourites/index.js
index 9571c2b0b..94f9f268b 100644
--- a/app/javascript/mastodon/features/favourites/index.js
+++ b/app/javascript/mastodon/features/favourites/index.js
@@ -11,7 +11,7 @@ import ColumnBackButton from '../../components/column_back_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const mapStateToProps = (state, props) => ({
- accountIds: state.getIn(['user_lists', 'favourited_by', Number(props.params.statusId)])
+ accountIds: state.getIn(['user_lists', 'favourited_by', Number(props.params.statusId)]),
});
class Favourites extends ImmutablePureComponent {
@@ -19,7 +19,7 @@ class Favourites extends ImmutablePureComponent {
static propTypes = {
params: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
- accountIds: ImmutablePropTypes.list
+ accountIds: ImmutablePropTypes.list,
};
componentWillMount () {
diff --git a/app/javascript/mastodon/features/follow_requests/components/account_authorize.js b/app/javascript/mastodon/features/follow_requests/components/account_authorize.js
index be2a36ff1..e41597c17 100644
--- a/app/javascript/mastodon/features/follow_requests/components/account_authorize.js
+++ b/app/javascript/mastodon/features/follow_requests/components/account_authorize.js
@@ -11,7 +11,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
authorize: { id: 'follow_request.authorize', defaultMessage: 'Authorize' },
- reject: { id: 'follow_request.reject', defaultMessage: 'Reject' }
+ reject: { id: 'follow_request.reject', defaultMessage: 'Reject' },
});
class AccountAuthorize extends ImmutablePureComponent {
@@ -20,7 +20,7 @@ class AccountAuthorize extends ImmutablePureComponent {
account: ImmutablePropTypes.map.isRequired,
onAuthorize: PropTypes.func.isRequired,
onReject: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
render () {
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 da1e5eaa1..a423bc79b 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
@@ -7,7 +7,7 @@ const makeMapStateToProps = () => {
const getAccount = makeGetAccount();
const mapStateToProps = (state, props) => ({
- account: getAccount(state, props.id)
+ account: getAccount(state, props.id),
});
return mapStateToProps;
@@ -20,7 +20,7 @@ const mapDispatchToProps = (dispatch, { id }) => ({
onReject (account) {
dispatch(rejectFollowRequest(id));
- }
+ },
});
export default connect(makeMapStateToProps, mapDispatchToProps)(AccountAuthorize);
diff --git a/app/javascript/mastodon/features/follow_requests/index.js b/app/javascript/mastodon/features/follow_requests/index.js
index 9d1aef7cf..446fdbc6e 100644
--- a/app/javascript/mastodon/features/follow_requests/index.js
+++ b/app/javascript/mastodon/features/follow_requests/index.js
@@ -12,11 +12,11 @@ import { defineMessages, injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
- heading: { id: 'column.follow_requests', defaultMessage: 'Follow requests' }
+ heading: { id: 'column.follow_requests', defaultMessage: 'Follow requests' },
});
const mapStateToProps = state => ({
- accountIds: state.getIn(['user_lists', 'follow_requests', 'items'])
+ accountIds: state.getIn(['user_lists', 'follow_requests', 'items']),
});
class FollowRequests extends ImmutablePureComponent {
@@ -25,7 +25,7 @@ class FollowRequests extends ImmutablePureComponent {
params: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
accountIds: ImmutablePropTypes.list,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
componentWillMount () {
diff --git a/app/javascript/mastodon/features/followers/index.js b/app/javascript/mastodon/features/followers/index.js
index 7da03da19..ed7119cda 100644
--- a/app/javascript/mastodon/features/followers/index.js
+++ b/app/javascript/mastodon/features/followers/index.js
@@ -6,7 +6,7 @@ import LoadingIndicator from '../../components/loading_indicator';
import {
fetchAccount,
fetchFollowers,
- expandFollowers
+ expandFollowers,
} from '../../actions/accounts';
import { ScrollContainer } from 'react-router-scroll';
import AccountContainer from '../../containers/account_container';
@@ -17,7 +17,7 @@ import ColumnBackButton from '../../components/column_back_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const mapStateToProps = (state, props) => ({
- accountIds: state.getIn(['user_lists', 'followers', Number(props.params.accountId), 'items'])
+ accountIds: state.getIn(['user_lists', 'followers', Number(props.params.accountId), 'items']),
});
class Followers extends ImmutablePureComponent {
@@ -25,7 +25,7 @@ class Followers extends ImmutablePureComponent {
static propTypes = {
params: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
- accountIds: ImmutablePropTypes.list
+ accountIds: ImmutablePropTypes.list,
};
componentWillMount () {
diff --git a/app/javascript/mastodon/features/following/index.js b/app/javascript/mastodon/features/following/index.js
index 43beba9ed..dd7ab4d46 100644
--- a/app/javascript/mastodon/features/following/index.js
+++ b/app/javascript/mastodon/features/following/index.js
@@ -6,7 +6,7 @@ import LoadingIndicator from '../../components/loading_indicator';
import {
fetchAccount,
fetchFollowing,
- expandFollowing
+ expandFollowing,
} from '../../actions/accounts';
import { ScrollContainer } from 'react-router-scroll';
import AccountContainer from '../../containers/account_container';
@@ -17,7 +17,7 @@ import ColumnBackButton from '../../components/column_back_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const mapStateToProps = (state, props) => ({
- accountIds: state.getIn(['user_lists', 'following', Number(props.params.accountId), 'items'])
+ accountIds: state.getIn(['user_lists', 'following', Number(props.params.accountId), 'items']),
});
class Following extends ImmutablePureComponent {
@@ -25,7 +25,7 @@ class Following extends ImmutablePureComponent {
static propTypes = {
params: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
- accountIds: ImmutablePropTypes.list
+ accountIds: ImmutablePropTypes.list,
};
componentWillMount () {
diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js
index 5e72a5612..d1123878e 100644
--- a/app/javascript/mastodon/features/getting_started/index.js
+++ b/app/javascript/mastodon/features/getting_started/index.js
@@ -21,18 +21,18 @@ const messages = defineMessages({
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },
blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
- info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' }
+ info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' },
});
const mapStateToProps = state => ({
- me: state.getIn(['accounts', state.getIn(['meta', 'me'])])
+ me: state.getIn(['accounts', state.getIn(['meta', 'me'])]),
});
class GettingStarted extends ImmutablePureComponent {
static propTypes = {
intl: PropTypes.object.isRequired,
- me: ImmutablePropTypes.map.isRequired
+ me: ImmutablePropTypes.map.isRequired,
};
render () {
@@ -69,7 +69,7 @@ class GettingStarted extends ImmutablePureComponent {
values={{
faq: ,
userguide: ,
- apps:
+ apps: ,
}}
/>
@@ -85,6 +85,7 @@ class GettingStarted extends ImmutablePureComponent {
);
}
+
}
export default connect(mapStateToProps)(injectIntl(GettingStarted));
diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js
index 91b62a6f9..d997634ba 100644
--- a/app/javascript/mastodon/features/hashtag_timeline/index.js
+++ b/app/javascript/mastodon/features/hashtag_timeline/index.js
@@ -6,7 +6,7 @@ import Column from '../ui/components/column';
import {
refreshTimeline,
updateTimeline,
- deleteFromTimelines
+ deleteFromTimelines,
} from '../../actions/timelines';
import ColumnBackButtonSlim from '../../components/column_back_button_slim';
import { FormattedMessage } from 'react-intl';
@@ -15,7 +15,7 @@ import createStream from '../../stream';
const mapStateToProps = state => ({
hasUnread: state.getIn(['timelines', 'tag', 'unread']) > 0,
streamingAPIBaseURL: state.getIn(['meta', 'streaming_api_base_url']),
- accessToken: state.getIn(['meta', 'access_token'])
+ accessToken: state.getIn(['meta', 'access_token']),
});
class HashtagTimeline extends React.PureComponent {
@@ -25,7 +25,7 @@ class HashtagTimeline extends React.PureComponent {
dispatch: PropTypes.func.isRequired,
streamingAPIBaseURL: PropTypes.string.isRequired,
accessToken: PropTypes.string.isRequired,
- hasUnread: PropTypes.bool
+ hasUnread: PropTypes.bool,
};
_subscribe (dispatch, id) {
@@ -42,7 +42,7 @@ class HashtagTimeline extends React.PureComponent {
dispatch(deleteFromTimelines(data.payload));
break;
}
- }
+ },
});
}
diff --git a/app/javascript/mastodon/features/home_timeline/components/column_settings.js b/app/javascript/mastodon/features/home_timeline/components/column_settings.js
index 96cade870..094053aa8 100644
--- a/app/javascript/mastodon/features/home_timeline/components/column_settings.js
+++ b/app/javascript/mastodon/features/home_timeline/components/column_settings.js
@@ -8,7 +8,7 @@ import SettingText from './setting_text';
const messages = defineMessages({
filter_regex: { id: 'home.column_settings.filter_regex', defaultMessage: 'Filter out by regular expressions' },
- settings: { id: 'home.settings', defaultMessage: 'Column settings' }
+ settings: { id: 'home.settings', defaultMessage: 'Column settings' },
});
class ColumnSettings extends React.PureComponent {
@@ -17,7 +17,7 @@ class ColumnSettings extends React.PureComponent {
settings: ImmutablePropTypes.map.isRequired,
onChange: PropTypes.func.isRequired,
onSave: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
render () {
diff --git a/app/javascript/mastodon/features/home_timeline/components/setting_text.js b/app/javascript/mastodon/features/home_timeline/components/setting_text.js
index a872ae76f..d4f177f8a 100644
--- a/app/javascript/mastodon/features/home_timeline/components/setting_text.js
+++ b/app/javascript/mastodon/features/home_timeline/components/setting_text.js
@@ -8,11 +8,11 @@ class SettingText extends React.PureComponent {
settings: ImmutablePropTypes.map.isRequired,
settingKey: PropTypes.array.isRequired,
label: PropTypes.string.isRequired,
- onChange: PropTypes.func.isRequired
+ onChange: PropTypes.func.isRequired,
};
handleChange = (e) => {
- this.props.onChange(this.props.settingKey, e.target.value)
+ this.props.onChange(this.props.settingKey, e.target.value);
}
render () {
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 3b3ce19bc..fd8a39298 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
@@ -3,7 +3,7 @@ import ColumnSettings from '../components/column_settings';
import { changeSetting, saveSettings } from '../../../actions/settings';
const mapStateToProps = state => ({
- settings: state.getIn(['settings', 'home'])
+ settings: state.getIn(['settings', 'home']),
});
const mapDispatchToProps = dispatch => ({
@@ -14,7 +14,7 @@ const mapDispatchToProps = dispatch => ({
onSave () {
dispatch(saveSettings());
- }
+ },
});
diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js
index a44ba6882..8f03adb12 100644
--- a/app/javascript/mastodon/features/home_timeline/index.js
+++ b/app/javascript/mastodon/features/home_timeline/index.js
@@ -8,12 +8,12 @@ import ColumnSettingsContainer from './containers/column_settings_container';
import Link from 'react-router/lib/Link';
const messages = defineMessages({
- title: { id: 'column.home', defaultMessage: 'Home' }
+ title: { id: 'column.home', defaultMessage: 'Home' },
});
const mapStateToProps = state => ({
hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0,
- hasFollows: state.getIn(['accounts_counters', state.getIn(['meta', 'me']), 'following_count']) > 0
+ hasFollows: state.getIn(['accounts_counters', state.getIn(['meta', 'me']), 'following_count']) > 0,
});
class HomeTimeline extends React.PureComponent {
@@ -21,7 +21,7 @@ class HomeTimeline extends React.PureComponent {
static propTypes = {
intl: PropTypes.object.isRequired,
hasUnread: PropTypes.bool,
- hasFollows: PropTypes.bool
+ hasFollows: PropTypes.bool,
};
render () {
@@ -30,7 +30,7 @@ class HomeTimeline extends React.PureComponent {
let emptyMessage;
if (hasFollows) {
- emptyMessage =
+ emptyMessage = ;
} else {
emptyMessage = }} />;
}
diff --git a/app/javascript/mastodon/features/mutes/index.js b/app/javascript/mastodon/features/mutes/index.js
index 01d4ac8f7..f0d8856be 100644
--- a/app/javascript/mastodon/features/mutes/index.js
+++ b/app/javascript/mastodon/features/mutes/index.js
@@ -12,11 +12,11 @@ import { defineMessages, injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
- heading: { id: 'column.mutes', defaultMessage: 'Muted users' }
+ heading: { id: 'column.mutes', defaultMessage: 'Muted users' },
});
const mapStateToProps = state => ({
- accountIds: state.getIn(['user_lists', 'mutes', 'items'])
+ accountIds: state.getIn(['user_lists', 'mutes', 'items']),
});
class Mutes extends ImmutablePureComponent {
@@ -64,7 +64,7 @@ Mutes.propTypes = {
params: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
accountIds: ImmutablePropTypes.list,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
export default connect(mapStateToProps)(injectIntl(Mutes));
diff --git a/app/javascript/mastodon/features/notifications/components/clear_column_button.js b/app/javascript/mastodon/features/notifications/components/clear_column_button.js
index ec01626b4..5af049313 100644
--- a/app/javascript/mastodon/features/notifications/components/clear_column_button.js
+++ b/app/javascript/mastodon/features/notifications/components/clear_column_button.js
@@ -3,14 +3,14 @@ import PropTypes from 'prop-types';
import { defineMessages, injectIntl } from 'react-intl';
const messages = defineMessages({
- clear: { id: 'notifications.clear', defaultMessage: 'Clear notifications' }
+ clear: { id: 'notifications.clear', defaultMessage: 'Clear notifications' },
});
class ClearColumnButton extends React.Component {
static propTypes = {
onClick: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
render () {
@@ -22,6 +22,7 @@ class ClearColumnButton extends React.Component {
);
}
+
}
export default injectIntl(ClearColumnButton);
diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js
index 6891bc6bd..6c1720b9e 100644
--- a/app/javascript/mastodon/features/notifications/components/column_settings.js
+++ b/app/javascript/mastodon/features/notifications/components/column_settings.js
@@ -6,7 +6,7 @@ import ColumnCollapsable from '../../../components/column_collapsable';
import SettingToggle from './setting_toggle';
const messages = defineMessages({
- settings: { id: 'notifications.settings', defaultMessage: 'Column settings' }
+ settings: { id: 'notifications.settings', defaultMessage: 'Column settings' },
});
class ColumnSettings extends React.PureComponent {
@@ -16,8 +16,8 @@ class ColumnSettings extends React.PureComponent {
onChange: PropTypes.func.isRequired,
onSave: PropTypes.func.isRequired,
intl: PropTypes.shape({
- formatMessage: PropTypes.func.isRequired
- }).isRequired
+ formatMessage: PropTypes.func.isRequired,
+ }).isRequired,
};
render () {
diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js
index e20be99ea..433a0d573 100644
--- a/app/javascript/mastodon/features/notifications/components/notification.js
+++ b/app/javascript/mastodon/features/notifications/components/notification.js
@@ -12,7 +12,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
class Notification extends ImmutablePureComponent {
static propTypes = {
- notification: ImmutablePropTypes.map.isRequired
+ notification: ImmutablePropTypes.map.isRequired,
};
renderFollow (account, link) {
diff --git a/app/javascript/mastodon/features/notifications/components/setting_toggle.js b/app/javascript/mastodon/features/notifications/components/setting_toggle.js
index 804049531..6a42f7c75 100644
--- a/app/javascript/mastodon/features/notifications/components/setting_toggle.js
+++ b/app/javascript/mastodon/features/notifications/components/setting_toggle.js
@@ -10,7 +10,7 @@ class SettingToggle extends React.PureComponent {
settingKey: PropTypes.array.isRequired,
label: PropTypes.node.isRequired,
onChange: PropTypes.func.isRequired,
- htmlFor: PropTypes.string
+ htmlFor: PropTypes.string,
}
onChange = (e) => {
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 bc24c75e0..76991d541 100644
--- a/app/javascript/mastodon/features/notifications/containers/column_settings_container.js
+++ b/app/javascript/mastodon/features/notifications/containers/column_settings_container.js
@@ -3,7 +3,7 @@ import ColumnSettings from '../components/column_settings';
import { changeSetting, saveSettings } from '../../../actions/settings';
const mapStateToProps = state => ({
- settings: state.getIn(['settings', 'notifications'])
+ settings: state.getIn(['settings', 'notifications']),
});
const mapDispatchToProps = dispatch => ({
@@ -14,7 +14,7 @@ const mapDispatchToProps = dispatch => ({
onSave () {
dispatch(saveSettings());
- }
+ },
});
diff --git a/app/javascript/mastodon/features/notifications/containers/notification_container.js b/app/javascript/mastodon/features/notifications/containers/notification_container.js
index 4ca1b1b7b..786222967 100644
--- a/app/javascript/mastodon/features/notifications/containers/notification_container.js
+++ b/app/javascript/mastodon/features/notifications/containers/notification_container.js
@@ -6,7 +6,7 @@ const makeMapStateToProps = () => {
const getNotification = makeGetNotification();
const mapStateToProps = (state, props) => ({
- notification: getNotification(state, props.notification, props.accountId)
+ notification: getNotification(state, props.notification, props.accountId),
});
return mapStateToProps;
diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js
index ea4d9086b..a62dcd50d 100644
--- a/app/javascript/mastodon/features/notifications/index.js
+++ b/app/javascript/mastodon/features/notifications/index.js
@@ -17,18 +17,18 @@ import { openModal } from '../../actions/modal';
const messages = defineMessages({
title: { id: 'column.notifications', defaultMessage: 'Notifications' },
clearMessage: { id: 'notifications.clear_confirmation', defaultMessage: 'Are you sure you want to permanently clear all your notifications?' },
- clearConfirm: { id: 'notifications.clear', defaultMessage: 'Clear notifications' }
+ clearConfirm: { id: 'notifications.clear', defaultMessage: 'Clear notifications' },
});
const getNotifications = createSelector([
state => Immutable.List(state.getIn(['settings', 'notifications', 'shows']).filter(item => !item).keys()),
- state => state.getIn(['notifications', 'items'])
+ state => state.getIn(['notifications', 'items']),
], (excludedTypes, notifications) => notifications.filterNot(item => excludedTypes.includes(item.get('type'))));
const mapStateToProps = state => ({
notifications: getNotifications(state),
isLoading: state.getIn(['notifications', 'isLoading'], true),
- isUnread: state.getIn(['notifications', 'unread']) > 0
+ isUnread: state.getIn(['notifications', 'unread']) > 0,
});
class Notifications extends React.PureComponent {
@@ -39,11 +39,11 @@ class Notifications extends React.PureComponent {
shouldUpdateScroll: PropTypes.func,
intl: PropTypes.object.isRequired,
isLoading: PropTypes.bool,
- isUnread: PropTypes.bool
+ isUnread: PropTypes.bool,
};
static defaultProps = {
- trackScroll: true
+ trackScroll: true,
};
handleScroll = (e) => {
@@ -77,7 +77,7 @@ class Notifications extends React.PureComponent {
dispatch(openModal('CONFIRM', {
message: intl.formatMessage(messages.clearMessage),
confirm: intl.formatMessage(messages.clearConfirm),
- onConfirm: () => dispatch(clearNotifications())
+ onConfirm: () => dispatch(clearNotifications()),
}));
}
diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js
index e7dee731b..228ee8804 100644
--- a/app/javascript/mastodon/features/public_timeline/index.js
+++ b/app/javascript/mastodon/features/public_timeline/index.js
@@ -8,20 +8,20 @@ import {
updateTimeline,
deleteFromTimelines,
connectTimeline,
- disconnectTimeline
+ disconnectTimeline,
} from '../../actions/timelines';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import ColumnBackButtonSlim from '../../components/column_back_button_slim';
import createStream from '../../stream';
const messages = defineMessages({
- title: { id: 'column.public', defaultMessage: 'Federated timeline' }
+ title: { id: 'column.public', defaultMessage: 'Federated timeline' },
});
const mapStateToProps = state => ({
hasUnread: state.getIn(['timelines', 'public', 'unread']) > 0,
streamingAPIBaseURL: state.getIn(['meta', 'streaming_api_base_url']),
- accessToken: state.getIn(['meta', 'access_token'])
+ accessToken: state.getIn(['meta', 'access_token']),
});
let subscription;
@@ -33,7 +33,7 @@ class PublicTimeline extends React.PureComponent {
intl: PropTypes.object.isRequired,
streamingAPIBaseURL: PropTypes.string.isRequired,
accessToken: PropTypes.string.isRequired,
- hasUnread: PropTypes.bool
+ hasUnread: PropTypes.bool,
};
componentDidMount () {
@@ -68,7 +68,7 @@ class PublicTimeline extends React.PureComponent {
dispatch(deleteFromTimelines(data.payload));
break;
}
- }
+ },
});
}
diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js
index 46634486a..13fd1b20e 100644
--- a/app/javascript/mastodon/features/reblogs/index.js
+++ b/app/javascript/mastodon/features/reblogs/index.js
@@ -11,7 +11,7 @@ import ColumnBackButton from '../../components/column_back_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const mapStateToProps = (state, props) => ({
- accountIds: state.getIn(['user_lists', 'reblogged_by', Number(props.params.statusId)])
+ accountIds: state.getIn(['user_lists', 'reblogged_by', Number(props.params.statusId)]),
});
class Reblogs extends ImmutablePureComponent {
@@ -19,7 +19,7 @@ class Reblogs extends ImmutablePureComponent {
static propTypes = {
params: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
- accountIds: ImmutablePropTypes.list
+ accountIds: ImmutablePropTypes.list,
};
componentWillMount () {
diff --git a/app/javascript/mastodon/features/report/components/status_check_box.js b/app/javascript/mastodon/features/report/components/status_check_box.js
index deab546f5..a31eabc21 100644
--- a/app/javascript/mastodon/features/report/components/status_check_box.js
+++ b/app/javascript/mastodon/features/report/components/status_check_box.js
@@ -10,7 +10,7 @@ class StatusCheckBox extends React.PureComponent {
status: ImmutablePropTypes.map.isRequired,
checked: PropTypes.bool,
onToggle: PropTypes.func.isRequired,
- disabled: PropTypes.bool
+ disabled: PropTypes.bool,
};
render () {
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 67ce9d9f3..8997718a2 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
@@ -5,14 +5,14 @@ import Immutable from 'immutable';
const mapStateToProps = (state, { id }) => ({
status: state.getIn(['statuses', id]),
- checked: state.getIn(['reports', 'new', 'status_ids'], Immutable.Set()).includes(id)
+ checked: state.getIn(['reports', 'new', 'status_ids'], Immutable.Set()).includes(id),
});
const mapDispatchToProps = (dispatch, { id }) => ({
onToggle (e) {
dispatch(toggleStatusReport(id, e.target.checked));
- }
+ },
});
diff --git a/app/javascript/mastodon/features/report/index.js b/app/javascript/mastodon/features/report/index.js
index 93852ae46..25e601f1a 100644
--- a/app/javascript/mastodon/features/report/index.js
+++ b/app/javascript/mastodon/features/report/index.js
@@ -15,7 +15,7 @@ import ColumnBackButtonSlim from '../../components/column_back_button_slim';
const messages = defineMessages({
heading: { id: 'report.heading', defaultMessage: 'New report' },
placeholder: { id: 'report.placeholder', defaultMessage: 'Additional comments' },
- submit: { id: 'report.submit', defaultMessage: 'Submit' }
+ submit: { id: 'report.submit', defaultMessage: 'Submit' },
});
const makeMapStateToProps = () => {
@@ -28,7 +28,7 @@ const makeMapStateToProps = () => {
isSubmitting: state.getIn(['reports', 'new', 'isSubmitting']),
account: getAccount(state, accountId),
comment: state.getIn(['reports', 'new', 'comment']),
- statusIds: Immutable.OrderedSet(state.getIn(['timelines', 'accounts_timelines', accountId, 'items'])).union(state.getIn(['reports', 'new', 'status_ids']))
+ statusIds: Immutable.OrderedSet(state.getIn(['timelines', 'accounts_timelines', accountId, 'items'])).union(state.getIn(['reports', 'new', 'status_ids'])),
};
};
@@ -38,7 +38,7 @@ const makeMapStateToProps = () => {
class Report extends React.PureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
@@ -47,7 +47,7 @@ class Report extends React.PureComponent {
statusIds: ImmutablePropTypes.orderedSet.isRequired,
comment: PropTypes.string.isRequired,
dispatch: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
componentWillMount () {
diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js
index 9779f4965..f2ae4f259 100644
--- a/app/javascript/mastodon/features/status/components/action_bar.js
+++ b/app/javascript/mastodon/features/status/components/action_bar.js
@@ -18,7 +18,7 @@ const messages = defineMessages({
class ActionBar extends React.PureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
@@ -30,7 +30,7 @@ class ActionBar extends React.PureComponent {
onMention: PropTypes.func.isRequired,
onReport: PropTypes.func,
me: PropTypes.number.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
handleReplyClick = () => {
diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js
index ff3024e35..415587d6e 100644
--- a/app/javascript/mastodon/features/status/components/card.js
+++ b/app/javascript/mastodon/features/status/components/card.js
@@ -1,6 +1,6 @@
import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
-import punycode from 'punycode'
+import punycode from 'punycode';
const IDNA_PREFIX = 'xn--';
@@ -9,7 +9,7 @@ const decodeIDNA = domain => {
.split('.')
.map(part => part.indexOf(IDNA_PREFIX) === 0 ? punycode.decode(part.slice(IDNA_PREFIX.length)) : part)
.join('.');
-}
+};
const getHostname = url => {
const parser = document.createElement('a');
@@ -20,7 +20,7 @@ const getHostname = url => {
class Card extends React.PureComponent {
static propTypes = {
- card: ImmutablePropTypes.map
+ card: ImmutablePropTypes.map,
};
renderLink () {
@@ -95,6 +95,7 @@ class Card extends React.PureComponent {
return null;
}
}
+
}
export default Card;
diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js
index 57077da45..6bbb8ca33 100644
--- a/app/javascript/mastodon/features/status/components/detailed_status.js
+++ b/app/javascript/mastodon/features/status/components/detailed_status.js
@@ -15,7 +15,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
class DetailedStatus extends ImmutablePureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
diff --git a/app/javascript/mastodon/features/status/containers/card_container.js b/app/javascript/mastodon/features/status/containers/card_container.js
index 5c8bfeec2..a97404de1 100644
--- a/app/javascript/mastodon/features/status/containers/card_container.js
+++ b/app/javascript/mastodon/features/status/containers/card_container.js
@@ -2,7 +2,7 @@ import { connect } from 'react-redux';
import Card from '../components/card';
const mapStateToProps = (state, { statusId }) => ({
- card: state.getIn(['cards', statusId], null)
+ card: state.getIn(['cards', statusId], null),
});
export default connect(mapStateToProps)(Card);
diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js
index e2ba1c5b9..24cf3d108 100644
--- a/app/javascript/mastodon/features/status/index.js
+++ b/app/javascript/mastodon/features/status/index.js
@@ -13,30 +13,30 @@ import {
favourite,
unfavourite,
reblog,
- unreblog
+ unreblog,
} from '../../actions/interactions';
import {
replyCompose,
- mentionCompose
+ mentionCompose,
} from '../../actions/compose';
import { deleteStatus } from '../../actions/statuses';
import { initReport } from '../../actions/reports';
import {
makeGetStatus,
getStatusAncestors,
- getStatusDescendants
+ getStatusDescendants,
} from '../../selectors';
import { ScrollContainer } from 'react-router-scroll';
import ColumnBackButton from '../../components/column_back_button';
import StatusContainer from '../../containers/status_container';
import { openModal } from '../../actions/modal';
-import { isMobile } from '../../is_mobile'
+import { isMobile } from '../../is_mobile';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
- deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' }
+ deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },
});
const makeMapStateToProps = () => {
@@ -48,7 +48,7 @@ const makeMapStateToProps = () => {
descendantsIds: state.getIn(['timelines', 'descendants', Number(props.params.statusId)]),
me: state.getIn(['meta', 'me']),
boostModal: state.getIn(['meta', 'boost_modal']),
- autoPlayGif: state.getIn(['meta', 'auto_play_gif'])
+ autoPlayGif: state.getIn(['meta', 'auto_play_gif']),
});
return mapStateToProps;
@@ -57,7 +57,7 @@ const makeMapStateToProps = () => {
class Status extends ImmutablePureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
@@ -69,7 +69,7 @@ class Status extends ImmutablePureComponent {
me: PropTypes.number,
boostModal: PropTypes.bool,
autoPlayGif: PropTypes.bool,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
componentWillMount () {
@@ -116,7 +116,7 @@ class Status extends ImmutablePureComponent {
dispatch(openModal('CONFIRM', {
message: intl.formatMessage(messages.deleteMessage),
confirm: intl.formatMessage(messages.deleteConfirm),
- onConfirm: () => dispatch(deleteStatus(status.get('id')))
+ onConfirm: () => dispatch(deleteStatus(status.get('id'))),
}));
}
diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.js b/app/javascript/mastodon/features/ui/components/boost_modal.js
index 0bd19b18d..fc6b37095 100644
--- a/app/javascript/mastodon/features/ui/components/boost_modal.js
+++ b/app/javascript/mastodon/features/ui/components/boost_modal.js
@@ -11,20 +11,20 @@ import DisplayName from '../../../components/display_name';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
- reblog: { id: 'status.reblog', defaultMessage: 'Boost' }
+ reblog: { id: 'status.reblog', defaultMessage: 'Boost' },
});
class BoostModal extends ImmutablePureComponent {
static contextTypes = {
- router: PropTypes.object
+ router: PropTypes.object,
};
static propTypes = {
status: ImmutablePropTypes.map.isRequired,
onReblog: PropTypes.func.isRequired,
onClose: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
constructor (props, context) {
diff --git a/app/javascript/mastodon/features/ui/components/column.js b/app/javascript/mastodon/features/ui/components/column.js
index bcee674ad..6a8f02bb8 100644
--- a/app/javascript/mastodon/features/ui/components/column.js
+++ b/app/javascript/mastodon/features/ui/components/column.js
@@ -37,7 +37,7 @@ class Column extends React.PureComponent {
icon: PropTypes.string,
children: PropTypes.node,
active: PropTypes.bool,
- hideHeadingOnMobile: PropTypes.bool
+ hideHeadingOnMobile: PropTypes.bool,
};
handleHeaderClick = () => {
@@ -61,11 +61,11 @@ class Column extends React.PureComponent {
render () {
const { heading, icon, children, active, hideHeadingOnMobile } = this.props;
- let columnHeaderId = null
+ let columnHeaderId = null;
let header = '';
if (heading) {
- columnHeaderId = heading.replace(/ /g, '-')
+ columnHeaderId = heading.replace(/ /g, '-');
header = ;
}
return (
diff --git a/app/javascript/mastodon/features/ui/components/column_header.js b/app/javascript/mastodon/features/ui/components/column_header.js
index fd5f27076..578432fec 100644
--- a/app/javascript/mastodon/features/ui/components/column_header.js
+++ b/app/javascript/mastodon/features/ui/components/column_header.js
@@ -1,5 +1,5 @@
import React from 'react';
-import PropTypes from 'prop-types'
+import PropTypes from 'prop-types';
class ColumnHeader extends React.PureComponent {
@@ -9,7 +9,7 @@ class ColumnHeader extends React.PureComponent {
active: PropTypes.bool,
onClick: PropTypes.func,
hideOnMobile: PropTypes.bool,
- columnHeaderId: PropTypes.string
+ columnHeaderId: PropTypes.string,
};
handleClick = () => {
diff --git a/app/javascript/mastodon/features/ui/components/column_link.js b/app/javascript/mastodon/features/ui/components/column_link.js
index dd30b14e0..24387af57 100644
--- a/app/javascript/mastodon/features/ui/components/column_link.js
+++ b/app/javascript/mastodon/features/ui/components/column_link.js
@@ -26,7 +26,7 @@ ColumnLink.propTypes = {
to: PropTypes.string,
href: PropTypes.string,
method: PropTypes.string,
- hideOnMobile: PropTypes.bool
+ hideOnMobile: PropTypes.bool,
};
export default ColumnLink;
diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js
index 588db3abd..ccff417ef 100644
--- a/app/javascript/mastodon/features/ui/components/columns_area.js
+++ b/app/javascript/mastodon/features/ui/components/columns_area.js
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
class ColumnsArea extends React.PureComponent {
static propTypes = {
- children: PropTypes.node
+ children: PropTypes.node,
};
render () {
diff --git a/app/javascript/mastodon/features/ui/components/confirmation_modal.js b/app/javascript/mastodon/features/ui/components/confirmation_modal.js
index bb592a2ed..d0c092737 100644
--- a/app/javascript/mastodon/features/ui/components/confirmation_modal.js
+++ b/app/javascript/mastodon/features/ui/components/confirmation_modal.js
@@ -10,7 +10,7 @@ class ConfirmationModal extends React.PureComponent {
confirm: PropTypes.string.isRequired,
onClose: PropTypes.func.isRequired,
onConfirm: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
handleClick = () => {
diff --git a/app/javascript/mastodon/features/ui/components/media_modal.js b/app/javascript/mastodon/features/ui/components/media_modal.js
index c82ec49e8..a8912841b 100644
--- a/app/javascript/mastodon/features/ui/components/media_modal.js
+++ b/app/javascript/mastodon/features/ui/components/media_modal.js
@@ -9,7 +9,7 @@ import IconButton from '../../../components/icon_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
- close: { id: 'lightbox.close', defaultMessage: 'Close' }
+ close: { id: 'lightbox.close', defaultMessage: 'Close' },
});
class MediaModal extends ImmutablePureComponent {
@@ -18,11 +18,11 @@ class MediaModal extends ImmutablePureComponent {
media: ImmutablePropTypes.list.isRequired,
index: PropTypes.number.isRequired,
onClose: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
state = {
- index: null
+ index: null,
};
handleNextClick = () => {
diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js
index 24b466bc5..13629da41 100644
--- a/app/javascript/mastodon/features/ui/components/modal_root.js
+++ b/app/javascript/mastodon/features/ui/components/modal_root.js
@@ -13,7 +13,7 @@ const MODAL_COMPONENTS = {
'ONBOARDING': OnboardingModal,
'VIDEO': VideoModal,
'BOOST': BoostModal,
- 'CONFIRM': ConfirmationModal
+ 'CONFIRM': ConfirmationModal,
};
class ModalRoot extends React.PureComponent {
@@ -21,7 +21,7 @@ class ModalRoot extends React.PureComponent {
static propTypes = {
type: PropTypes.string,
props: PropTypes.object,
- onClose: PropTypes.func.isRequired
+ onClose: PropTypes.func.isRequired,
};
handleKeyUp = (e) => {
@@ -56,7 +56,7 @@ class ModalRoot extends React.PureComponent {
items.push({
key: type,
data: { type, props },
- style: { opacity: spring(1), scale: spring(1, { stiffness: 120, damping: 14 }) }
+ style: { opacity: spring(1), scale: spring(1, { stiffness: 120, damping: 14 }) },
});
}
diff --git a/app/javascript/mastodon/features/ui/components/onboarding_modal.js b/app/javascript/mastodon/features/ui/components/onboarding_modal.js
index ee20fc94a..2757ff323 100644
--- a/app/javascript/mastodon/features/ui/components/onboarding_modal.js
+++ b/app/javascript/mastodon/features/ui/components/onboarding_modal.js
@@ -18,7 +18,7 @@ const messages = defineMessages({
home_title: { id: 'column.home', defaultMessage: 'Home' },
notifications_title: { id: 'column.notifications', defaultMessage: 'Notifications' },
local_title: { id: 'column.community', defaultMessage: 'Local timeline' },
- federated_title: { id: 'column.public', defaultMessage: 'Federated timeline' }
+ federated_title: { id: 'column.public', defaultMessage: 'Federated timeline' },
});
const PageOne = ({ acct, domain }) => (
@@ -37,7 +37,7 @@ const PageOne = ({ acct, domain }) => (
PageOne.propTypes = {
acct: PropTypes.string.isRequired,
- domain: PropTypes.string.isRequired
+ domain: PropTypes.string.isRequired,
};
const PageTwo = ({ me }) => (
@@ -93,7 +93,7 @@ const PageThree = ({ me, domain }) => (
PageThree.propTypes = {
me: ImmutablePropTypes.map.isRequired,
- domain: PropTypes.string.isRequired
+ domain: PropTypes.string.isRequired,
};
const PageFour = ({ domain, intl }) => (
@@ -128,7 +128,7 @@ const PageFour = ({ domain, intl }) => (
PageFour.propTypes = {
domain: PropTypes.string.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
const PageSix = ({ admin, domain }) => {
@@ -157,13 +157,13 @@ const PageSix = ({ admin, domain }) => {
PageSix.propTypes = {
admin: ImmutablePropTypes.map,
- domain: PropTypes.string.isRequired
+ domain: PropTypes.string.isRequired,
};
const mapStateToProps = state => ({
me: state.getIn(['accounts', state.getIn(['meta', 'me'])]),
admin: state.getIn(['accounts', state.getIn(['meta', 'admin'])]),
- domain: state.getIn(['meta', 'domain'])
+ domain: state.getIn(['meta', 'domain']),
});
class OnboardingModal extends React.PureComponent {
@@ -173,11 +173,11 @@ class OnboardingModal extends React.PureComponent {
intl: PropTypes.object.isRequired,
me: ImmutablePropTypes.map.isRequired,
domain: PropTypes.string.isRequired,
- admin: ImmutablePropTypes.map
+ admin: ImmutablePropTypes.map,
};
state = {
- currentIndex: 0
+ currentIndex: 0,
};
handleSkip = (e) => {
@@ -210,7 +210,7 @@ class OnboardingModal extends React.PureComponent {
,
,
,
-
+ ,
];
const { currentIndex } = this.state;
@@ -226,7 +226,7 @@ class OnboardingModal extends React.PureComponent {
const styles = pages.map((page, i) => ({
key: `page-${i}`,
- style: { opacity: spring(i === currentIndex ? 1 : 0) }
+ style: { opacity: spring(i === currentIndex ? 1 : 0) },
}));
return (
diff --git a/app/javascript/mastodon/features/ui/components/upload_area.js b/app/javascript/mastodon/features/ui/components/upload_area.js
index c7f546588..c40fe1fb9 100644
--- a/app/javascript/mastodon/features/ui/components/upload_area.js
+++ b/app/javascript/mastodon/features/ui/components/upload_area.js
@@ -8,14 +8,14 @@ class UploadArea extends React.PureComponent {
static propTypes = {
active: PropTypes.bool,
- onClose: PropTypes.func
+ onClose: PropTypes.func,
};
handleKeyUp = (e) => {
e.preventDefault();
e.stopPropagation();
- const keyCode = e.keyCode
+ const keyCode = e.keyCode;
if (this.props.active) {
switch(keyCode) {
case 27:
diff --git a/app/javascript/mastodon/features/ui/components/video_modal.js b/app/javascript/mastodon/features/ui/components/video_modal.js
index 86567dcb8..84a2e1b25 100644
--- a/app/javascript/mastodon/features/ui/components/video_modal.js
+++ b/app/javascript/mastodon/features/ui/components/video_modal.js
@@ -8,7 +8,7 @@ import IconButton from '../../../components/icon_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
- close: { id: 'lightbox.close', defaultMessage: 'Close' }
+ close: { id: 'lightbox.close', defaultMessage: 'Close' },
});
class VideoModal extends ImmutablePureComponent {
@@ -17,7 +17,7 @@ class VideoModal extends ImmutablePureComponent {
media: ImmutablePropTypes.map.isRequired,
time: PropTypes.number,
onClose: PropTypes.func.isRequired,
- intl: PropTypes.object.isRequired
+ intl: PropTypes.object.isRequired,
};
render () {
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 6c4e73e38..4bb90fb68 100644
--- a/app/javascript/mastodon/features/ui/containers/loading_bar_container.js
+++ b/app/javascript/mastodon/features/ui/containers/loading_bar_container.js
@@ -2,7 +2,7 @@ import { connect } from 'react-redux';
import LoadingBar from 'react-redux-loading-bar';
const mapStateToProps = (state) => ({
- loading: state.get('loadingBar')
+ loading: state.get('loadingBar'),
});
export default connect(mapStateToProps)(LoadingBar.WrappedComponent);
diff --git a/app/javascript/mastodon/features/ui/containers/modal_container.js b/app/javascript/mastodon/features/ui/containers/modal_container.js
index 26d77818c..2d27180f7 100644
--- a/app/javascript/mastodon/features/ui/containers/modal_container.js
+++ b/app/javascript/mastodon/features/ui/containers/modal_container.js
@@ -4,7 +4,7 @@ import ModalRoot from '../components/modal_root';
const mapStateToProps = state => ({
type: state.get('modal').modalType,
- props: state.get('modal').modalProps
+ props: state.get('modal').modalProps,
});
const mapDispatchToProps = dispatch => ({
diff --git a/app/javascript/mastodon/features/ui/containers/notifications_container.js b/app/javascript/mastodon/features/ui/containers/notifications_container.js
index 529ebf6c8..8bc30df35 100644
--- a/app/javascript/mastodon/features/ui/containers/notifications_container.js
+++ b/app/javascript/mastodon/features/ui/containers/notifications_container.js
@@ -2,19 +2,19 @@ import { connect } from 'react-redux';
import { NotificationStack } from 'react-notification';
import {
dismissAlert,
- clearAlerts
+ clearAlerts,
} from '../../../actions/alerts';
import { getAlerts } from '../../../selectors';
const mapStateToProps = (state, props) => ({
- notifications: getAlerts(state)
+ notifications: getAlerts(state),
});
const mapDispatchToProps = (dispatch) => {
return {
onDismiss: alert => {
dispatch(dismissAlert(alert));
- }
+ },
};
};
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 e0e01cf18..14222fedd 100644
--- a/app/javascript/mastodon/features/ui/containers/status_list_container.js
+++ b/app/javascript/mastodon/features/ui/containers/status_list_container.js
@@ -9,7 +9,7 @@ const makeGetStatusIds = () => createSelector([
(state, { type }) => state.getIn(['settings', type], Immutable.Map()),
(state, { type }) => state.getIn(['timelines', type, 'items'], Immutable.List()),
(state) => state.get('statuses'),
- (state) => state.getIn(['meta', 'me'])
+ (state) => state.getIn(['meta', 'me']),
], (columnSettings, statusIds, statuses, me) => statusIds.filter(id => {
const statusForId = statuses.get(id);
let showStatus = true;
@@ -45,7 +45,7 @@ const makeMapStateToProps = () => {
statusIds: getStatusIds(state, props),
isLoading: state.getIn(['timelines', props.type, 'isLoading'], true),
isUnread: state.getIn(['timelines', props.type, 'unread']) > 0,
- hasMore: !!state.getIn(['timelines', props.type, 'next'])
+ hasMore: !!state.getIn(['timelines', props.type, 'next']),
});
return mapStateToProps;
@@ -64,7 +64,7 @@ const mapDispatchToProps = (dispatch, { type, id }) => ({
onScroll: debounce(() => {
dispatch(scrollTopTimeline(type, false));
- }, 100)
+ }, 100),
});
diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js
index bc465aa5a..af124b1ee 100644
--- a/app/javascript/mastodon/features/ui/index.js
+++ b/app/javascript/mastodon/features/ui/index.js
@@ -22,12 +22,12 @@ class UI extends React.PureComponent {
static propTypes = {
dispatch: PropTypes.func.isRequired,
- children: PropTypes.node
+ children: PropTypes.node,
};
state = {
width: window.innerWidth,
- draggingOver: false
+ draggingOver: false,
};
handleResize = () => {
diff --git a/app/javascript/mastodon/link_header.js b/app/javascript/mastodon/link_header.js
index b872dc24a..a3e7ccf1c 100644
--- a/app/javascript/mastodon/link_header.js
+++ b/app/javascript/mastodon/link_header.js
@@ -2,32 +2,32 @@ import Link from 'http-link-header';
import querystring from 'querystring';
Link.parseAttrs = (link, parts) => {
- let match = null
- let attr = ''
- let value = ''
- let attrs = ''
+ let match = null;
+ let attr = '';
+ let value = '';
+ let attrs = '';
- let uriAttrs = /<(.*)>;\s*(.*)/gi.exec(parts)
+ let uriAttrs = /<(.*)>;\s*(.*)/gi.exec(parts);
if(uriAttrs) {
- attrs = uriAttrs[2]
- link = Link.parseParams(link, uriAttrs[1])
+ attrs = uriAttrs[2];
+ link = Link.parseParams(link, uriAttrs[1]);
}
while(match = Link.attrPattern.exec(attrs)) { // eslint-disable-line no-cond-assign
- attr = match[1].toLowerCase()
- value = match[4] || match[3] || match[2]
+ attr = match[1].toLowerCase();
+ value = match[4] || match[3] || match[2];
if( /\*$/.test(attr)) {
- Link.setAttr(link, attr, Link.parseExtendedValue(value))
+ Link.setAttr(link, attr, Link.parseExtendedValue(value));
} else if(/%/.test(value)) {
- Link.setAttr(link, attr, querystring.decode(value))
+ Link.setAttr(link, attr, querystring.decode(value));
} else {
- Link.setAttr(link, attr, value)
+ Link.setAttr(link, attr, value);
}
}
- return link
+ return link;
};
export default Link;
diff --git a/app/javascript/mastodon/locales/locale-data/oc.js b/app/javascript/mastodon/locales/locale-data/oc.js
index 4abd02a2b..5a85866c8 100644
--- a/app/javascript/mastodon/locales/locale-data/oc.js
+++ b/app/javascript/mastodon/locales/locale-data/oc.js
@@ -12,96 +12,96 @@ export default [{
relative: {
0: "ongan",
1: "l'an que ven",
- "-1": "l'an passat"
+ "-1": "l'an passat",
},
relativeTime: {
future: {
one: "dins {0} an",
- other: "dins {0} ans"
+ other: "dins {0} ans",
},
past: {
one: "fa {0} an",
- other: "fa {0} ans"
- }
- }
+ other: "fa {0} ans",
+ },
+ },
},
month: {
displayName: "mes",
relative: {
0: "aqueste mes",
1: "lo mes que ven",
- "-1": "lo mes passat"
+ "-1": "lo mes passat",
},
relativeTime: {
future: {
one: "dins {0} mes",
- other: "dins {0} meses"
+ other: "dins {0} meses",
},
past: {
one: "fa {0} mes",
- other: "fa {0} meses"
- }
- }
+ other: "fa {0} meses",
+ },
+ },
},
day: {
displayName: "jorn",
relative: {
0: "uèi",
1: "deman",
- "-1": "ièr"
+ "-1": "ièr",
},
relativeTime: {
future: {
one: "dins {0} jorn",
- other: "dins {0} jorns"
+ other: "dins {0} jorns",
},
past: {
one: "fa {0} jorn",
- other: "fa {0} jorns"
- }
- }
+ other: "fa {0} jorns",
+ },
+ },
},
hour: {
displayName: "ora",
relativeTime: {
future: {
one: "dins {0} ora",
- other: "dins {0} oras"
+ other: "dins {0} oras",
},
past: {
one: "fa {0} ora",
- other: "fa {0} oras"
- }
- }
+ other: "fa {0} oras",
+ },
+ },
},
minute: {
displayName: "minuta",
relativeTime: {
future: {
one: "dins {0} minuta",
- other: "dins {0} minutas"
+ other: "dins {0} minutas",
},
past: {
one: "fa {0} minuta",
- other: "fa {0} minutas"
- }
- }
+ other: "fa {0} minutas",
+ },
+ },
},
second: {
displayName: "segonda",
relative: {
- 0: "ara"
+ 0: "ara",
},
relativeTime: {
future: {
one: "dins {0} segonda",
- other: "dins {0} segondas"
+ other: "dins {0} segondas",
},
past: {
one: "fa {0} segonda",
- other: "fa {0} segondas"
- }
- }
- }
- }
-}]
+ other: "fa {0} segondas",
+ },
+ },
+ },
+ },
+}];
diff --git a/app/javascript/mastodon/main.js b/app/javascript/mastodon/main.js
index 313721c88..d11cb8521 100644
--- a/app/javascript/mastodon/main.js
+++ b/app/javascript/mastodon/main.js
@@ -32,4 +32,4 @@ function main() {
});
}
-export default main
+export default main;
diff --git a/app/javascript/mastodon/middleware/sounds.js b/app/javascript/mastodon/middleware/sounds.js
index 639214b14..fd5a2b960 100644
--- a/app/javascript/mastodon/middleware/sounds.js
+++ b/app/javascript/mastodon/middleware/sounds.js
@@ -7,7 +7,7 @@ const createAudio = sources => {
audio.appendChild(source);
});
return audio;
-}
+};
const play = audio => {
if (!audio.paused) {
@@ -27,7 +27,7 @@ export default function soundsMiddleware() {
},
{
src: '/sounds/boop.mp3',
- type: 'audio/mpeg'
+ type: 'audio/mpeg',
},
]),
};
diff --git a/app/javascript/mastodon/reducers/accounts.js b/app/javascript/mastodon/reducers/accounts.js
index b3c2b6d88..d4d9ad62e 100644
--- a/app/javascript/mastodon/reducers/accounts.js
+++ b/app/javascript/mastodon/reducers/accounts.js
@@ -7,15 +7,15 @@ import {
ACCOUNT_TIMELINE_FETCH_SUCCESS,
ACCOUNT_TIMELINE_EXPAND_SUCCESS,
FOLLOW_REQUESTS_FETCH_SUCCESS,
- FOLLOW_REQUESTS_EXPAND_SUCCESS
+ FOLLOW_REQUESTS_EXPAND_SUCCESS,
} from '../actions/accounts';
import {
BLOCKS_FETCH_SUCCESS,
- BLOCKS_EXPAND_SUCCESS
+ BLOCKS_EXPAND_SUCCESS,
} from '../actions/blocks';
import {
MUTES_FETCH_SUCCESS,
- MUTES_EXPAND_SUCCESS
+ MUTES_EXPAND_SUCCESS,
} from '../actions/mutes';
import { COMPOSE_SUGGESTIONS_READY } from '../actions/compose';
import {
@@ -24,26 +24,26 @@ import {
FAVOURITE_SUCCESS,
UNFAVOURITE_SUCCESS,
REBLOGS_FETCH_SUCCESS,
- FAVOURITES_FETCH_SUCCESS
+ FAVOURITES_FETCH_SUCCESS,
} from '../actions/interactions';
import {
TIMELINE_REFRESH_SUCCESS,
TIMELINE_UPDATE,
- TIMELINE_EXPAND_SUCCESS
+ TIMELINE_EXPAND_SUCCESS,
} from '../actions/timelines';
import {
STATUS_FETCH_SUCCESS,
- CONTEXT_FETCH_SUCCESS
+ CONTEXT_FETCH_SUCCESS,
} from '../actions/statuses';
import { SEARCH_FETCH_SUCCESS } from '../actions/search';
import {
NOTIFICATIONS_UPDATE,
NOTIFICATIONS_REFRESH_SUCCESS,
- NOTIFICATIONS_EXPAND_SUCCESS
+ NOTIFICATIONS_EXPAND_SUCCESS,
} from '../actions/notifications';
import {
FAVOURITED_STATUSES_FETCH_SUCCESS,
- FAVOURITED_STATUSES_EXPAND_SUCCESS
+ FAVOURITED_STATUSES_EXPAND_SUCCESS,
} from '../actions/favourites';
import { STORE_HYDRATE } from '../actions/store';
import Immutable from 'immutable';
@@ -55,7 +55,7 @@ const normalizeAccount = (state, account) => {
delete account.following_count;
delete account.statuses_count;
- return state.set(account.id, Immutable.fromJS(account))
+ return state.set(account.id, Immutable.fromJS(account));
};
const normalizeAccounts = (state, accounts) => {
diff --git a/app/javascript/mastodon/reducers/accounts_counters.js b/app/javascript/mastodon/reducers/accounts_counters.js
index f0433c48c..ea631ceca 100644
--- a/app/javascript/mastodon/reducers/accounts_counters.js
+++ b/app/javascript/mastodon/reducers/accounts_counters.js
@@ -9,15 +9,15 @@ import {
FOLLOW_REQUESTS_FETCH_SUCCESS,
FOLLOW_REQUESTS_EXPAND_SUCCESS,
ACCOUNT_FOLLOW_SUCCESS,
- ACCOUNT_UNFOLLOW_SUCCESS
+ ACCOUNT_UNFOLLOW_SUCCESS,
} from '../actions/accounts';
import {
BLOCKS_FETCH_SUCCESS,
- BLOCKS_EXPAND_SUCCESS
+ BLOCKS_EXPAND_SUCCESS,
} from '../actions/blocks';
import {
MUTES_FETCH_SUCCESS,
- MUTES_EXPAND_SUCCESS
+ MUTES_EXPAND_SUCCESS,
} from '../actions/mutes';
import { COMPOSE_SUGGESTIONS_READY } from '../actions/compose';
import {
@@ -26,26 +26,26 @@ import {
FAVOURITE_SUCCESS,
UNFAVOURITE_SUCCESS,
REBLOGS_FETCH_SUCCESS,
- FAVOURITES_FETCH_SUCCESS
+ FAVOURITES_FETCH_SUCCESS,
} from '../actions/interactions';
import {
TIMELINE_REFRESH_SUCCESS,
TIMELINE_UPDATE,
- TIMELINE_EXPAND_SUCCESS
+ TIMELINE_EXPAND_SUCCESS,
} from '../actions/timelines';
import {
STATUS_FETCH_SUCCESS,
- CONTEXT_FETCH_SUCCESS
+ CONTEXT_FETCH_SUCCESS,
} from '../actions/statuses';
import { SEARCH_FETCH_SUCCESS } from '../actions/search';
import {
NOTIFICATIONS_UPDATE,
NOTIFICATIONS_REFRESH_SUCCESS,
- NOTIFICATIONS_EXPAND_SUCCESS
+ NOTIFICATIONS_EXPAND_SUCCESS,
} from '../actions/notifications';
import {
FAVOURITED_STATUSES_FETCH_SUCCESS,
- FAVOURITED_STATUSES_EXPAND_SUCCESS
+ FAVOURITED_STATUSES_EXPAND_SUCCESS,
} from '../actions/favourites';
import { STORE_HYDRATE } from '../actions/store';
import Immutable from 'immutable';
@@ -90,7 +90,7 @@ export default function accountsCounters(state = initialState, action) {
return state.merge(action.state.get('accounts').map(item => Immutable.fromJS({
followers_count: item.get('followers_count'),
following_count: item.get('following_count'),
- statuses_count: item.get('statuses_count')
+ statuses_count: item.get('statuses_count'),
})));
case ACCOUNT_FETCH_SUCCESS:
case NOTIFICATIONS_UPDATE:
diff --git a/app/javascript/mastodon/reducers/alerts.js b/app/javascript/mastodon/reducers/alerts.js
index dc0145824..aaea9775f 100644
--- a/app/javascript/mastodon/reducers/alerts.js
+++ b/app/javascript/mastodon/reducers/alerts.js
@@ -1,7 +1,7 @@
import {
ALERT_SHOW,
ALERT_DISMISS,
- ALERT_CLEAR
+ ALERT_CLEAR,
} from '../actions/alerts';
import Immutable from 'immutable';
@@ -13,7 +13,7 @@ export default function alerts(state = initialState, action) {
return state.push(Immutable.Map({
key: state.size > 0 ? state.last().get('key') + 1 : 0,
title: action.title,
- message: action.message
+ message: action.message,
}));
case ALERT_DISMISS:
return state.filterNot(item => item.get('key') === action.alert.key);
diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js
index c87384780..2413df9e2 100644
--- a/app/javascript/mastodon/reducers/compose.js
+++ b/app/javascript/mastodon/reducers/compose.js
@@ -21,7 +21,7 @@ import {
COMPOSE_SPOILER_TEXT_CHANGE,
COMPOSE_VISIBILITY_CHANGE,
COMPOSE_LISTABILITY_CHANGE,
- COMPOSE_EMOJI_INSERT
+ COMPOSE_EMOJI_INSERT,
} from '../actions/compose';
import { TIMELINE_DELETE } from '../actions/timelines';
import { STORE_HYDRATE } from '../actions/store';
@@ -47,7 +47,7 @@ const initialState = Immutable.Map({
me: null,
default_privacy: 'public',
resetFileKey: Math.floor((Math.random() * 0x10000)),
- idempotencyKey: null
+ idempotencyKey: null,
});
function statusToTextMentions(state, status) {
diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js
index 0665f494b..c4fe28ea7 100644
--- a/app/javascript/mastodon/reducers/index.js
+++ b/app/javascript/mastodon/reducers/index.js
@@ -36,5 +36,5 @@ export default combineReducers({
notifications,
settings,
cards,
- reports
+ reports,
});
diff --git a/app/javascript/mastodon/reducers/meta.js b/app/javascript/mastodon/reducers/meta.js
index acf6d4be1..1551228ec 100644
--- a/app/javascript/mastodon/reducers/meta.js
+++ b/app/javascript/mastodon/reducers/meta.js
@@ -4,7 +4,7 @@ import Immutable from 'immutable';
const initialState = Immutable.Map({
streaming_api_base_url: null,
access_token: null,
- me: null
+ me: null,
});
export default function meta(state = initialState, action) {
diff --git a/app/javascript/mastodon/reducers/modal.js b/app/javascript/mastodon/reducers/modal.js
index 3566820ef..8fd9a69cd 100644
--- a/app/javascript/mastodon/reducers/modal.js
+++ b/app/javascript/mastodon/reducers/modal.js
@@ -3,7 +3,7 @@ import Immutable from 'immutable';
const initialState = {
modalType: null,
- modalProps: {}
+ modalProps: {},
};
export default function modal(state = initialState, action) {
diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js
index ae06b8267..0c1cf5b0f 100644
--- a/app/javascript/mastodon/reducers/notifications.js
+++ b/app/javascript/mastodon/reducers/notifications.js
@@ -7,7 +7,7 @@ import {
NOTIFICATIONS_REFRESH_FAIL,
NOTIFICATIONS_EXPAND_FAIL,
NOTIFICATIONS_CLEAR,
- NOTIFICATIONS_SCROLL_TOP
+ NOTIFICATIONS_SCROLL_TOP,
} from '../actions/notifications';
import { ACCOUNT_BLOCK_SUCCESS } from '../actions/accounts';
import { TIMELINE_DELETE } from '../actions/timelines';
@@ -19,14 +19,14 @@ const initialState = Immutable.Map({
top: true,
unread: 0,
loaded: false,
- isLoading: true
+ isLoading: true,
});
const notificationToMap = notification => Immutable.Map({
id: notification.id,
type: notification.type,
account: notification.account.id,
- status: notification.status ? notification.status.id : null
+ status: notification.status ? notification.status.id : null,
});
const normalizeNotification = (state, notification) => {
diff --git a/app/javascript/mastodon/reducers/relationships.js b/app/javascript/mastodon/reducers/relationships.js
index f25c0b55a..b6607860c 100644
--- a/app/javascript/mastodon/reducers/relationships.js
+++ b/app/javascript/mastodon/reducers/relationships.js
@@ -5,11 +5,11 @@ import {
ACCOUNT_UNBLOCK_SUCCESS,
ACCOUNT_MUTE_SUCCESS,
ACCOUNT_UNMUTE_SUCCESS,
- RELATIONSHIPS_FETCH_SUCCESS
+ RELATIONSHIPS_FETCH_SUCCESS,
} from '../actions/accounts';
import {
DOMAIN_BLOCK_SUCCESS,
- DOMAIN_UNBLOCK_SUCCESS
+ DOMAIN_UNBLOCK_SUCCESS,
} from '../actions/domain_blocks';
import Immutable from 'immutable';
diff --git a/app/javascript/mastodon/reducers/reports.js b/app/javascript/mastodon/reducers/reports.js
index eab004377..ad35eaa05 100644
--- a/app/javascript/mastodon/reducers/reports.js
+++ b/app/javascript/mastodon/reducers/reports.js
@@ -5,7 +5,7 @@ import {
REPORT_SUBMIT_FAIL,
REPORT_CANCEL,
REPORT_STATUS_TOGGLE,
- REPORT_COMMENT_CHANGE
+ REPORT_COMMENT_CHANGE,
} from '../actions/reports';
import Immutable from 'immutable';
@@ -14,8 +14,8 @@ const initialState = Immutable.Map({
isSubmitting: false,
account_id: null,
status_ids: Immutable.Set(),
- comment: ''
- })
+ comment: '',
+ }),
});
export default function reports(state = initialState, action) {
diff --git a/app/javascript/mastodon/reducers/search.js b/app/javascript/mastodon/reducers/search.js
index b3fe6c7be..ed395427e 100644
--- a/app/javascript/mastodon/reducers/search.js
+++ b/app/javascript/mastodon/reducers/search.js
@@ -2,7 +2,7 @@ import {
SEARCH_CHANGE,
SEARCH_CLEAR,
SEARCH_FETCH_SUCCESS,
- SEARCH_SHOW
+ SEARCH_SHOW,
} from '../actions/search';
import { COMPOSE_MENTION, COMPOSE_REPLY } from '../actions/compose';
import Immutable from 'immutable';
@@ -11,7 +11,7 @@ const initialState = Immutable.Map({
value: '',
submitted: false,
hidden: false,
- results: Immutable.Map()
+ results: Immutable.Map(),
});
const normalizeSuggestions = (state, value, accounts, hashtags, statuses) => {
@@ -23,8 +23,8 @@ const normalizeSuggestions = (state, value, accounts, hashtags, statuses) => {
items: accounts.map(item => ({
type: 'account',
id: item.id,
- value: item.acct
- }))
+ value: item.acct,
+ })),
});
}
@@ -32,21 +32,21 @@ const normalizeSuggestions = (state, value, accounts, hashtags, statuses) => {
let hashtagItems = hashtags.map(item => ({
type: 'hashtag',
id: item,
- value: `#${item}`
+ value: `#${item}`,
}));
if (value.indexOf('@') === -1 && value.indexOf(' ') === -1 && !value.startsWith('http://') && !value.startsWith('https://') && hashtags.indexOf(value) === -1) {
hashtagItems.unshift({
type: 'hashtag',
id: value,
- value: `#${value}`
+ value: `#${value}`,
});
}
if (hashtagItems.length > 0) {
newSuggestions.push({
title: 'hashtag',
- items: hashtagItems
+ items: hashtagItems,
});
}
}
@@ -57,8 +57,8 @@ const normalizeSuggestions = (state, value, accounts, hashtags, statuses) => {
items: statuses.map(item => ({
type: 'status',
id: item.id,
- value: item.id
- }))
+ value: item.id,
+ })),
});
}
@@ -88,7 +88,7 @@ export default function search(state = initialState, action) {
return state.set('results', Immutable.Map({
accounts: Immutable.List(action.results.accounts.map(item => item.id)),
statuses: Immutable.List(action.results.statuses.map(item => item.id)),
- hashtags: Immutable.List(action.results.hashtags)
+ hashtags: Immutable.List(action.results.hashtags),
})).set('submitted', true);
default:
return state;
diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js
index b255aabc4..ababd4983 100644
--- a/app/javascript/mastodon/reducers/settings.js
+++ b/app/javascript/mastodon/reducers/settings.js
@@ -8,12 +8,12 @@ const initialState = Immutable.Map({
home: Immutable.Map({
shows: Immutable.Map({
reblog: true,
- reply: true
+ reply: true,
}),
regex: Immutable.Map({
- body: ''
- })
+ body: '',
+ }),
}),
notifications: Immutable.Map({
@@ -21,23 +21,23 @@ const initialState = Immutable.Map({
follow: true,
favourite: true,
reblog: true,
- mention: true
+ mention: true,
}),
shows: Immutable.Map({
follow: true,
favourite: true,
reblog: true,
- mention: true
+ mention: true,
}),
sounds: Immutable.Map({
follow: true,
favourite: true,
reblog: true,
- mention: true
- })
- })
+ mention: true,
+ }),
+ }),
});
export default function settings(state = initialState, action) {
diff --git a/app/javascript/mastodon/reducers/status_lists.js b/app/javascript/mastodon/reducers/status_lists.js
index fd463cd63..7d00f6d30 100644
--- a/app/javascript/mastodon/reducers/status_lists.js
+++ b/app/javascript/mastodon/reducers/status_lists.js
@@ -1,6 +1,6 @@
import {
FAVOURITED_STATUSES_FETCH_SUCCESS,
- FAVOURITED_STATUSES_EXPAND_SUCCESS
+ FAVOURITED_STATUSES_EXPAND_SUCCESS,
} from '../actions/favourites';
import Immutable from 'immutable';
@@ -8,8 +8,8 @@ const initialState = Immutable.Map({
favourites: Immutable.Map({
next: null,
loaded: false,
- items: Immutable.List()
- })
+ items: Immutable.List(),
+ }),
});
const normalizeList = (state, listType, statuses, next) => {
diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js
index 6d38d905d..7bc3710c4 100644
--- a/app/javascript/mastodon/reducers/statuses.js
+++ b/app/javascript/mastodon/reducers/statuses.js
@@ -6,35 +6,35 @@ import {
FAVOURITE_REQUEST,
FAVOURITE_SUCCESS,
FAVOURITE_FAIL,
- UNFAVOURITE_SUCCESS
+ UNFAVOURITE_SUCCESS,
} from '../actions/interactions';
import {
STATUS_FETCH_SUCCESS,
CONTEXT_FETCH_SUCCESS,
STATUS_MUTE_SUCCESS,
- STATUS_UNMUTE_SUCCESS
+ STATUS_UNMUTE_SUCCESS,
} from '../actions/statuses';
import {
TIMELINE_REFRESH_SUCCESS,
TIMELINE_UPDATE,
TIMELINE_DELETE,
- TIMELINE_EXPAND_SUCCESS
+ TIMELINE_EXPAND_SUCCESS,
} from '../actions/timelines';
import {
ACCOUNT_TIMELINE_FETCH_SUCCESS,
ACCOUNT_TIMELINE_EXPAND_SUCCESS,
ACCOUNT_MEDIA_TIMELINE_FETCH_SUCCESS,
ACCOUNT_MEDIA_TIMELINE_EXPAND_SUCCESS,
- ACCOUNT_BLOCK_SUCCESS
+ ACCOUNT_BLOCK_SUCCESS,
} from '../actions/accounts';
import {
NOTIFICATIONS_UPDATE,
NOTIFICATIONS_REFRESH_SUCCESS,
- NOTIFICATIONS_EXPAND_SUCCESS
+ NOTIFICATIONS_EXPAND_SUCCESS,
} from '../actions/notifications';
import {
FAVOURITED_STATUSES_FETCH_SUCCESS,
- FAVOURITED_STATUSES_EXPAND_SUCCESS
+ FAVOURITED_STATUSES_EXPAND_SUCCESS,
} from '../actions/favourites';
import { SEARCH_FETCH_SUCCESS } from '../actions/search';
import Immutable from 'immutable';
diff --git a/app/javascript/mastodon/reducers/timelines.js b/app/javascript/mastodon/reducers/timelines.js
index 5c37b0dcb..2e95d645e 100644
--- a/app/javascript/mastodon/reducers/timelines.js
+++ b/app/javascript/mastodon/reducers/timelines.js
@@ -9,13 +9,13 @@ import {
TIMELINE_EXPAND_FAIL,
TIMELINE_SCROLL_TOP,
TIMELINE_CONNECT,
- TIMELINE_DISCONNECT
+ TIMELINE_DISCONNECT,
} from '../actions/timelines';
import {
REBLOG_SUCCESS,
UNREBLOG_SUCCESS,
FAVOURITE_SUCCESS,
- UNFAVOURITE_SUCCESS
+ UNFAVOURITE_SUCCESS,
} from '../actions/interactions';
import {
ACCOUNT_TIMELINE_FETCH_REQUEST,
@@ -31,10 +31,10 @@ import {
ACCOUNT_MEDIA_TIMELINE_EXPAND_SUCCESS,
ACCOUNT_MEDIA_TIMELINE_EXPAND_FAIL,
ACCOUNT_BLOCK_SUCCESS,
- ACCOUNT_MUTE_SUCCESS
+ ACCOUNT_MUTE_SUCCESS,
} from '../actions/accounts';
import {
- CONTEXT_FETCH_SUCCESS
+ CONTEXT_FETCH_SUCCESS,
} from '../actions/statuses';
import Immutable from 'immutable';
@@ -47,7 +47,7 @@ const initialState = Immutable.Map({
loaded: false,
top: true,
unread: 0,
- items: Immutable.List()
+ items: Immutable.List(),
}),
public: Immutable.Map({
@@ -58,7 +58,7 @@ const initialState = Immutable.Map({
loaded: false,
top: true,
unread: 0,
- items: Immutable.List()
+ items: Immutable.List(),
}),
community: Immutable.Map({
@@ -70,7 +70,7 @@ const initialState = Immutable.Map({
loaded: false,
top: true,
unread: 0,
- items: Immutable.List()
+ items: Immutable.List(),
}),
tag: Immutable.Map({
@@ -81,13 +81,13 @@ const initialState = Immutable.Map({
loaded: false,
top: true,
unread: 0,
- items: Immutable.List()
+ items: Immutable.List(),
}),
accounts_timelines: Immutable.Map(),
accounts_media_timelines: Immutable.Map(),
ancestors: Immutable.Map(),
- descendants: Immutable.Map()
+ descendants: Immutable.Map(),
});
const normalizeStatus = (state, status) => {
diff --git a/app/javascript/mastodon/reducers/user_lists.js b/app/javascript/mastodon/reducers/user_lists.js
index af9492119..83bf1be1b 100644
--- a/app/javascript/mastodon/reducers/user_lists.js
+++ b/app/javascript/mastodon/reducers/user_lists.js
@@ -6,19 +6,19 @@ import {
FOLLOW_REQUESTS_FETCH_SUCCESS,
FOLLOW_REQUESTS_EXPAND_SUCCESS,
FOLLOW_REQUEST_AUTHORIZE_SUCCESS,
- FOLLOW_REQUEST_REJECT_SUCCESS
+ FOLLOW_REQUEST_REJECT_SUCCESS,
} from '../actions/accounts';
import {
REBLOGS_FETCH_SUCCESS,
- FAVOURITES_FETCH_SUCCESS
+ FAVOURITES_FETCH_SUCCESS,
} from '../actions/interactions';
import {
BLOCKS_FETCH_SUCCESS,
- BLOCKS_EXPAND_SUCCESS
+ BLOCKS_EXPAND_SUCCESS,
} from '../actions/blocks';
import {
MUTES_FETCH_SUCCESS,
- MUTES_EXPAND_SUCCESS
+ MUTES_EXPAND_SUCCESS,
} from '../actions/mutes';
import Immutable from 'immutable';
@@ -29,13 +29,13 @@ const initialState = Immutable.Map({
favourited_by: Immutable.Map(),
follow_requests: Immutable.Map(),
blocks: Immutable.Map(),
- mutes: Immutable.Map()
+ mutes: Immutable.Map(),
});
const normalizeList = (state, type, id, accounts, next) => {
return state.setIn([type, id], Immutable.Map({
next,
- items: Immutable.List(accounts.map(item => item.id))
+ items: Immutable.List(accounts.map(item => item.id)),
}));
};
diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js
index f1697cc2d..0d2ef2ea9 100644
--- a/app/javascript/mastodon/selectors/index.js
+++ b/app/javascript/mastodon/selectors/index.js
@@ -58,8 +58,8 @@ export const getAlerts = createSelector([getAlertsBase], (base) => {
key: item.get('key'),
dismissAfter: 5000,
barStyle: {
- zIndex: 200
- }
+ zIndex: 200,
+ },
});
});
@@ -69,7 +69,7 @@ export const getAlerts = createSelector([getAlertsBase], (base) => {
export const makeGetNotification = () => {
return createSelector([
(_, base) => base,
- (state, _, accountId) => state.getIn(['accounts', accountId])
+ (state, _, accountId) => state.getIn(['accounts', accountId]),
], (base, account) => {
return base.set('account', account);
});
diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
index ea5b9f8f7..ca6b476e1 100644
--- a/app/javascript/packs/application.js
+++ b/app/javascript/packs/application.js
@@ -4,7 +4,7 @@ if (!window.Intl || !Object.assign || !Number.isNaN ||
!window.Symbol || !Array.prototype.includes) {
// load polyfills dynamically
import('../mastodon/polyfills').then(main).catch(e => {
- console.error(e) // eslint-disable-line no-console
+ console.error(e); // eslint-disable-line no-console
});
} else {
main();
diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js
index 3bd7d7cf0..19dd7fdee 100644
--- a/app/javascript/packs/public.js
+++ b/app/javascript/packs/public.js
@@ -96,12 +96,12 @@ document.addEventListener('DOMContentLoaded', () => {
});
delegate(document, '.account_display_name', 'input', ({ target }) => {
- const [nameCounter, ] = document.getElementsByClassName('name-counter');
+ const [nameCounter ] = document.getElementsByClassName('name-counter');
nameCounter.textContent = 30 - length(target.value);
});
delegate(document, '.account_note', 'input', ({ target }) => {
- const [noteCounter, ] = document.getElementsByClassName('note-counter');
+ const [noteCounter ] = document.getElementsByClassName('note-counter');
noteCounter.textContent = 160 - length(target.value);
});
});
diff --git a/config/webpack/configuration.js b/config/webpack/configuration.js
index e2f8d2d8b..922e8c517 100644
--- a/config/webpack/configuration.js
+++ b/config/webpack/configuration.js
@@ -1,20 +1,20 @@
// Common configuration for webpacker loaded from config/webpack/paths.yml
-const { join, resolve } = require('path')
-const { env } = require('process')
-const { safeLoad } = require('js-yaml')
-const { readFileSync } = require('fs')
+const { join, resolve } = require('path');
+const { env } = require('process');
+const { safeLoad } = require('js-yaml');
+const { readFileSync } = require('fs');
-const configPath = resolve('config', 'webpack')
-const loadersDir = join(__dirname, 'loaders')
-const paths = safeLoad(readFileSync(join(configPath, 'paths.yml'), 'utf8'))[env.NODE_ENV || 'development']
-const devServer = safeLoad(readFileSync(join(configPath, 'development.server.yml'), 'utf8'))[env.NODE_ENV || 'development']
+const configPath = resolve('config', 'webpack');
+const loadersDir = join(__dirname, 'loaders');
+const paths = safeLoad(readFileSync(join(configPath, 'paths.yml'), 'utf8'))[env.NODE_ENV || 'development'];
+const devServer = safeLoad(readFileSync(join(configPath, 'development.server.yml'), 'utf8'))[env.NODE_ENV || 'development'];
// Compute public path based on environment and CDN_HOST in production
-const ifHasCDN = env.CDN_HOST !== undefined && env.NODE_ENV === 'production'
-const devServerUrl = `http://${devServer.host}:${devServer.port}/${paths.entry}/`
-const publicUrl = ifHasCDN ? `${env.CDN_HOST}/${paths.entry}/` : `/${paths.entry}/`
-const publicPath = env.NODE_ENV !== 'production' ? devServerUrl : publicUrl
+const ifHasCDN = env.CDN_HOST !== undefined && env.NODE_ENV === 'production';
+const devServerUrl = `http://${devServer.host}:${devServer.port}/${paths.entry}/`;
+const publicUrl = ifHasCDN ? `${env.CDN_HOST}/${paths.entry}/` : `/${paths.entry}/`;
+const publicPath = env.NODE_ENV !== 'production' ? devServerUrl : publicUrl;
module.exports = {
devServer,
@@ -22,5 +22,5 @@ module.exports = {
paths,
loadersDir,
publicUrl,
- publicPath
-}
+ publicPath,
+};
diff --git a/config/webpack/development.js b/config/webpack/development.js
index 398fcffe3..f6235f42e 100644
--- a/config/webpack/development.js
+++ b/config/webpack/development.js
@@ -1,16 +1,16 @@
// Note: You must restart bin/webpack-dev-server for changes to take effect
-const merge = require('webpack-merge')
-const sharedConfig = require('./shared.js')
+const merge = require('webpack-merge');
+const sharedConfig = require('./shared.js');
module.exports = merge(sharedConfig, {
devtool: 'cheap-module-eval-source-map',
stats: {
- errorDetails: true
+ errorDetails: true,
},
output: {
- pathinfo: true
- }
-})
+ pathinfo: true,
+ },
+});
diff --git a/config/webpack/development.server.js b/config/webpack/development.server.js
index 455daad2c..296df1504 100644
--- a/config/webpack/development.server.js
+++ b/config/webpack/development.server.js
@@ -1,9 +1,9 @@
// Note: You must restart bin/webpack-dev-server for changes to take effect
-const { resolve } = require('path')
-const merge = require('webpack-merge')
-const devConfig = require('./development.js')
-const { devServer, publicPath, paths } = require('./configuration.js')
+const { resolve } = require('path');
+const merge = require('webpack-merge');
+const devConfig = require('./development.js');
+const { devServer, publicPath, paths } = require('./configuration.js');
module.exports = merge(devConfig, {
devServer: {
@@ -14,6 +14,6 @@ module.exports = merge(devConfig, {
historyApiFallback: true,
contentBase: resolve(paths.output, paths.entry),
publicPath,
- disableHostCheck: true
- }
-})
+ disableHostCheck: true,
+ },
+});
diff --git a/config/webpack/loaders/assets.js b/config/webpack/loaders/assets.js
index 595f073fc..643b3eeb0 100644
--- a/config/webpack/loaders/assets.js
+++ b/config/webpack/loaders/assets.js
@@ -1,4 +1,4 @@
-const { env, publicPath } = require('../configuration.js')
+const { env, publicPath } = require('../configuration.js');
module.exports = {
test: /\.(jpg|jpeg|png|gif|svg|eot|ttf|woff|woff2)$/i,
@@ -6,7 +6,7 @@ module.exports = {
loader: 'file-loader',
options: {
publicPath,
- name: env.NODE_ENV === 'production' ? '[name]-[hash].[ext]' : '[name].[ext]'
- }
- }]
-}
+ name: env.NODE_ENV === 'production' ? '[name]-[hash].[ext]' : '[name].[ext]',
+ },
+ }],
+};
diff --git a/config/webpack/loaders/babel.js b/config/webpack/loaders/babel.js
index e58d0633e..8cd9170a2 100644
--- a/config/webpack/loaders/babel.js
+++ b/config/webpack/loaders/babel.js
@@ -3,6 +3,6 @@ module.exports = {
exclude: /node_modules/,
loader: 'babel-loader',
options: {
- forceEnv: process.env.NODE_ENV || 'development'
- }
-}
+ forceEnv: process.env.NODE_ENV || 'development',
+ },
+};
diff --git a/config/webpack/loaders/coffee.js b/config/webpack/loaders/coffee.js
index dae874249..416f787fe 100644
--- a/config/webpack/loaders/coffee.js
+++ b/config/webpack/loaders/coffee.js
@@ -1,4 +1,4 @@
module.exports = {
test: /\.coffee(\.erb)?$/,
- loader: 'coffee-loader'
-}
+ loader: 'coffee-loader',
+};
diff --git a/config/webpack/loaders/erb.js b/config/webpack/loaders/erb.js
index 4cd7d6849..5b523f8d1 100644
--- a/config/webpack/loaders/erb.js
+++ b/config/webpack/loaders/erb.js
@@ -4,6 +4,6 @@ module.exports = {
exclude: /node_modules/,
loader: 'rails-erb-loader',
options: {
- runner: 'bin/rails runner'
- }
-}
+ runner: 'bin/rails runner',
+ },
+};
diff --git a/config/webpack/loaders/sass.js b/config/webpack/loaders/sass.js
index 2cb0e759a..24abf1685 100644
--- a/config/webpack/loaders/sass.js
+++ b/config/webpack/loaders/sass.js
@@ -1,5 +1,5 @@
-const ExtractTextPlugin = require('extract-text-webpack-plugin')
-const { env } = require('../configuration.js')
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const { env } = require('../configuration.js');
module.exports = {
test: /\.(scss|sass|css)$/i,
@@ -8,7 +8,7 @@ module.exports = {
use: [
{ loader: 'css-loader', options: { minimize: env.NODE_ENV === 'production' } },
'postcss-loader',
- 'sass-loader'
- ]
- })
-}
+ 'sass-loader',
+ ],
+ }),
+};
diff --git a/config/webpack/production.js b/config/webpack/production.js
index 261bfdd70..6969f04a8 100644
--- a/config/webpack/production.js
+++ b/config/webpack/production.js
@@ -2,10 +2,10 @@
/* eslint global-require: 0 */
-const webpack = require('webpack')
-const merge = require('webpack-merge')
-const CompressionPlugin = require('compression-webpack-plugin')
-const sharedConfig = require('./shared.js')
+const webpack = require('webpack');
+const merge = require('webpack-merge');
+const CompressionPlugin = require('compression-webpack-plugin');
+const sharedConfig = require('./shared.js');
module.exports = merge(sharedConfig, {
@@ -19,15 +19,15 @@ module.exports = merge(sharedConfig, {
mangle: true,
output: {
- comments: false
+ comments: false,
},
- sourceMap: true
+ sourceMap: true,
}),
new CompressionPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
- test: /\.(js|css|svg|eot|ttf|woff|woff2)$/
- })
- ]
-})
+ test: /\.(js|css|svg|eot|ttf|woff|woff2)$/,
+ }),
+ ],
+});
diff --git a/config/webpack/shared.js b/config/webpack/shared.js
index 008218808..4986ea24d 100644
--- a/config/webpack/shared.js
+++ b/config/webpack/shared.js
@@ -3,24 +3,24 @@
/* eslint global-require: 0 */
/* eslint import/no-dynamic-require: 0 */
-const webpack = require('webpack')
-const { basename, dirname, join, relative, resolve } = require('path')
-const { sync } = require('glob')
-const ExtractTextPlugin = require('extract-text-webpack-plugin')
-const ManifestPlugin = require('webpack-manifest-plugin')
-const extname = require('path-complete-extname')
-const { env, paths, publicPath, loadersDir } = require('./configuration.js')
+const webpack = require('webpack');
+const { basename, dirname, join, relative, resolve } = require('path');
+const { sync } = require('glob');
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const ManifestPlugin = require('webpack-manifest-plugin');
+const extname = require('path-complete-extname');
+const { env, paths, publicPath, loadersDir } = require('./configuration.js');
-const extensionGlob = `**/*{${paths.extensions.join(',')}}*`
-const packPaths = sync(join(paths.source, paths.entry, extensionGlob))
+const extensionGlob = `**/*{${paths.extensions.join(',')}}*`;
+const packPaths = sync(join(paths.source, paths.entry, extensionGlob));
module.exports = {
entry: packPaths.reduce(
(map, entry) => {
- const localMap = map
- const namespace = relative(join(paths.source, paths.entry), dirname(entry))
- localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry)
- return localMap
+ const localMap = map;
+ const namespace = relative(join(paths.source, paths.entry), dirname(entry));
+ localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry);
+ return localMap;
}, {}
),
@@ -28,11 +28,11 @@ module.exports = {
filename: '[name].js',
chunkFilename: '[name]-[chunkhash].js',
path: resolve(paths.output, paths.entry),
- publicPath
+ publicPath,
},
module: {
- rules: sync(join(loadersDir, '*.js')).map(loader => require(loader))
+ rules: sync(join(loadersDir, '*.js')).map(loader => require(loader)),
},
plugins: [
@@ -41,25 +41,25 @@ module.exports = {
new ManifestPlugin({ fileName: paths.manifest, publicPath, writeToFileEmit: true }),
new webpack.optimize.CommonsChunkPlugin({
name: 'common',
- minChunks: 2
- })
+ minChunks: 2,
+ }),
],
resolve: {
extensions: paths.extensions,
modules: [
resolve(paths.source),
- resolve(paths.node_modules)
- ]
+ resolve(paths.node_modules),
+ ],
},
resolveLoader: {
- modules: [paths.node_modules]
+ modules: [paths.node_modules],
},
node: {
// Called by http-link-header in an API we never use, increases
// bundle size unnecessarily
- Buffer: false
- }
-}
+ Buffer: false,
+ },
+};
diff --git a/config/webpack/test.js b/config/webpack/test.js
index e002d0cdc..6b2b073bb 100644
--- a/config/webpack/test.js
+++ b/config/webpack/test.js
@@ -1,6 +1,6 @@
// Note: You must restart bin/webpack-dev-server for changes to take effect
-const merge = require('webpack-merge')
-const sharedConfig = require('./shared.js')
+const merge = require('webpack-merge');
+const sharedConfig = require('./shared.js');
-module.exports = merge(sharedConfig, {})
+module.exports = merge(sharedConfig, {});
diff --git a/config/webpack/translationRunner.js b/config/webpack/translationRunner.js
index 7c1f96877..8d2fb4893 100644
--- a/config/webpack/translationRunner.js
+++ b/config/webpack/translationRunner.js
@@ -7,16 +7,16 @@ const testRFC5626 = function (reRFC5646) {
if (!language.match(reRFC5646)) {
throw new Error('Not RFC5626 name');
}
- }
-}
+ };
+};
const testAvailability = function (availableLanguages) {
return function (language) {
if ((argv.force !== true) && availableLanguages.indexOf(language) < 0) {
throw new Error('Not an available language');
}
- }
-}
+ };
+};
const validateLanguages = function (languages, validators) {
let invalidLanguages = languages.reduce((acc, language) => {
@@ -41,7 +41,7 @@ const validateLanguages = function (languages, validators) {
console.log(`\nUse yarn "manage:translations -- --help" for usage information\n`);
process.exit(1);
}
-}
+};
const printHelpMessages = function () {
console.log(
@@ -62,13 +62,13 @@ to input multiple languages, separate them with space.
Available languages:
${availableLanguages}
`);
-}
+};
// parse arguments
const argv = require('minimist')(process.argv.slice(2), {
'boolean': [
'force',
- 'help'
+ 'help',
],
'alias': {
'f': 'force',
diff --git a/package.json b/package.json
index 2a89d02e9..23bbf0338 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,7 @@
"start": "babel-node ./streaming/index.js",
"storybook": "start-storybook -p 9001 -c storybook",
"test": "npm run test:lint && npm run test:mocha",
- "test:lint": "eslint -c .eslintrc.yml --ext=js --ext=jsx app/javascript/",
+ "test:lint": "eslint -c .eslintrc.yml --ext=js app/javascript/ config/webpack/ storyboard/ streaming/",
"test:mocha": "NODE_ENV=test mocha --require ./spec/javascript/setup.js --compilers js:babel-register ./spec/javascript/components/*.test.jsx",
"postinstall": "npm rebuild node-sass"
},
diff --git a/storybook/config.js b/storybook/config.js
index 2684a738c..c81cfa2f7 100644
--- a/storybook/config.js
+++ b/storybook/config.js
@@ -13,7 +13,7 @@ addLocaleData(en);
let req = require.context('./stories/', true, /.story.js$/);
function loadStories () {
- req.keys().forEach((filename) => req(filename))
+ req.keys().forEach((filename) => req(filename));
}
configure(loadStories, module);
diff --git a/storybook/stories/autosuggest_textarea.story.js b/storybook/stories/autosuggest_textarea.story.js
index 3f13aa416..32d0604e4 100644
--- a/storybook/stories/autosuggest_textarea.story.js
+++ b/storybook/stories/autosuggest_textarea.story.js
@@ -1,7 +1,7 @@
import React from 'react';
-import { List } from 'immutable'
+import { List } from 'immutable';
import { action, storiesOf } from '@kadira/storybook';
-import AutosuggestTextarea from 'mastodon/components/autosuggest_textarea'
+import AutosuggestTextarea from 'mastodon/components/autosuggest_textarea';
const props = {
onChange: action('changed'),
@@ -9,9 +9,9 @@ const props = {
onSuggestionSelected: action('suggestionsSelected'),
onSuggestionsClearRequested: action('suggestionsClearRequested'),
onSuggestionsFetchRequested: action('suggestionsFetchRequested'),
- suggestions: List([])
-}
+ suggestions: List([]),
+};
storiesOf('AutosuggestTextarea', module)
.add('default state', () => )
- .add('with text', () => )
+ .add('with text', () => );
diff --git a/storybook/webpack.config.js b/storybook/webpack.config.js
index dbcfa3c17..8e268077d 100644
--- a/storybook/webpack.config.js
+++ b/storybook/webpack.config.js
@@ -5,19 +5,19 @@ module.exports = {
loaders: [
{
test: /\.(jpg|jpeg|png|gif|svg|eot|ttf|woff|woff2)$/i,
- loader: 'url-loader'
+ loader: 'url-loader',
},
{
test: /.scss$/,
- loaders: ["style-loader", "css-loader", "postcss-loader", "sass-loader"]
- }
- ]
+ loaders: ["style-loader", "css-loader", "postcss-loader", "sass-loader"],
+ },
+ ],
},
resolve: {
modulesDirectories: [
path.resolve(__dirname, '..', 'storybook'),
path.resolve(__dirname, '..', 'app', 'javascript'),
- path.resolve(__dirname, '..', 'node_modules')
- ]
- }
+ path.resolve(__dirname, '..', 'node_modules'),
+ ],
+ },
};
diff --git a/streaming/index.js b/streaming/index.js
index 7f30b4e88..cd1963121 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -1,56 +1,56 @@
import os from 'os';
import cluster from 'cluster';
-import dotenv from 'dotenv'
-import express from 'express'
-import http from 'http'
-import redis from 'redis'
-import pg from 'pg'
-import log from 'npmlog'
-import url from 'url'
-import WebSocket from 'uws'
-import uuid from 'uuid'
+import dotenv from 'dotenv';
+import express from 'express';
+import http from 'http';
+import redis from 'redis';
+import pg from 'pg';
+import log from 'npmlog';
+import url from 'url';
+import WebSocket from 'uws';
+import uuid from 'uuid';
-const env = process.env.NODE_ENV || 'development'
+const env = process.env.NODE_ENV || 'development';
dotenv.config({
- path: env === 'production' ? '.env.production' : '.env'
-})
+ path: env === 'production' ? '.env.production' : '.env',
+});
const dbUrlToConfig = (dbUrl) => {
if (!dbUrl) {
- return {}
+ return {};
}
- const params = url.parse(dbUrl)
- const config = {}
+ const params = url.parse(dbUrl);
+ const config = {};
if (params.auth) {
- [config.user, config.password] = params.auth.split(':')
+ [config.user, config.password] = params.auth.split(':');
}
if (params.hostname) {
- config.host = params.hostname
+ config.host = params.hostname;
}
if (params.port) {
- config.port = params.port
+ config.port = params.port;
}
if (params.pathname) {
- config.database = params.pathname.split('/')[1]
+ config.database = params.pathname.split('/')[1];
}
- const ssl = params.query && params.query.ssl
+ const ssl = params.query && params.query.ssl;
if (ssl) {
- config.ssl = ssl === 'true' || ssl === '1'
+ config.ssl = ssl === 'true' || ssl === '1';
}
- return config
-}
+ return config;
+};
if (cluster.isMaster) {
// Cluster master
- const core = +process.env.STREAMING_CLUSTER_NUM || (env === 'development' ? 1 : Math.max(os.cpus().length - 1, 1))
+ const core = +process.env.STREAMING_CLUSTER_NUM || (env === 'development' ? 1 : Math.max(os.cpus().length - 1, 1));
const fork = () => {
const worker = cluster.fork();
@@ -63,14 +63,14 @@ if (cluster.isMaster) {
for (let i = 0; i < core; i++) fork();
- log.info(`Starting streaming API server master with ${core} workers`)
+ log.info(`Starting streaming API server master with ${core} workers`);
} else {
// Cluster worker
const pgConfigs = {
development: {
database: 'mastodon_development',
host: '/var/run/postgresql',
- max: 10
+ max: 10,
},
production: {
@@ -79,315 +79,315 @@ if (cluster.isMaster) {
database: process.env.DB_NAME || 'mastodon_production',
host: process.env.DB_HOST || 'localhost',
port: process.env.DB_PORT || 5432,
- max: 10
- }
- }
+ max: 10,
+ },
+ };
- const app = express()
- const pgPool = new pg.Pool(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL)))
- const server = http.createServer(app)
- const wss = new WebSocket.Server({ server })
- const redisNamespace = process.env.REDIS_NAMESPACE || null
+ const app = express();
+ const pgPool = new pg.Pool(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL)));
+ const server = http.createServer(app);
+ const wss = new WebSocket.Server({ server });
+ const redisNamespace = process.env.REDIS_NAMESPACE || null;
const redisParams = {
host: process.env.REDIS_HOST || '127.0.0.1',
port: process.env.REDIS_PORT || 6379,
db: process.env.REDIS_DB || 0,
password: process.env.REDIS_PASSWORD,
- url: process.env.REDIS_URL || null
- }
+ url: process.env.REDIS_URL || null,
+ };
if (redisNamespace) {
- redisParams.namespace = redisNamespace
+ redisParams.namespace = redisNamespace;
}
- const redisPrefix = redisNamespace ? `${redisNamespace}:` : ''
+ const redisPrefix = redisNamespace ? `${redisNamespace}:` : '';
- const redisClient = redis.createClient(redisParams)
+ const redisClient = redis.createClient(redisParams);
- const subs = {}
+ const subs = {};
redisClient.on('pmessage', (_, channel, message) => {
- const callbacks = subs[channel]
+ const callbacks = subs[channel];
- log.silly(`New message on channel ${channel}`)
+ log.silly(`New message on channel ${channel}`);
if (!callbacks) {
- return
+ return;
}
- callbacks.forEach(callback => callback(message))
- })
+ callbacks.forEach(callback => callback(message));
+ });
- redisClient.psubscribe(`${redisPrefix}timeline:*`)
+ redisClient.psubscribe(`${redisPrefix}timeline:*`);
const subscribe = (channel, callback) => {
- log.silly(`Adding listener for ${channel}`)
- subs[channel] = subs[channel] || []
- subs[channel].push(callback)
- }
+ log.silly(`Adding listener for ${channel}`);
+ subs[channel] = subs[channel] || [];
+ subs[channel].push(callback);
+ };
const unsubscribe = (channel, callback) => {
- log.silly(`Removing listener for ${channel}`)
- subs[channel] = subs[channel].filter(item => item !== callback)
- }
+ log.silly(`Removing listener for ${channel}`);
+ subs[channel] = subs[channel].filter(item => item !== callback);
+ };
const allowCrossDomain = (req, res, next) => {
- res.header('Access-Control-Allow-Origin', '*')
- res.header('Access-Control-Allow-Headers', 'Authorization, Accept, Cache-Control')
- res.header('Access-Control-Allow-Methods', 'GET, OPTIONS')
+ res.header('Access-Control-Allow-Origin', '*');
+ res.header('Access-Control-Allow-Headers', 'Authorization, Accept, Cache-Control');
+ res.header('Access-Control-Allow-Methods', 'GET, OPTIONS');
- next()
- }
+ next();
+ };
const setRequestId = (req, res, next) => {
- req.requestId = uuid.v4()
- res.header('X-Request-Id', req.requestId)
+ req.requestId = uuid.v4();
+ res.header('X-Request-Id', req.requestId);
- next()
- }
+ next();
+ };
const accountFromToken = (token, req, next) => {
pgPool.connect((err, client, done) => {
if (err) {
- next(err)
- return
+ next(err);
+ return;
}
client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 LIMIT 1', [token], (err, result) => {
- done()
+ done();
if (err) {
- next(err)
- return
+ next(err);
+ return;
}
if (result.rows.length === 0) {
- err = new Error('Invalid access token')
- err.statusCode = 401
+ err = new Error('Invalid access token');
+ err.statusCode = 401;
- next(err)
- return
+ next(err);
+ return;
}
- req.accountId = result.rows[0].account_id
+ req.accountId = result.rows[0].account_id;
- next()
- })
- })
- }
+ next();
+ });
+ });
+ };
const authenticationMiddleware = (req, res, next) => {
if (req.method === 'OPTIONS') {
- next()
- return
+ next();
+ return;
}
- const authorization = req.get('Authorization')
+ const authorization = req.get('Authorization');
if (!authorization) {
- const err = new Error('Missing access token')
- err.statusCode = 401
+ const err = new Error('Missing access token');
+ err.statusCode = 401;
- next(err)
- return
+ next(err);
+ return;
}
- const token = authorization.replace(/^Bearer /, '')
+ const token = authorization.replace(/^Bearer /, '');
- accountFromToken(token, req, next)
- }
+ accountFromToken(token, req, next);
+ };
const errorMiddleware = (err, req, res, next) => {
- log.error(req.requestId, err)
- res.writeHead(err.statusCode || 500, { 'Content-Type': 'application/json' })
- res.end(JSON.stringify({ error: err.statusCode ? `${err}` : 'An unexpected error occurred' }))
- }
+ log.error(req.requestId, err);
+ res.writeHead(err.statusCode || 500, { 'Content-Type': 'application/json' });
+ res.end(JSON.stringify({ error: err.statusCode ? `${err}` : 'An unexpected error occurred' }));
+ };
const placeholders = (arr, shift = 0) => arr.map((_, i) => `$${i + 1 + shift}`).join(', ');
const streamFrom = (id, req, output, attachCloseHandler, needsFiltering = false) => {
- log.verbose(req.requestId, `Starting stream from ${id} for ${req.accountId}`)
+ log.verbose(req.requestId, `Starting stream from ${id} for ${req.accountId}`);
const listener = message => {
- const { event, payload, queued_at } = JSON.parse(message)
+ const { event, payload, queued_at } = JSON.parse(message);
const transmit = () => {
- const now = new Date().getTime()
+ const now = new Date().getTime();
const delta = now - queued_at;
- log.silly(req.requestId, `Transmitting for ${req.accountId}: ${event} ${payload} Delay: ${delta}ms`)
- output(event, payload)
- }
+ log.silly(req.requestId, `Transmitting for ${req.accountId}: ${event} ${payload} Delay: ${delta}ms`);
+ output(event, payload);
+ };
// Only messages that may require filtering are statuses, since notifications
// are already personalized and deletes do not matter
if (needsFiltering && event === 'update') {
pgPool.connect((err, client, done) => {
if (err) {
- log.error(err)
- return
+ log.error(err);
+ return;
}
- const unpackedPayload = JSON.parse(payload)
- const targetAccountIds = [unpackedPayload.account.id].concat(unpackedPayload.mentions.map(item => item.id)).concat(unpackedPayload.reblog ? [unpackedPayload.reblog.account.id] : [])
- const accountDomain = unpackedPayload.account.acct.split('@')[1]
+ const unpackedPayload = JSON.parse(payload);
+ const targetAccountIds = [unpackedPayload.account.id].concat(unpackedPayload.mentions.map(item => item.id)).concat(unpackedPayload.reblog ? [unpackedPayload.reblog.account.id] : []);
+ const accountDomain = unpackedPayload.account.acct.split('@')[1];
const queries = [
client.query(`SELECT 1 FROM blocks WHERE account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 1)}) UNION SELECT 1 FROM mutes WHERE account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 1)})`, [req.accountId].concat(targetAccountIds)),
- ]
+ ];
if (accountDomain) {
- queries.push(client.query('SELECT 1 FROM account_domain_blocks WHERE account_id = $1 AND domain = $2', [req.accountId, accountDomain]))
+ queries.push(client.query('SELECT 1 FROM account_domain_blocks WHERE account_id = $1 AND domain = $2', [req.accountId, accountDomain]));
}
Promise.all(queries).then(values => {
- done()
+ done();
if (values[0].rows.length > 0 || (values.length > 1 && values[1].rows.length > 0)) {
- return
+ return;
}
- transmit()
+ transmit();
}).catch(err => {
- log.error(err)
- })
- })
+ log.error(err);
+ });
+ });
} else {
- transmit()
+ transmit();
}
- }
+ };
- subscribe(`${redisPrefix}${id}`, listener)
- attachCloseHandler(`${redisPrefix}${id}`, listener)
- }
+ subscribe(`${redisPrefix}${id}`, listener);
+ attachCloseHandler(`${redisPrefix}${id}`, listener);
+ };
// Setup stream output to HTTP
const streamToHttp = (req, res) => {
- res.setHeader('Content-Type', 'text/event-stream')
- res.setHeader('Transfer-Encoding', 'chunked')
+ res.setHeader('Content-Type', 'text/event-stream');
+ res.setHeader('Transfer-Encoding', 'chunked');
- const heartbeat = setInterval(() => res.write(':thump\n'), 15000)
+ const heartbeat = setInterval(() => res.write(':thump\n'), 15000);
req.on('close', () => {
- log.verbose(req.requestId, `Ending stream for ${req.accountId}`)
- clearInterval(heartbeat)
- })
+ log.verbose(req.requestId, `Ending stream for ${req.accountId}`);
+ clearInterval(heartbeat);
+ });
return (event, payload) => {
- res.write(`event: ${event}\n`)
- res.write(`data: ${payload}\n\n`)
- }
- }
+ res.write(`event: ${event}\n`);
+ res.write(`data: ${payload}\n\n`);
+ };
+ };
// Setup stream end for HTTP
const streamHttpEnd = req => (id, listener) => {
req.on('close', () => {
- unsubscribe(id, listener)
- })
- }
+ unsubscribe(id, listener);
+ });
+ };
// Setup stream output to WebSockets
const streamToWs = (req, ws) => {
const heartbeat = setInterval(() => {
// TODO: Can't add multiple listeners, due to the limitation of uws.
if (ws.readyState !== ws.OPEN) {
- log.verbose(req.requestId, `Ending stream for ${req.accountId}`)
- clearInterval(heartbeat)
- return
+ log.verbose(req.requestId, `Ending stream for ${req.accountId}`);
+ clearInterval(heartbeat);
+ return;
}
- ws.ping()
- }, 15000)
+ ws.ping();
+ }, 15000);
return (event, payload) => {
if (ws.readyState !== ws.OPEN) {
- log.error(req.requestId, 'Tried writing to closed socket')
- return
+ log.error(req.requestId, 'Tried writing to closed socket');
+ return;
}
- ws.send(JSON.stringify({ event, payload }))
- }
- }
+ ws.send(JSON.stringify({ event, payload }));
+ };
+ };
// Setup stream end for WebSockets
const streamWsEnd = ws => (id, listener) => {
ws.on('close', () => {
- unsubscribe(id, listener)
- })
+ unsubscribe(id, listener);
+ });
ws.on('error', e => {
- unsubscribe(id, listener)
- })
- }
+ unsubscribe(id, listener);
+ });
+ };
- app.use(setRequestId)
- app.use(allowCrossDomain)
- app.use(authenticationMiddleware)
- app.use(errorMiddleware)
+ app.use(setRequestId);
+ app.use(allowCrossDomain);
+ app.use(authenticationMiddleware);
+ app.use(errorMiddleware);
app.get('/api/v1/streaming/user', (req, res) => {
- streamFrom(`timeline:${req.accountId}`, req, streamToHttp(req, res), streamHttpEnd(req))
- })
+ streamFrom(`timeline:${req.accountId}`, req, streamToHttp(req, res), streamHttpEnd(req));
+ });
app.get('/api/v1/streaming/public', (req, res) => {
- streamFrom('timeline:public', req, streamToHttp(req, res), streamHttpEnd(req), true)
- })
+ streamFrom('timeline:public', req, streamToHttp(req, res), streamHttpEnd(req), true);
+ });
app.get('/api/v1/streaming/public/local', (req, res) => {
- streamFrom('timeline:public:local', req, streamToHttp(req, res), streamHttpEnd(req), true)
- })
+ streamFrom('timeline:public:local', req, streamToHttp(req, res), streamHttpEnd(req), true);
+ });
app.get('/api/v1/streaming/hashtag', (req, res) => {
- streamFrom(`timeline:hashtag:${req.query.tag}`, req, streamToHttp(req, res), streamHttpEnd(req), true)
- })
+ streamFrom(`timeline:hashtag:${req.query.tag}`, req, streamToHttp(req, res), streamHttpEnd(req), true);
+ });
app.get('/api/v1/streaming/hashtag/local', (req, res) => {
- streamFrom(`timeline:hashtag:${req.query.tag}:local`, req, streamToHttp(req, res), streamHttpEnd(req), true)
- })
+ streamFrom(`timeline:hashtag:${req.query.tag}:local`, req, streamToHttp(req, res), streamHttpEnd(req), true);
+ });
wss.on('connection', ws => {
- const location = url.parse(ws.upgradeReq.url, true)
- const token = location.query.access_token
- const req = { requestId: uuid.v4() }
+ const location = url.parse(ws.upgradeReq.url, true);
+ const token = location.query.access_token;
+ const req = { requestId: uuid.v4() };
accountFromToken(token, req, err => {
if (err) {
- log.error(req.requestId, err)
- ws.close()
- return
+ log.error(req.requestId, err);
+ ws.close();
+ return;
}
switch(location.query.stream) {
case 'user':
- streamFrom(`timeline:${req.accountId}`, req, streamToWs(req, ws), streamWsEnd(ws))
+ streamFrom(`timeline:${req.accountId}`, req, streamToWs(req, ws), streamWsEnd(ws));
break;
case 'public':
- streamFrom('timeline:public', req, streamToWs(req, ws), streamWsEnd(ws), true)
+ streamFrom('timeline:public', req, streamToWs(req, ws), streamWsEnd(ws), true);
break;
case 'public:local':
- streamFrom('timeline:public:local', req, streamToWs(req, ws), streamWsEnd(ws), true)
+ streamFrom('timeline:public:local', req, streamToWs(req, ws), streamWsEnd(ws), true);
break;
case 'hashtag':
- streamFrom(`timeline:hashtag:${location.query.tag}`, req, streamToWs(req, ws), streamWsEnd(ws), true)
+ streamFrom(`timeline:hashtag:${location.query.tag}`, req, streamToWs(req, ws), streamWsEnd(ws), true);
break;
case 'hashtag:local':
- streamFrom(`timeline:hashtag:${location.query.tag}:local`, req, streamToWs(req, ws), streamWsEnd(ws), true)
+ streamFrom(`timeline:hashtag:${location.query.tag}:local`, req, streamToWs(req, ws), streamWsEnd(ws), true);
break;
default:
- ws.close()
+ ws.close();
}
- })
- })
+ });
+ });
server.listen(process.env.PORT || 4000, () => {
- log.level = process.env.LOG_LEVEL || 'verbose'
- log.info(`Starting streaming API server worker on ${server.address().address}:${server.address().port}`)
- })
+ log.level = process.env.LOG_LEVEL || 'verbose';
+ log.info(`Starting streaming API server worker on ${server.address().address}:${server.address().port}`);
+ });
- process.on('SIGINT', exit)
- process.on('SIGTERM', exit)
- process.on('exit', exit)
+ process.on('SIGINT', exit);
+ process.on('SIGTERM', exit);
+ process.on('exit', exit);
function exit() {
- server.close()
+ server.close();
}
}