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 -- --fixmaster
							parent
							
								
									812fe90eca
								
							
						
					
					
						commit
						2e112e2406
					
				|  | @ -47,6 +47,13 @@ rules: | ||||||
|   no-mixed-spaces-and-tabs: warn |   no-mixed-spaces-and-tabs: warn | ||||||
|   no-nested-ternary: warn |   no-nested-ternary: warn | ||||||
|   no-trailing-spaces: warn |   no-trailing-spaces: warn | ||||||
|  |   semi: error | ||||||
|  |   padded-blocks: | ||||||
|  |   - error | ||||||
|  |   - classes: always | ||||||
|  |   comma-dangle: | ||||||
|  |   - error | ||||||
|  |   - always-multiline | ||||||
| 
 | 
 | ||||||
|   react/jsx-wrap-multilines: error |   react/jsx-wrap-multilines: error | ||||||
|   react/jsx-no-bind: error |   react/jsx-no-bind: error | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from '../api' | import api, { getLinks } from '../api'; | ||||||
| import Immutable from 'immutable'; | import Immutable from 'immutable'; | ||||||
| 
 | 
 | ||||||
| export const ACCOUNT_FETCH_REQUEST = 'ACCOUNT_FETCH_REQUEST'; | export const ACCOUNT_FETCH_REQUEST = 'ACCOUNT_FETCH_REQUEST'; | ||||||
|  | @ -154,8 +154,8 @@ export function expandAccountTimeline(id) { | ||||||
|     api(getState).get(`/api/v1/accounts/${id}/statuses`, { |     api(getState).get(`/api/v1/accounts/${id}/statuses`, { | ||||||
|       params: { |       params: { | ||||||
|         limit: 10, |         limit: 10, | ||||||
|         max_id: lastId |         max_id: lastId, | ||||||
|       } |       }, | ||||||
|     }).then(response => { |     }).then(response => { | ||||||
|       const next = getLinks(response).refs.find(link => link.rel === 'next'); |       const next = getLinks(response).refs.find(link => link.rel === 'next'); | ||||||
|       dispatch(expandAccountTimelineSuccess(id, response.data, next)); |       dispatch(expandAccountTimelineSuccess(id, response.data, next)); | ||||||
|  | @ -175,8 +175,8 @@ export function expandAccountMediaTimeline(id) { | ||||||
|       params: { |       params: { | ||||||
|         limit: 12, |         limit: 12, | ||||||
|         only_media: 'true', |         only_media: 'true', | ||||||
|         max_id: lastId |         max_id: lastId, | ||||||
|       } |       }, | ||||||
|     }).then(response => { |     }).then(response => { | ||||||
|       const next = getLinks(response).refs.find(link => link.rel === 'next'); |       const next = getLinks(response).refs.find(link => link.rel === 'next'); | ||||||
|       dispatch(expandAccountMediaTimelineSuccess(id, response.data, next)); |       dispatch(expandAccountMediaTimelineSuccess(id, response.data, next)); | ||||||
|  | @ -189,14 +189,14 @@ export function expandAccountMediaTimeline(id) { | ||||||
| export function fetchAccountRequest(id) { | export function fetchAccountRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_FETCH_REQUEST, |     type: ACCOUNT_FETCH_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchAccountSuccess(account) { | export function fetchAccountSuccess(account) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_FETCH_SUCCESS, |     type: ACCOUNT_FETCH_SUCCESS, | ||||||
|     account |     account, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -205,7 +205,7 @@ export function fetchAccountFail(id, error) { | ||||||
|     type: ACCOUNT_FETCH_FAIL, |     type: ACCOUNT_FETCH_FAIL, | ||||||
|     id, |     id, | ||||||
|     error, |     error, | ||||||
|     skipAlert: true |     skipAlert: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -230,48 +230,48 @@ export function unfollowAccount(id) { | ||||||
|     }).catch(error => { |     }).catch(error => { | ||||||
|       dispatch(unfollowAccountFail(error)); |       dispatch(unfollowAccountFail(error)); | ||||||
|     }); |     }); | ||||||
|   } |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function followAccountRequest(id) { | export function followAccountRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_FOLLOW_REQUEST, |     type: ACCOUNT_FOLLOW_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function followAccountSuccess(relationship) { | export function followAccountSuccess(relationship) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_FOLLOW_SUCCESS, |     type: ACCOUNT_FOLLOW_SUCCESS, | ||||||
|     relationship |     relationship, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function followAccountFail(error) { | export function followAccountFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_FOLLOW_FAIL, |     type: ACCOUNT_FOLLOW_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unfollowAccountRequest(id) { | export function unfollowAccountRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_UNFOLLOW_REQUEST, |     type: ACCOUNT_UNFOLLOW_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unfollowAccountSuccess(relationship) { | export function unfollowAccountSuccess(relationship) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_UNFOLLOW_SUCCESS, |     type: ACCOUNT_UNFOLLOW_SUCCESS, | ||||||
|     relationship |     relationship, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unfollowAccountFail(error) { | export function unfollowAccountFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_UNFOLLOW_FAIL, |     type: ACCOUNT_UNFOLLOW_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -279,7 +279,7 @@ export function fetchAccountTimelineRequest(id, skipLoading) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_TIMELINE_FETCH_REQUEST, |     type: ACCOUNT_TIMELINE_FETCH_REQUEST, | ||||||
|     id, |     id, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -289,7 +289,7 @@ export function fetchAccountTimelineSuccess(id, statuses, replace, skipLoading) | ||||||
|     id, |     id, | ||||||
|     statuses, |     statuses, | ||||||
|     replace, |     replace, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -299,7 +299,7 @@ export function fetchAccountTimelineFail(id, error, skipLoading) { | ||||||
|     id, |     id, | ||||||
|     error, |     error, | ||||||
|     skipLoading, |     skipLoading, | ||||||
|     skipAlert: error.response.status === 404 |     skipAlert: error.response.status === 404, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -307,7 +307,7 @@ export function fetchAccountMediaTimelineRequest(id, skipLoading) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_MEDIA_TIMELINE_FETCH_REQUEST, |     type: ACCOUNT_MEDIA_TIMELINE_FETCH_REQUEST, | ||||||
|     id, |     id, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -317,7 +317,7 @@ export function fetchAccountMediaTimelineSuccess(id, statuses, replace, skipLoad | ||||||
|     id, |     id, | ||||||
|     statuses, |     statuses, | ||||||
|     replace, |     replace, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -327,14 +327,14 @@ export function fetchAccountMediaTimelineFail(id, error, skipLoading) { | ||||||
|     id, |     id, | ||||||
|     error, |     error, | ||||||
|     skipLoading, |     skipLoading, | ||||||
|     skipAlert: error.response.status === 404 |     skipAlert: error.response.status === 404, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function expandAccountTimelineRequest(id) { | export function expandAccountTimelineRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_TIMELINE_EXPAND_REQUEST, |     type: ACCOUNT_TIMELINE_EXPAND_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -343,7 +343,7 @@ export function expandAccountTimelineSuccess(id, statuses, next) { | ||||||
|     type: ACCOUNT_TIMELINE_EXPAND_SUCCESS, |     type: ACCOUNT_TIMELINE_EXPAND_SUCCESS, | ||||||
|     id, |     id, | ||||||
|     statuses, |     statuses, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -351,14 +351,14 @@ export function expandAccountTimelineFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_TIMELINE_EXPAND_FAIL, |     type: ACCOUNT_TIMELINE_EXPAND_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function expandAccountMediaTimelineRequest(id) { | export function expandAccountMediaTimelineRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_MEDIA_TIMELINE_EXPAND_REQUEST, |     type: ACCOUNT_MEDIA_TIMELINE_EXPAND_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -367,7 +367,7 @@ export function expandAccountMediaTimelineSuccess(id, statuses, next) { | ||||||
|     type: ACCOUNT_MEDIA_TIMELINE_EXPAND_SUCCESS, |     type: ACCOUNT_MEDIA_TIMELINE_EXPAND_SUCCESS, | ||||||
|     id, |     id, | ||||||
|     statuses, |     statuses, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -375,7 +375,7 @@ export function expandAccountMediaTimelineFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_MEDIA_TIMELINE_EXPAND_FAIL, |     type: ACCOUNT_MEDIA_TIMELINE_EXPAND_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -407,7 +407,7 @@ export function unblockAccount(id) { | ||||||
| export function blockAccountRequest(id) { | export function blockAccountRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_BLOCK_REQUEST, |     type: ACCOUNT_BLOCK_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -415,35 +415,35 @@ export function blockAccountSuccess(relationship, statuses) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_BLOCK_SUCCESS, |     type: ACCOUNT_BLOCK_SUCCESS, | ||||||
|     relationship, |     relationship, | ||||||
|     statuses |     statuses, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function blockAccountFail(error) { | export function blockAccountFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_BLOCK_FAIL, |     type: ACCOUNT_BLOCK_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unblockAccountRequest(id) { | export function unblockAccountRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_UNBLOCK_REQUEST, |     type: ACCOUNT_UNBLOCK_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unblockAccountSuccess(relationship) { | export function unblockAccountSuccess(relationship) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_UNBLOCK_SUCCESS, |     type: ACCOUNT_UNBLOCK_SUCCESS, | ||||||
|     relationship |     relationship, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unblockAccountFail(error) { | export function unblockAccountFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_UNBLOCK_FAIL, |     type: ACCOUNT_UNBLOCK_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -476,7 +476,7 @@ export function unmuteAccount(id) { | ||||||
| export function muteAccountRequest(id) { | export function muteAccountRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_MUTE_REQUEST, |     type: ACCOUNT_MUTE_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -484,35 +484,35 @@ export function muteAccountSuccess(relationship, statuses) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_MUTE_SUCCESS, |     type: ACCOUNT_MUTE_SUCCESS, | ||||||
|     relationship, |     relationship, | ||||||
|     statuses |     statuses, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function muteAccountFail(error) { | export function muteAccountFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_MUTE_FAIL, |     type: ACCOUNT_MUTE_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unmuteAccountRequest(id) { | export function unmuteAccountRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_UNMUTE_REQUEST, |     type: ACCOUNT_UNMUTE_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unmuteAccountSuccess(relationship) { | export function unmuteAccountSuccess(relationship) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_UNMUTE_SUCCESS, |     type: ACCOUNT_UNMUTE_SUCCESS, | ||||||
|     relationship |     relationship, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unmuteAccountFail(error) { | export function unmuteAccountFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: ACCOUNT_UNMUTE_FAIL, |     type: ACCOUNT_UNMUTE_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -535,7 +535,7 @@ export function fetchFollowers(id) { | ||||||
| export function fetchFollowersRequest(id) { | export function fetchFollowersRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOWERS_FETCH_REQUEST, |     type: FOLLOWERS_FETCH_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -544,7 +544,7 @@ export function fetchFollowersSuccess(id, accounts, next) { | ||||||
|     type: FOLLOWERS_FETCH_SUCCESS, |     type: FOLLOWERS_FETCH_SUCCESS, | ||||||
|     id, |     id, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -552,7 +552,7 @@ export function fetchFollowersFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOWERS_FETCH_FAIL, |     type: FOLLOWERS_FETCH_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -580,7 +580,7 @@ export function expandFollowers(id) { | ||||||
| export function expandFollowersRequest(id) { | export function expandFollowersRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOWERS_EXPAND_REQUEST, |     type: FOLLOWERS_EXPAND_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -589,7 +589,7 @@ export function expandFollowersSuccess(id, accounts, next) { | ||||||
|     type: FOLLOWERS_EXPAND_SUCCESS, |     type: FOLLOWERS_EXPAND_SUCCESS, | ||||||
|     id, |     id, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -597,7 +597,7 @@ export function expandFollowersFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOWERS_EXPAND_FAIL, |     type: FOLLOWERS_EXPAND_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -619,7 +619,7 @@ export function fetchFollowing(id) { | ||||||
| export function fetchFollowingRequest(id) { | export function fetchFollowingRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOWING_FETCH_REQUEST, |     type: FOLLOWING_FETCH_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -628,7 +628,7 @@ export function fetchFollowingSuccess(id, accounts, next) { | ||||||
|     type: FOLLOWING_FETCH_SUCCESS, |     type: FOLLOWING_FETCH_SUCCESS, | ||||||
|     id, |     id, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -636,7 +636,7 @@ export function fetchFollowingFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOWING_FETCH_FAIL, |     type: FOLLOWING_FETCH_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -664,7 +664,7 @@ export function expandFollowing(id) { | ||||||
| export function expandFollowingRequest(id) { | export function expandFollowingRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOWING_EXPAND_REQUEST, |     type: FOLLOWING_EXPAND_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -673,7 +673,7 @@ export function expandFollowingSuccess(id, accounts, next) { | ||||||
|     type: FOLLOWING_EXPAND_SUCCESS, |     type: FOLLOWING_EXPAND_SUCCESS, | ||||||
|     id, |     id, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -681,7 +681,7 @@ export function expandFollowingFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOWING_EXPAND_FAIL, |     type: FOLLOWING_EXPAND_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -708,7 +708,7 @@ export function fetchRelationshipsRequest(ids) { | ||||||
|   return { |   return { | ||||||
|     type: RELATIONSHIPS_FETCH_REQUEST, |     type: RELATIONSHIPS_FETCH_REQUEST, | ||||||
|     ids, |     ids, | ||||||
|     skipLoading: true |     skipLoading: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -716,7 +716,7 @@ export function fetchRelationshipsSuccess(relationships) { | ||||||
|   return { |   return { | ||||||
|     type: RELATIONSHIPS_FETCH_SUCCESS, |     type: RELATIONSHIPS_FETCH_SUCCESS, | ||||||
|     relationships, |     relationships, | ||||||
|     skipLoading: true |     skipLoading: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -724,7 +724,7 @@ export function fetchRelationshipsFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: RELATIONSHIPS_FETCH_FAIL, |     type: RELATIONSHIPS_FETCH_FAIL, | ||||||
|     error, |     error, | ||||||
|     skipLoading: true |     skipLoading: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -734,14 +734,14 @@ export function fetchFollowRequests() { | ||||||
| 
 | 
 | ||||||
|     api(getState).get('/api/v1/follow_requests').then(response => { |     api(getState).get('/api/v1/follow_requests').then(response => { | ||||||
|       const next = getLinks(response).refs.find(link => link.rel === 'next'); |       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))); |     }).catch(error => dispatch(fetchFollowRequestsFail(error))); | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchFollowRequestsRequest() { | export function fetchFollowRequestsRequest() { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUESTS_FETCH_REQUEST |     type: FOLLOW_REQUESTS_FETCH_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -749,14 +749,14 @@ export function fetchFollowRequestsSuccess(accounts, next) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUESTS_FETCH_SUCCESS, |     type: FOLLOW_REQUESTS_FETCH_SUCCESS, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchFollowRequestsFail(error) { | export function fetchFollowRequestsFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUESTS_FETCH_FAIL, |     type: FOLLOW_REQUESTS_FETCH_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -772,14 +772,14 @@ export function expandFollowRequests() { | ||||||
| 
 | 
 | ||||||
|     api(getState).get(url).then(response => { |     api(getState).get(url).then(response => { | ||||||
|       const next = getLinks(response).refs.find(link => link.rel === 'next'); |       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))); |     }).catch(error => dispatch(expandFollowRequestsFail(error))); | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function expandFollowRequestsRequest() { | export function expandFollowRequestsRequest() { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUESTS_EXPAND_REQUEST |     type: FOLLOW_REQUESTS_EXPAND_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -787,14 +787,14 @@ export function expandFollowRequestsSuccess(accounts, next) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUESTS_EXPAND_SUCCESS, |     type: FOLLOW_REQUESTS_EXPAND_SUCCESS, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function expandFollowRequestsFail(error) { | export function expandFollowRequestsFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUESTS_EXPAND_FAIL, |     type: FOLLOW_REQUESTS_EXPAND_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -812,14 +812,14 @@ export function authorizeFollowRequest(id) { | ||||||
| export function authorizeFollowRequestRequest(id) { | export function authorizeFollowRequestRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUEST_AUTHORIZE_REQUEST, |     type: FOLLOW_REQUEST_AUTHORIZE_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function authorizeFollowRequestSuccess(id) { | export function authorizeFollowRequestSuccess(id) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUEST_AUTHORIZE_SUCCESS, |     type: FOLLOW_REQUEST_AUTHORIZE_SUCCESS, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -827,7 +827,7 @@ export function authorizeFollowRequestFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUEST_AUTHORIZE_FAIL, |     type: FOLLOW_REQUEST_AUTHORIZE_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -846,14 +846,14 @@ export function rejectFollowRequest(id) { | ||||||
| export function rejectFollowRequestRequest(id) { | export function rejectFollowRequestRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUEST_REJECT_REQUEST, |     type: FOLLOW_REQUEST_REJECT_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function rejectFollowRequestSuccess(id) { | export function rejectFollowRequestSuccess(id) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUEST_REJECT_SUCCESS, |     type: FOLLOW_REQUEST_REJECT_SUCCESS, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -861,6 +861,6 @@ export function rejectFollowRequestFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: FOLLOW_REQUEST_REJECT_FAIL, |     type: FOLLOW_REQUEST_REJECT_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -5,13 +5,13 @@ export const ALERT_CLEAR   = 'ALERT_CLEAR'; | ||||||
| export function dismissAlert(alert) { | export function dismissAlert(alert) { | ||||||
|   return { |   return { | ||||||
|     type: ALERT_DISMISS, |     type: ALERT_DISMISS, | ||||||
|     alert |     alert, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function clearAlert() { | export function clearAlert() { | ||||||
|   return { |   return { | ||||||
|     type: ALERT_CLEAR |     type: ALERT_CLEAR, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -19,6 +19,6 @@ export function showAlert(title, message) { | ||||||
|   return { |   return { | ||||||
|     type: ALERT_SHOW, |     type: ALERT_SHOW, | ||||||
|     title, |     title, | ||||||
|     message |     message, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from '../api' | import api, { getLinks } from '../api'; | ||||||
| import { fetchRelationships } from './accounts'; | import { fetchRelationships } from './accounts'; | ||||||
| 
 | 
 | ||||||
| export const BLOCKS_FETCH_REQUEST = 'BLOCKS_FETCH_REQUEST'; | export const BLOCKS_FETCH_REQUEST = 'BLOCKS_FETCH_REQUEST'; | ||||||
|  | @ -23,7 +23,7 @@ export function fetchBlocks() { | ||||||
| 
 | 
 | ||||||
| export function fetchBlocksRequest() { | export function fetchBlocksRequest() { | ||||||
|   return { |   return { | ||||||
|     type: BLOCKS_FETCH_REQUEST |     type: BLOCKS_FETCH_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -31,14 +31,14 @@ export function fetchBlocksSuccess(accounts, next) { | ||||||
|   return { |   return { | ||||||
|     type: BLOCKS_FETCH_SUCCESS, |     type: BLOCKS_FETCH_SUCCESS, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchBlocksFail(error) { | export function fetchBlocksFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: BLOCKS_FETCH_FAIL, |     type: BLOCKS_FETCH_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -62,7 +62,7 @@ export function expandBlocks() { | ||||||
| 
 | 
 | ||||||
| export function expandBlocksRequest() { | export function expandBlocksRequest() { | ||||||
|   return { |   return { | ||||||
|     type: BLOCKS_EXPAND_REQUEST |     type: BLOCKS_EXPAND_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -70,13 +70,13 @@ export function expandBlocksSuccess(accounts, next) { | ||||||
|   return { |   return { | ||||||
|     type: BLOCKS_EXPAND_SUCCESS, |     type: BLOCKS_EXPAND_SUCCESS, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function expandBlocksFail(error) { | export function expandBlocksFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: BLOCKS_EXPAND_FAIL, |     type: BLOCKS_EXPAND_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -28,7 +28,7 @@ export function fetchStatusCardRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_CARD_FETCH_REQUEST, |     type: STATUS_CARD_FETCH_REQUEST, | ||||||
|     id, |     id, | ||||||
|     skipLoading: true |     skipLoading: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -37,7 +37,7 @@ export function fetchStatusCardSuccess(id, card) { | ||||||
|     type: STATUS_CARD_FETCH_SUCCESS, |     type: STATUS_CARD_FETCH_SUCCESS, | ||||||
|     id, |     id, | ||||||
|     card, |     card, | ||||||
|     skipLoading: true |     skipLoading: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -47,6 +47,6 @@ export function fetchStatusCardFail(id, error) { | ||||||
|     id, |     id, | ||||||
|     error, |     error, | ||||||
|     skipLoading: true, |     skipLoading: true, | ||||||
|     skipAlert: true |     skipAlert: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -35,7 +35,7 @@ export const COMPOSE_EMOJI_INSERT = 'COMPOSE_EMOJI_INSERT'; | ||||||
| export function changeCompose(text) { | export function changeCompose(text) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_CHANGE, |     type: COMPOSE_CHANGE, | ||||||
|     text: text |     text: text, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -43,7 +43,7 @@ export function replyCompose(status, router) { | ||||||
|   return (dispatch, getState) => { |   return (dispatch, getState) => { | ||||||
|     dispatch({ |     dispatch({ | ||||||
|       type: COMPOSE_REPLY, |       type: COMPOSE_REPLY, | ||||||
|       status: status |       status: status, | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     if (!getState().getIn(['compose', 'mounted'])) { |     if (!getState().getIn(['compose', 'mounted'])) { | ||||||
|  | @ -54,7 +54,7 @@ export function replyCompose(status, router) { | ||||||
| 
 | 
 | ||||||
| export function cancelReplyCompose() { | export function cancelReplyCompose() { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_REPLY_CANCEL |     type: COMPOSE_REPLY_CANCEL, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -62,7 +62,7 @@ export function mentionCompose(account, router) { | ||||||
|   return (dispatch, getState) => { |   return (dispatch, getState) => { | ||||||
|     dispatch({ |     dispatch({ | ||||||
|       type: COMPOSE_MENTION, |       type: COMPOSE_MENTION, | ||||||
|       account: account |       account: account, | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     if (!getState().getIn(['compose', 'mounted'])) { |     if (!getState().getIn(['compose', 'mounted'])) { | ||||||
|  | @ -84,11 +84,11 @@ export function submitCompose() { | ||||||
|       media_ids: getState().getIn(['compose', 'media_attachments']).map(item => item.get('id')), |       media_ids: getState().getIn(['compose', 'media_attachments']).map(item => item.get('id')), | ||||||
|       sensitive: getState().getIn(['compose', 'sensitive']), |       sensitive: getState().getIn(['compose', 'sensitive']), | ||||||
|       spoiler_text: getState().getIn(['compose', 'spoiler_text'], ''), |       spoiler_text: getState().getIn(['compose', 'spoiler_text'], ''), | ||||||
|       visibility: getState().getIn(['compose', 'privacy']) |       visibility: getState().getIn(['compose', 'privacy']), | ||||||
|     }, { |     }, { | ||||||
|       headers: { |       headers: { | ||||||
|         'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']) |         'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']), | ||||||
|       } |       }, | ||||||
|     }).then(function (response) { |     }).then(function (response) { | ||||||
|       dispatch(submitComposeSuccess({ ...response.data })); |       dispatch(submitComposeSuccess({ ...response.data })); | ||||||
| 
 | 
 | ||||||
|  | @ -112,21 +112,21 @@ export function submitCompose() { | ||||||
| 
 | 
 | ||||||
| export function submitComposeRequest() { | export function submitComposeRequest() { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_SUBMIT_REQUEST |     type: COMPOSE_SUBMIT_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function submitComposeSuccess(status) { | export function submitComposeSuccess(status) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_SUBMIT_SUCCESS, |     type: COMPOSE_SUBMIT_SUCCESS, | ||||||
|     status: status |     status: status, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function submitComposeFail(error) { | export function submitComposeFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_SUBMIT_FAIL, |     type: COMPOSE_SUBMIT_FAIL, | ||||||
|     error: error |     error: error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -144,7 +144,7 @@ export function uploadCompose(files) { | ||||||
|     api(getState).post('/api/v1/media', data, { |     api(getState).post('/api/v1/media', data, { | ||||||
|       onUploadProgress: function (e) { |       onUploadProgress: function (e) { | ||||||
|         dispatch(uploadComposeProgress(e.loaded, e.total)); |         dispatch(uploadComposeProgress(e.loaded, e.total)); | ||||||
|       } |       }, | ||||||
|     }).then(function (response) { |     }).then(function (response) { | ||||||
|       dispatch(uploadComposeSuccess(response.data)); |       dispatch(uploadComposeSuccess(response.data)); | ||||||
|     }).catch(function (error) { |     }).catch(function (error) { | ||||||
|  | @ -156,7 +156,7 @@ export function uploadCompose(files) { | ||||||
| export function uploadComposeRequest() { | export function uploadComposeRequest() { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_UPLOAD_REQUEST, |     type: COMPOSE_UPLOAD_REQUEST, | ||||||
|     skipLoading: true |     skipLoading: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -164,7 +164,7 @@ export function uploadComposeProgress(loaded, total) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_UPLOAD_PROGRESS, |     type: COMPOSE_UPLOAD_PROGRESS, | ||||||
|     loaded: loaded, |     loaded: loaded, | ||||||
|     total: total |     total: total, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -172,7 +172,7 @@ export function uploadComposeSuccess(media) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_UPLOAD_SUCCESS, |     type: COMPOSE_UPLOAD_SUCCESS, | ||||||
|     media: media, |     media: media, | ||||||
|     skipLoading: true |     skipLoading: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -180,20 +180,20 @@ export function uploadComposeFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_UPLOAD_FAIL, |     type: COMPOSE_UPLOAD_FAIL, | ||||||
|     error: error, |     error: error, | ||||||
|     skipLoading: true |     skipLoading: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function undoUploadCompose(media_id) { | export function undoUploadCompose(media_id) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_UPLOAD_UNDO, |     type: COMPOSE_UPLOAD_UNDO, | ||||||
|     media_id: media_id |     media_id: media_id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function clearComposeSuggestions() { | export function clearComposeSuggestions() { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_SUGGESTIONS_CLEAR |     type: COMPOSE_SUGGESTIONS_CLEAR, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -203,8 +203,8 @@ export function fetchComposeSuggestions(token) { | ||||||
|       params: { |       params: { | ||||||
|         q: token, |         q: token, | ||||||
|         resolve: false, |         resolve: false, | ||||||
|         limit: 4 |         limit: 4, | ||||||
|       } |       }, | ||||||
|     }).then(response => { |     }).then(response => { | ||||||
|       dispatch(readyComposeSuggestions(token, response.data)); |       dispatch(readyComposeSuggestions(token, response.data)); | ||||||
|     }); |     }); | ||||||
|  | @ -215,7 +215,7 @@ export function readyComposeSuggestions(token, accounts) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_SUGGESTIONS_READY, |     type: COMPOSE_SUGGESTIONS_READY, | ||||||
|     token, |     token, | ||||||
|     accounts |     accounts, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -227,20 +227,20 @@ export function selectComposeSuggestion(position, token, accountId) { | ||||||
|       type: COMPOSE_SUGGESTION_SELECT, |       type: COMPOSE_SUGGESTION_SELECT, | ||||||
|       position, |       position, | ||||||
|       token, |       token, | ||||||
|       completion |       completion, | ||||||
|     }); |     }); | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function mountCompose() { | export function mountCompose() { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_MOUNT |     type: COMPOSE_MOUNT, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unmountCompose() { | export function unmountCompose() { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_UNMOUNT |     type: COMPOSE_UNMOUNT, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -252,21 +252,21 @@ export function changeComposeSensitivity() { | ||||||
| 
 | 
 | ||||||
| export function changeComposeSpoilerness() { | export function changeComposeSpoilerness() { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_SPOILERNESS_CHANGE |     type: COMPOSE_SPOILERNESS_CHANGE, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function changeComposeSpoilerText(text) { | export function changeComposeSpoilerText(text) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_SPOILER_TEXT_CHANGE, |     type: COMPOSE_SPOILER_TEXT_CHANGE, | ||||||
|     text |     text, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function changeComposeVisibility(value) { | export function changeComposeVisibility(value) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_VISIBILITY_CHANGE, |     type: COMPOSE_VISIBILITY_CHANGE, | ||||||
|     value |     value, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -274,6 +274,6 @@ export function insertEmojiCompose(position, emoji) { | ||||||
|   return { |   return { | ||||||
|     type: COMPOSE_EMOJI_INSERT, |     type: COMPOSE_EMOJI_INSERT, | ||||||
|     position, |     position, | ||||||
|     emoji |     emoji, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -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_REQUEST = 'DOMAIN_BLOCK_REQUEST'; | ||||||
| export const DOMAIN_BLOCK_SUCCESS = 'DOMAIN_BLOCK_SUCCESS'; | export const DOMAIN_BLOCK_SUCCESS = 'DOMAIN_BLOCK_SUCCESS'; | ||||||
|  | @ -27,7 +27,7 @@ export function blockDomain(domain, accountId) { | ||||||
| export function blockDomainRequest(domain) { | export function blockDomainRequest(domain) { | ||||||
|   return { |   return { | ||||||
|     type: DOMAIN_BLOCK_REQUEST, |     type: DOMAIN_BLOCK_REQUEST, | ||||||
|     domain |     domain, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -35,7 +35,7 @@ export function blockDomainSuccess(domain, accountId) { | ||||||
|   return { |   return { | ||||||
|     type: DOMAIN_BLOCK_SUCCESS, |     type: DOMAIN_BLOCK_SUCCESS, | ||||||
|     domain, |     domain, | ||||||
|     accountId |     accountId, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -43,7 +43,7 @@ export function blockDomainFail(domain, error) { | ||||||
|   return { |   return { | ||||||
|     type: DOMAIN_BLOCK_FAIL, |     type: DOMAIN_BLOCK_FAIL, | ||||||
|     domain, |     domain, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -62,7 +62,7 @@ export function unblockDomain(domain, accountId) { | ||||||
| export function unblockDomainRequest(domain) { | export function unblockDomainRequest(domain) { | ||||||
|   return { |   return { | ||||||
|     type: DOMAIN_UNBLOCK_REQUEST, |     type: DOMAIN_UNBLOCK_REQUEST, | ||||||
|     domain |     domain, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -70,7 +70,7 @@ export function unblockDomainSuccess(domain, accountId) { | ||||||
|   return { |   return { | ||||||
|     type: DOMAIN_UNBLOCK_SUCCESS, |     type: DOMAIN_UNBLOCK_SUCCESS, | ||||||
|     domain, |     domain, | ||||||
|     accountId |     accountId, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -78,7 +78,7 @@ export function unblockDomainFail(domain, error) { | ||||||
|   return { |   return { | ||||||
|     type: DOMAIN_UNBLOCK_FAIL, |     type: DOMAIN_UNBLOCK_FAIL, | ||||||
|     domain, |     domain, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -97,7 +97,7 @@ export function fetchDomainBlocks() { | ||||||
| 
 | 
 | ||||||
| export function fetchDomainBlocksRequest() { | export function fetchDomainBlocksRequest() { | ||||||
|   return { |   return { | ||||||
|     type: DOMAIN_BLOCKS_FETCH_REQUEST |     type: DOMAIN_BLOCKS_FETCH_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -105,13 +105,13 @@ export function fetchDomainBlocksSuccess(domains, next) { | ||||||
|   return { |   return { | ||||||
|     type: DOMAIN_BLOCKS_FETCH_SUCCESS, |     type: DOMAIN_BLOCKS_FETCH_SUCCESS, | ||||||
|     domains, |     domains, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchDomainBlocksFail(error) { | export function fetchDomainBlocksFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: DOMAIN_BLOCKS_FETCH_FAIL, |     type: DOMAIN_BLOCKS_FETCH_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -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_REQUEST = 'FAVOURITED_STATUSES_FETCH_REQUEST'; | ||||||
| export const FAVOURITED_STATUSES_FETCH_SUCCESS = 'FAVOURITED_STATUSES_FETCH_SUCCESS'; | export const FAVOURITED_STATUSES_FETCH_SUCCESS = 'FAVOURITED_STATUSES_FETCH_SUCCESS'; | ||||||
|  | @ -23,7 +23,7 @@ export function fetchFavouritedStatuses() { | ||||||
| 
 | 
 | ||||||
| export function fetchFavouritedStatusesRequest() { | export function fetchFavouritedStatusesRequest() { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITED_STATUSES_FETCH_REQUEST |     type: FAVOURITED_STATUSES_FETCH_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -31,14 +31,14 @@ export function fetchFavouritedStatusesSuccess(statuses, next) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITED_STATUSES_FETCH_SUCCESS, |     type: FAVOURITED_STATUSES_FETCH_SUCCESS, | ||||||
|     statuses, |     statuses, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchFavouritedStatusesFail(error) { | export function fetchFavouritedStatusesFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITED_STATUSES_FETCH_FAIL, |     type: FAVOURITED_STATUSES_FETCH_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -63,7 +63,7 @@ export function expandFavouritedStatuses() { | ||||||
| 
 | 
 | ||||||
| export function expandFavouritedStatusesRequest() { | export function expandFavouritedStatusesRequest() { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITED_STATUSES_EXPAND_REQUEST |     type: FAVOURITED_STATUSES_EXPAND_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -71,13 +71,13 @@ export function expandFavouritedStatusesSuccess(statuses, next) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITED_STATUSES_EXPAND_SUCCESS, |     type: FAVOURITED_STATUSES_EXPAND_SUCCESS, | ||||||
|     statuses, |     statuses, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function expandFavouritedStatusesFail(error) { | export function expandFavouritedStatusesFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITED_STATUSES_EXPAND_FAIL, |     type: FAVOURITED_STATUSES_EXPAND_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from '../api' | import api from '../api'; | ||||||
| 
 | 
 | ||||||
| export const REBLOG_REQUEST = 'REBLOG_REQUEST'; | export const REBLOG_REQUEST = 'REBLOG_REQUEST'; | ||||||
| export const REBLOG_SUCCESS = 'REBLOG_SUCCESS'; | export const REBLOG_SUCCESS = 'REBLOG_SUCCESS'; | ||||||
|  | @ -53,7 +53,7 @@ export function unreblog(status) { | ||||||
| export function reblogRequest(status) { | export function reblogRequest(status) { | ||||||
|   return { |   return { | ||||||
|     type: REBLOG_REQUEST, |     type: REBLOG_REQUEST, | ||||||
|     status: status |     status: status, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -61,7 +61,7 @@ export function reblogSuccess(status, response) { | ||||||
|   return { |   return { | ||||||
|     type: REBLOG_SUCCESS, |     type: REBLOG_SUCCESS, | ||||||
|     status: status, |     status: status, | ||||||
|     response: response |     response: response, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -69,14 +69,14 @@ export function reblogFail(status, error) { | ||||||
|   return { |   return { | ||||||
|     type: REBLOG_FAIL, |     type: REBLOG_FAIL, | ||||||
|     status: status, |     status: status, | ||||||
|     error: error |     error: error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unreblogRequest(status) { | export function unreblogRequest(status) { | ||||||
|   return { |   return { | ||||||
|     type: UNREBLOG_REQUEST, |     type: UNREBLOG_REQUEST, | ||||||
|     status: status |     status: status, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -84,7 +84,7 @@ export function unreblogSuccess(status, response) { | ||||||
|   return { |   return { | ||||||
|     type: UNREBLOG_SUCCESS, |     type: UNREBLOG_SUCCESS, | ||||||
|     status: status, |     status: status, | ||||||
|     response: response |     response: response, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -92,7 +92,7 @@ export function unreblogFail(status, error) { | ||||||
|   return { |   return { | ||||||
|     type: UNREBLOG_FAIL, |     type: UNREBLOG_FAIL, | ||||||
|     status: status, |     status: status, | ||||||
|     error: error |     error: error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -123,7 +123,7 @@ export function unfavourite(status) { | ||||||
| export function favouriteRequest(status) { | export function favouriteRequest(status) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITE_REQUEST, |     type: FAVOURITE_REQUEST, | ||||||
|     status: status |     status: status, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -131,7 +131,7 @@ export function favouriteSuccess(status, response) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITE_SUCCESS, |     type: FAVOURITE_SUCCESS, | ||||||
|     status: status, |     status: status, | ||||||
|     response: response |     response: response, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -139,14 +139,14 @@ export function favouriteFail(status, error) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITE_FAIL, |     type: FAVOURITE_FAIL, | ||||||
|     status: status, |     status: status, | ||||||
|     error: error |     error: error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unfavouriteRequest(status) { | export function unfavouriteRequest(status) { | ||||||
|   return { |   return { | ||||||
|     type: UNFAVOURITE_REQUEST, |     type: UNFAVOURITE_REQUEST, | ||||||
|     status: status |     status: status, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -154,7 +154,7 @@ export function unfavouriteSuccess(status, response) { | ||||||
|   return { |   return { | ||||||
|     type: UNFAVOURITE_SUCCESS, |     type: UNFAVOURITE_SUCCESS, | ||||||
|     status: status, |     status: status, | ||||||
|     response: response |     response: response, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -162,7 +162,7 @@ export function unfavouriteFail(status, error) { | ||||||
|   return { |   return { | ||||||
|     type: UNFAVOURITE_FAIL, |     type: UNFAVOURITE_FAIL, | ||||||
|     status: status, |     status: status, | ||||||
|     error: error |     error: error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -181,7 +181,7 @@ export function fetchReblogs(id) { | ||||||
| export function fetchReblogsRequest(id) { | export function fetchReblogsRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: REBLOGS_FETCH_REQUEST, |     type: REBLOGS_FETCH_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -189,14 +189,14 @@ export function fetchReblogsSuccess(id, accounts) { | ||||||
|   return { |   return { | ||||||
|     type: REBLOGS_FETCH_SUCCESS, |     type: REBLOGS_FETCH_SUCCESS, | ||||||
|     id, |     id, | ||||||
|     accounts |     accounts, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchReblogsFail(id, error) { | export function fetchReblogsFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: REBLOGS_FETCH_FAIL, |     type: REBLOGS_FETCH_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -215,7 +215,7 @@ export function fetchFavourites(id) { | ||||||
| export function fetchFavouritesRequest(id) { | export function fetchFavouritesRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITES_FETCH_REQUEST, |     type: FAVOURITES_FETCH_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -223,13 +223,13 @@ export function fetchFavouritesSuccess(id, accounts) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITES_FETCH_SUCCESS, |     type: FAVOURITES_FETCH_SUCCESS, | ||||||
|     id, |     id, | ||||||
|     accounts |     accounts, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchFavouritesFail(id, error) { | export function fetchFavouritesFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: FAVOURITES_FETCH_FAIL, |     type: FAVOURITES_FETCH_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -5,12 +5,12 @@ export function openModal(type, props) { | ||||||
|   return { |   return { | ||||||
|     type: MODAL_OPEN, |     type: MODAL_OPEN, | ||||||
|     modalType: type, |     modalType: type, | ||||||
|     modalProps: props |     modalProps: props, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function closeModal() { | export function closeModal() { | ||||||
|   return { |   return { | ||||||
|     type: MODAL_CLOSE |     type: MODAL_CLOSE, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from '../api' | import api, { getLinks } from '../api'; | ||||||
| import { fetchRelationships } from './accounts'; | import { fetchRelationships } from './accounts'; | ||||||
| 
 | 
 | ||||||
| export const MUTES_FETCH_REQUEST = 'MUTES_FETCH_REQUEST'; | export const MUTES_FETCH_REQUEST = 'MUTES_FETCH_REQUEST'; | ||||||
|  | @ -23,7 +23,7 @@ export function fetchMutes() { | ||||||
| 
 | 
 | ||||||
| export function fetchMutesRequest() { | export function fetchMutesRequest() { | ||||||
|   return { |   return { | ||||||
|     type: MUTES_FETCH_REQUEST |     type: MUTES_FETCH_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -31,14 +31,14 @@ export function fetchMutesSuccess(accounts, next) { | ||||||
|   return { |   return { | ||||||
|     type: MUTES_FETCH_SUCCESS, |     type: MUTES_FETCH_SUCCESS, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchMutesFail(error) { | export function fetchMutesFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: MUTES_FETCH_FAIL, |     type: MUTES_FETCH_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -62,7 +62,7 @@ export function expandMutes() { | ||||||
| 
 | 
 | ||||||
| export function expandMutesRequest() { | export function expandMutesRequest() { | ||||||
|   return { |   return { | ||||||
|     type: MUTES_EXPAND_REQUEST |     type: MUTES_EXPAND_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -70,13 +70,13 @@ export function expandMutesSuccess(accounts, next) { | ||||||
|   return { |   return { | ||||||
|     type: MUTES_EXPAND_SUCCESS, |     type: MUTES_EXPAND_SUCCESS, | ||||||
|     accounts, |     accounts, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function expandMutesFail(error) { | export function expandMutesFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: MUTES_EXPAND_FAIL, |     type: MUTES_EXPAND_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from '../api' | import api, { getLinks } from '../api'; | ||||||
| import Immutable from 'immutable'; | import Immutable from 'immutable'; | ||||||
| import IntlMessageFormat from 'intl-messageformat'; | import IntlMessageFormat from 'intl-messageformat'; | ||||||
| import { fetchRelationships } from './accounts'; | import { fetchRelationships } from './accounts'; | ||||||
|  | @ -33,7 +33,7 @@ const unescapeHTML = (html) => { | ||||||
|   const wrapper = document.createElement('div'); |   const wrapper = document.createElement('div'); | ||||||
|   wrapper.innerHTML = html; |   wrapper.innerHTML = html; | ||||||
|   return wrapper.textContent; |   return wrapper.textContent; | ||||||
| } | }; | ||||||
| 
 | 
 | ||||||
| export function updateNotifications(notification, intlMessages, intlLocale) { | export function updateNotifications(notification, intlMessages, intlLocale) { | ||||||
|   return (dispatch, getState) => { |   return (dispatch, getState) => { | ||||||
|  | @ -45,7 +45,7 @@ export function updateNotifications(notification, intlMessages, intlLocale) { | ||||||
|       notification, |       notification, | ||||||
|       account: notification.account, |       account: notification.account, | ||||||
|       status: notification.status, |       status: notification.status, | ||||||
|       meta: playSound ? { sound: 'boop' } : undefined |       meta: playSound ? { sound: 'boop' } : undefined, | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     fetchRelatedRelationships(dispatch, [notification]); |     fetchRelatedRelationships(dispatch, [notification]); | ||||||
|  | @ -99,7 +99,7 @@ export function refreshNotifications() { | ||||||
| export function refreshNotificationsRequest(skipLoading) { | export function refreshNotificationsRequest(skipLoading) { | ||||||
|   return { |   return { | ||||||
|     type: NOTIFICATIONS_REFRESH_REQUEST, |     type: NOTIFICATIONS_REFRESH_REQUEST, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -110,7 +110,7 @@ export function refreshNotificationsSuccess(notifications, skipLoading, next) { | ||||||
|     accounts: notifications.map(item => item.account), |     accounts: notifications.map(item => item.account), | ||||||
|     statuses: notifications.map(item => item.status).filter(status => !!status), |     statuses: notifications.map(item => item.status).filter(status => !!status), | ||||||
|     skipLoading, |     skipLoading, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -118,7 +118,7 @@ export function refreshNotificationsFail(error, skipLoading) { | ||||||
|   return { |   return { | ||||||
|     type: NOTIFICATIONS_REFRESH_FAIL, |     type: NOTIFICATIONS_REFRESH_FAIL, | ||||||
|     error, |     error, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -135,7 +135,7 @@ export function expandNotifications() { | ||||||
| 
 | 
 | ||||||
|     const params = { |     const params = { | ||||||
|       max_id: lastId, |       max_id: lastId, | ||||||
|       limit: 20 |       limit: 20, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     params.exclude_types = excludeTypesFromSettings(getState()); |     params.exclude_types = excludeTypesFromSettings(getState()); | ||||||
|  | @ -153,7 +153,7 @@ export function expandNotifications() { | ||||||
| 
 | 
 | ||||||
| export function expandNotificationsRequest() { | export function expandNotificationsRequest() { | ||||||
|   return { |   return { | ||||||
|     type: NOTIFICATIONS_EXPAND_REQUEST |     type: NOTIFICATIONS_EXPAND_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -163,21 +163,21 @@ export function expandNotificationsSuccess(notifications, next) { | ||||||
|     notifications, |     notifications, | ||||||
|     accounts: notifications.map(item => item.account), |     accounts: notifications.map(item => item.account), | ||||||
|     statuses: notifications.map(item => item.status).filter(status => !!status), |     statuses: notifications.map(item => item.status).filter(status => !!status), | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function expandNotificationsFail(error) { | export function expandNotificationsFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: NOTIFICATIONS_EXPAND_FAIL, |     type: NOTIFICATIONS_EXPAND_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function clearNotifications() { | export function clearNotifications() { | ||||||
|   return (dispatch, getState) => { |   return (dispatch, getState) => { | ||||||
|     dispatch({ |     dispatch({ | ||||||
|       type: NOTIFICATIONS_CLEAR |       type: NOTIFICATIONS_CLEAR, | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     api(getState).post('/api/v1/notifications/clear'); |     api(getState).post('/api/v1/notifications/clear'); | ||||||
|  | @ -187,6 +187,6 @@ export function clearNotifications() { | ||||||
| export function scrollTopNotifications(top) { | export function scrollTopNotifications(top) { | ||||||
|   return { |   return { | ||||||
|     type: NOTIFICATIONS_SCROLL_TOP, |     type: NOTIFICATIONS_SCROLL_TOP, | ||||||
|     top |     top, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -14,13 +14,13 @@ export function initReport(account, status) { | ||||||
|   return { |   return { | ||||||
|     type: REPORT_INIT, |     type: REPORT_INIT, | ||||||
|     account, |     account, | ||||||
|     status |     status, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function cancelReport() { | export function cancelReport() { | ||||||
|   return { |   return { | ||||||
|     type: REPORT_CANCEL |     type: REPORT_CANCEL, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -39,34 +39,34 @@ export function submitReport() { | ||||||
|     api(getState).post('/api/v1/reports', { |     api(getState).post('/api/v1/reports', { | ||||||
|       account_id: getState().getIn(['reports', 'new', 'account_id']), |       account_id: getState().getIn(['reports', 'new', 'account_id']), | ||||||
|       status_ids: getState().getIn(['reports', 'new', 'status_ids']), |       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))); |     }).then(response => dispatch(submitReportSuccess(response.data))).catch(error => dispatch(submitReportFail(error))); | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function submitReportRequest() { | export function submitReportRequest() { | ||||||
|   return { |   return { | ||||||
|     type: REPORT_SUBMIT_REQUEST |     type: REPORT_SUBMIT_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function submitReportSuccess(report) { | export function submitReportSuccess(report) { | ||||||
|   return { |   return { | ||||||
|     type: REPORT_SUBMIT_SUCCESS, |     type: REPORT_SUBMIT_SUCCESS, | ||||||
|     report |     report, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function submitReportFail(error) { | export function submitReportFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: REPORT_SUBMIT_FAIL, |     type: REPORT_SUBMIT_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function changeReportComment(comment) { | export function changeReportComment(comment) { | ||||||
|   return { |   return { | ||||||
|     type: REPORT_COMMENT_CHANGE, |     type: REPORT_COMMENT_CHANGE, | ||||||
|     comment |     comment, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from '../api' | import api from '../api'; | ||||||
| 
 | 
 | ||||||
| export const SEARCH_CHANGE = 'SEARCH_CHANGE'; | export const SEARCH_CHANGE = 'SEARCH_CHANGE'; | ||||||
| export const SEARCH_CLEAR  = 'SEARCH_CLEAR'; | export const SEARCH_CLEAR  = 'SEARCH_CLEAR'; | ||||||
|  | @ -11,13 +11,13 @@ export const SEARCH_FETCH_FAIL    = 'SEARCH_FETCH_FAIL'; | ||||||
| export function changeSearch(value) { | export function changeSearch(value) { | ||||||
|   return { |   return { | ||||||
|     type: SEARCH_CHANGE, |     type: SEARCH_CHANGE, | ||||||
|     value |     value, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function clearSearch() { | export function clearSearch() { | ||||||
|   return { |   return { | ||||||
|     type: SEARCH_CLEAR |     type: SEARCH_CLEAR, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -34,8 +34,8 @@ export function submitSearch() { | ||||||
|     api(getState).get('/api/v1/search', { |     api(getState).get('/api/v1/search', { | ||||||
|       params: { |       params: { | ||||||
|         q: value, |         q: value, | ||||||
|         resolve: true |         resolve: true, | ||||||
|       } |       }, | ||||||
|     }).then(response => { |     }).then(response => { | ||||||
|       dispatch(fetchSearchSuccess(response.data)); |       dispatch(fetchSearchSuccess(response.data)); | ||||||
|     }).catch(error => { |     }).catch(error => { | ||||||
|  | @ -46,7 +46,7 @@ export function submitSearch() { | ||||||
| 
 | 
 | ||||||
| export function fetchSearchRequest() { | export function fetchSearchRequest() { | ||||||
|   return { |   return { | ||||||
|     type: SEARCH_FETCH_REQUEST |     type: SEARCH_FETCH_REQUEST, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -55,19 +55,19 @@ export function fetchSearchSuccess(results) { | ||||||
|     type: SEARCH_FETCH_SUCCESS, |     type: SEARCH_FETCH_SUCCESS, | ||||||
|     results, |     results, | ||||||
|     accounts: results.accounts, |     accounts: results.accounts, | ||||||
|     statuses: results.statuses |     statuses: results.statuses, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function fetchSearchFail(error) { | export function fetchSearchFail(error) { | ||||||
|   return { |   return { | ||||||
|     type: SEARCH_FETCH_FAIL, |     type: SEARCH_FETCH_FAIL, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function showSearch() { | export function showSearch() { | ||||||
|   return { |   return { | ||||||
|     type: SEARCH_SHOW |     type: SEARCH_SHOW, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -6,14 +6,14 @@ export function changeSetting(key, value) { | ||||||
|   return { |   return { | ||||||
|     type: SETTING_CHANGE, |     type: SETTING_CHANGE, | ||||||
|     key, |     key, | ||||||
|     value |     value, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function saveSettings() { | export function saveSettings() { | ||||||
|   return (_, getState) => { |   return (_, getState) => { | ||||||
|     axios.put('/api/web/settings', { |     axios.put('/api/web/settings', { | ||||||
|       data: getState().get('settings').toJS() |       data: getState().get('settings').toJS(), | ||||||
|     }); |     }); | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -27,7 +27,7 @@ export function fetchStatusRequest(id, skipLoading) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_FETCH_REQUEST, |     type: STATUS_FETCH_REQUEST, | ||||||
|     id, |     id, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -56,7 +56,7 @@ export function fetchStatusSuccess(status, skipLoading) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_FETCH_SUCCESS, |     type: STATUS_FETCH_SUCCESS, | ||||||
|     status, |     status, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -66,7 +66,7 @@ export function fetchStatusFail(id, error, skipLoading) { | ||||||
|     id, |     id, | ||||||
|     error, |     error, | ||||||
|     skipLoading, |     skipLoading, | ||||||
|     skipAlert: true |     skipAlert: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -86,14 +86,14 @@ export function deleteStatus(id) { | ||||||
| export function deleteStatusRequest(id) { | export function deleteStatusRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_DELETE_REQUEST, |     type: STATUS_DELETE_REQUEST, | ||||||
|     id: id |     id: id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function deleteStatusSuccess(id) { | export function deleteStatusSuccess(id) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_DELETE_SUCCESS, |     type: STATUS_DELETE_SUCCESS, | ||||||
|     id: id |     id: id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -101,7 +101,7 @@ export function deleteStatusFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_DELETE_FAIL, |     type: STATUS_DELETE_FAIL, | ||||||
|     id: id, |     id: id, | ||||||
|     error: error |     error: error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -125,7 +125,7 @@ export function fetchContext(id) { | ||||||
| export function fetchContextRequest(id) { | export function fetchContextRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: CONTEXT_FETCH_REQUEST, |     type: CONTEXT_FETCH_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -135,7 +135,7 @@ export function fetchContextSuccess(id, ancestors, descendants) { | ||||||
|     id, |     id, | ||||||
|     ancestors, |     ancestors, | ||||||
|     descendants, |     descendants, | ||||||
|     statuses: ancestors.concat(descendants) |     statuses: ancestors.concat(descendants), | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -144,7 +144,7 @@ export function fetchContextFail(id, error) { | ||||||
|     type: CONTEXT_FETCH_FAIL, |     type: CONTEXT_FETCH_FAIL, | ||||||
|     id, |     id, | ||||||
|     error, |     error, | ||||||
|     skipAlert: true |     skipAlert: true, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -163,14 +163,14 @@ export function muteStatus(id) { | ||||||
| export function muteStatusRequest(id) { | export function muteStatusRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_MUTE_REQUEST, |     type: STATUS_MUTE_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function muteStatusSuccess(id) { | export function muteStatusSuccess(id) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_MUTE_SUCCESS, |     type: STATUS_MUTE_SUCCESS, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -178,7 +178,7 @@ export function muteStatusFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_MUTE_FAIL, |     type: STATUS_MUTE_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -197,14 +197,14 @@ export function unmuteStatus(id) { | ||||||
| export function unmuteStatusRequest(id) { | export function unmuteStatusRequest(id) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_UNMUTE_REQUEST, |     type: STATUS_UNMUTE_REQUEST, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function unmuteStatusSuccess(id) { | export function unmuteStatusSuccess(id) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_UNMUTE_SUCCESS, |     type: STATUS_UNMUTE_SUCCESS, | ||||||
|     id |     id, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -212,6 +212,6 @@ export function unmuteStatusFail(id, error) { | ||||||
|   return { |   return { | ||||||
|     type: STATUS_UNMUTE_FAIL, |     type: STATUS_UNMUTE_FAIL, | ||||||
|     id, |     id, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -12,6 +12,6 @@ export function hydrateStore(rawState) { | ||||||
| 
 | 
 | ||||||
|   return { |   return { | ||||||
|     type: STORE_HYDRATE, |     type: STORE_HYDRATE, | ||||||
|     state |     state, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from '../api' | import api, { getLinks } from '../api'; | ||||||
| import Immutable from 'immutable'; | import Immutable from 'immutable'; | ||||||
| 
 | 
 | ||||||
| export const TIMELINE_UPDATE  = 'TIMELINE_UPDATE'; | export const TIMELINE_UPDATE  = 'TIMELINE_UPDATE'; | ||||||
|  | @ -23,7 +23,7 @@ export function refreshTimelineSuccess(timeline, statuses, skipLoading, next) { | ||||||
|     timeline, |     timeline, | ||||||
|     statuses, |     statuses, | ||||||
|     skipLoading, |     skipLoading, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -35,7 +35,7 @@ export function updateTimeline(timeline, status) { | ||||||
|       type: TIMELINE_UPDATE, |       type: TIMELINE_UPDATE, | ||||||
|       timeline, |       timeline, | ||||||
|       status, |       status, | ||||||
|       references |       references, | ||||||
|     }); |     }); | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  | @ -51,7 +51,7 @@ export function deleteFromTimelines(id) { | ||||||
|       id, |       id, | ||||||
|       accountId, |       accountId, | ||||||
|       references, |       references, | ||||||
|       reblogOf |       reblogOf, | ||||||
|     }); |     }); | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  | @ -61,7 +61,7 @@ export function refreshTimelineRequest(timeline, id, skipLoading) { | ||||||
|     type: TIMELINE_REFRESH_REQUEST, |     type: TIMELINE_REFRESH_REQUEST, | ||||||
|     timeline, |     timeline, | ||||||
|     id, |     id, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -106,7 +106,7 @@ export function refreshTimelineFail(timeline, error, skipLoading) { | ||||||
|     type: TIMELINE_REFRESH_FAIL, |     type: TIMELINE_REFRESH_FAIL, | ||||||
|     timeline, |     timeline, | ||||||
|     error, |     error, | ||||||
|     skipLoading |     skipLoading, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -130,8 +130,8 @@ export function expandTimeline(timeline) { | ||||||
|       params: { |       params: { | ||||||
|         ...params, |         ...params, | ||||||
|         max_id: lastId, |         max_id: lastId, | ||||||
|         limit: 10 |         limit: 10, | ||||||
|       } |       }, | ||||||
|     }).then(response => { |     }).then(response => { | ||||||
|       const next = getLinks(response).refs.find(link => link.rel === 'next'); |       const next = getLinks(response).refs.find(link => link.rel === 'next'); | ||||||
|       dispatch(expandTimelineSuccess(timeline, response.data, next ? next.uri : null)); |       dispatch(expandTimelineSuccess(timeline, response.data, next ? next.uri : null)); | ||||||
|  | @ -144,7 +144,7 @@ export function expandTimeline(timeline) { | ||||||
| export function expandTimelineRequest(timeline) { | export function expandTimelineRequest(timeline) { | ||||||
|   return { |   return { | ||||||
|     type: TIMELINE_EXPAND_REQUEST, |     type: TIMELINE_EXPAND_REQUEST, | ||||||
|     timeline |     timeline, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -153,7 +153,7 @@ export function expandTimelineSuccess(timeline, statuses, next) { | ||||||
|     type: TIMELINE_EXPAND_SUCCESS, |     type: TIMELINE_EXPAND_SUCCESS, | ||||||
|     timeline, |     timeline, | ||||||
|     statuses, |     statuses, | ||||||
|     next |     next, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -161,7 +161,7 @@ export function expandTimelineFail(timeline, error) { | ||||||
|   return { |   return { | ||||||
|     type: TIMELINE_EXPAND_FAIL, |     type: TIMELINE_EXPAND_FAIL, | ||||||
|     timeline, |     timeline, | ||||||
|     error |     error, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -169,20 +169,20 @@ export function scrollTopTimeline(timeline, top) { | ||||||
|   return { |   return { | ||||||
|     type: TIMELINE_SCROLL_TOP, |     type: TIMELINE_SCROLL_TOP, | ||||||
|     timeline, |     timeline, | ||||||
|     top |     top, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function connectTimeline(timeline) { | export function connectTimeline(timeline) { | ||||||
|   return { |   return { | ||||||
|     type: TIMELINE_CONNECT, |     type: TIMELINE_CONNECT, | ||||||
|     timeline |     timeline, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export function disconnectTimeline(timeline) { | export function disconnectTimeline(timeline) { | ||||||
|   return { |   return { | ||||||
|     type: TIMELINE_DISCONNECT, |     type: TIMELINE_DISCONNECT, | ||||||
|     timeline |     timeline, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ export const getLinks = response => { | ||||||
| 
 | 
 | ||||||
| export default getState => axios.create({ | export default getState => axios.create({ | ||||||
|   headers: { |   headers: { | ||||||
|     'Authorization': `Bearer ${getState().getIn(['meta', 'access_token'], '')}` |     'Authorization': `Bearer ${getState().getIn(['meta', 'access_token'], '')}`, | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   transformResponse: [function (data) { |   transformResponse: [function (data) { | ||||||
|  | @ -22,5 +22,5 @@ export default getState => axios.create({ | ||||||
|     } catch(Exception) { |     } catch(Exception) { | ||||||
|       return data; |       return data; | ||||||
|     } |     } | ||||||
|   }] |   }], | ||||||
| }); | }); | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ const messages = defineMessages({ | ||||||
|   unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, |   unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, | ||||||
|   requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' }, |   requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' }, | ||||||
|   unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, |   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 { | class Account extends ImmutablePureComponent { | ||||||
|  | @ -24,7 +24,7 @@ class Account extends ImmutablePureComponent { | ||||||
|     onFollow: PropTypes.func.isRequired, |     onFollow: PropTypes.func.isRequired, | ||||||
|     onBlock: PropTypes.func.isRequired, |     onBlock: PropTypes.func.isRequired, | ||||||
|     onMute: PropTypes.func.isRequired, |     onMute: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   constructor (props, context) { |   constructor (props, context) { | ||||||
|  | @ -62,7 +62,7 @@ class Account extends ImmutablePureComponent { | ||||||
|       const muting  = account.getIn(['relationship', 'muting']); |       const muting  = account.getIn(['relationship', 'muting']); | ||||||
| 
 | 
 | ||||||
|       if (requested) { |       if (requested) { | ||||||
|         buttons = <IconButton disabled={true} icon='hourglass' title={intl.formatMessage(messages.requested)} /> |         buttons = <IconButton disabled={true} icon='hourglass' title={intl.formatMessage(messages.requested)} />; | ||||||
|       } else if (blocking) { |       } else if (blocking) { | ||||||
|         buttons = <IconButton active={true} icon='unlock-alt' title={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.handleBlock} />; |         buttons = <IconButton active={true} icon='unlock-alt' title={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.handleBlock} />; | ||||||
|       } else if (muting) { |       } else if (muting) { | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ const filename = url => url.split('/').pop().split('#')[0].split('?')[0]; | ||||||
| class AttachmentList extends React.PureComponent { | class AttachmentList extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     media: ImmutablePropTypes.list.isRequired |     media: ImmutablePropTypes.list.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -44,11 +44,11 @@ class AutosuggestTextarea extends ImmutablePureComponent { | ||||||
|     onKeyUp: PropTypes.func, |     onKeyUp: PropTypes.func, | ||||||
|     onKeyDown: PropTypes.func, |     onKeyDown: PropTypes.func, | ||||||
|     onPaste: PropTypes.func.isRequired, |     onPaste: PropTypes.func.isRequired, | ||||||
|     autoFocus: PropTypes.bool |     autoFocus: PropTypes.bool, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static defaultProps = { |   static defaultProps = { | ||||||
|     autoFocus: true |     autoFocus: true, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   constructor (props, context) { |   constructor (props, context) { | ||||||
|  | @ -57,7 +57,7 @@ class AutosuggestTextarea extends ImmutablePureComponent { | ||||||
|       suggestionsHidden: false, |       suggestionsHidden: false, | ||||||
|       selectedSuggestion: 0, |       selectedSuggestion: 0, | ||||||
|       lastToken: null, |       lastToken: null, | ||||||
|       tokenStart: 0 |       tokenStart: 0, | ||||||
|     }; |     }; | ||||||
|     this.onChange = this.onChange.bind(this); |     this.onChange = this.onChange.bind(this); | ||||||
|     this.onKeyDown = this.onKeyDown.bind(this); |     this.onKeyDown = this.onKeyDown.bind(this); | ||||||
|  | @ -164,7 +164,7 @@ class AutosuggestTextarea extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   onPaste (e) { |   onPaste (e) { | ||||||
|     if (e.clipboardData && e.clipboardData.files.length === 1) { |     if (e.clipboardData && e.clipboardData.files.length === 1) { | ||||||
|       this.props.onPaste(e.clipboardData.files) |       this.props.onPaste(e.clipboardData.files); | ||||||
|       e.preventDefault(); |       e.preventDefault(); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -9,17 +9,17 @@ class Avatar extends React.PureComponent { | ||||||
|     size: PropTypes.number.isRequired, |     size: PropTypes.number.isRequired, | ||||||
|     style: PropTypes.object, |     style: PropTypes.object, | ||||||
|     animate: PropTypes.bool, |     animate: PropTypes.bool, | ||||||
|     inline: PropTypes.bool |     inline: PropTypes.bool, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static defaultProps = { |   static defaultProps = { | ||||||
|     animate: false, |     animate: false, | ||||||
|     size: 20, |     size: 20, | ||||||
|     inline: false |     inline: false, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   state = { |   state = { | ||||||
|     hovering: true |     hovering: true, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleMouseEnter = () => { |   handleMouseEnter = () => { | ||||||
|  | @ -46,7 +46,7 @@ class Avatar extends React.PureComponent { | ||||||
|       ...this.props.style, |       ...this.props.style, | ||||||
|       width: `${size}px`, |       width: `${size}px`, | ||||||
|       height: `${size}px`, |       height: `${size}px`, | ||||||
|       backgroundSize: `${size}px ${size}px` |       backgroundSize: `${size}px ${size}px`, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     if (hovering || animate) { |     if (hovering || animate) { | ||||||
|  |  | ||||||
|  | @ -2,20 +2,21 @@ import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| 
 | 
 | ||||||
| class AvatarOverlay extends React.PureComponent { | class AvatarOverlay extends React.PureComponent { | ||||||
|  | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     staticSrc: PropTypes.string.isRequired, |     staticSrc: PropTypes.string.isRequired, | ||||||
|     overlaySrc: PropTypes.string.isRequired |     overlaySrc: PropTypes.string.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render() { |   render() { | ||||||
|     const {staticSrc, overlaySrc} = this.props; |     const {staticSrc, overlaySrc} = this.props; | ||||||
| 
 | 
 | ||||||
|     const baseStyle = { |     const baseStyle = { | ||||||
|       backgroundImage: `url(${staticSrc})` |       backgroundImage: `url(${staticSrc})`, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     const overlayStyle = { |     const overlayStyle = { | ||||||
|       backgroundImage: `url(${overlaySrc})` |       backgroundImage: `url(${overlaySrc})`, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|  |  | ||||||
|  | @ -11,11 +11,11 @@ class Button extends React.PureComponent { | ||||||
|     secondary: PropTypes.bool, |     secondary: PropTypes.bool, | ||||||
|     size: PropTypes.number, |     size: PropTypes.number, | ||||||
|     style: PropTypes.object, |     style: PropTypes.object, | ||||||
|     children: PropTypes.node |     children: PropTypes.node, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static defaultProps = { |   static defaultProps = { | ||||||
|     size: 36 |     size: 36, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = (e) => { |   handleClick = (e) => { | ||||||
|  | @ -29,7 +29,7 @@ class Button extends React.PureComponent { | ||||||
|       padding: `0 ${this.props.size / 2.25}px`, |       padding: `0 ${this.props.size / 2.25}px`, | ||||||
|       height: `${this.props.size}px`, |       height: `${this.props.size}px`, | ||||||
|       lineHeight: `${this.props.size}px`, |       lineHeight: `${this.props.size}px`, | ||||||
|       ...this.props.style |       ...this.props.style, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ const Collapsable = ({ fullHeight, isVisible, children }) => ( | ||||||
| Collapsable.propTypes = { | Collapsable.propTypes = { | ||||||
|   fullHeight: PropTypes.number.isRequired, |   fullHeight: PropTypes.number.isRequired, | ||||||
|   isVisible: PropTypes.bool.isRequired, |   isVisible: PropTypes.bool.isRequired, | ||||||
|   children: PropTypes.node.isRequired |   children: PropTypes.node.isRequired, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default Collapsable; | export default Collapsable; | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import PropTypes from 'prop-types'; | ||||||
| class ColumnBackButton extends React.PureComponent { | class ColumnBackButton extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static contextTypes = { |   static contextTypes = { | ||||||
|     router: PropTypes.object |     router: PropTypes.object, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = () => { |   handleClick = () => { | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import PropTypes from 'prop-types'; | ||||||
| class ColumnBackButtonSlim extends React.PureComponent { | class ColumnBackButtonSlim extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static contextTypes = { |   static contextTypes = { | ||||||
|     router: PropTypes.object |     router: PropTypes.object, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = () => { |   handleClick = () => { | ||||||
|  | @ -22,6 +22,7 @@ class ColumnBackButtonSlim extends React.PureComponent { | ||||||
|       </div> |       </div> | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default ColumnBackButtonSlim; | export default ColumnBackButtonSlim; | ||||||
|  |  | ||||||
|  | @ -8,11 +8,11 @@ class ColumnCollapsable extends React.PureComponent { | ||||||
|     title: PropTypes.string, |     title: PropTypes.string, | ||||||
|     fullHeight: PropTypes.number.isRequired, |     fullHeight: PropTypes.number.isRequired, | ||||||
|     children: PropTypes.node, |     children: PropTypes.node, | ||||||
|     onCollapse: PropTypes.func |     onCollapse: PropTypes.func, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   state = { |   state = { | ||||||
|     collapsed: true |     collapsed: true, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleToggleCollapsed = () => { |   handleToggleCollapsed = () => { | ||||||
|  | @ -41,6 +41,7 @@ class ColumnCollapsable extends React.PureComponent { | ||||||
|       </div> |       </div> | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default ColumnCollapsable; | export default ColumnCollapsable; | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import emojify from '../emoji'; | ||||||
| class DisplayName extends React.PureComponent { | class DisplayName extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     account: ImmutablePropTypes.map.isRequired |     account: ImmutablePropTypes.map.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import PropTypes from 'prop-types'; | ||||||
| class DropdownMenu extends React.PureComponent { | class DropdownMenu extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static contextTypes = { |   static contextTypes = { | ||||||
|     router: PropTypes.object |     router: PropTypes.object, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|  | @ -13,11 +13,11 @@ class DropdownMenu extends React.PureComponent { | ||||||
|     items: PropTypes.array.isRequired, |     items: PropTypes.array.isRequired, | ||||||
|     size: PropTypes.number.isRequired, |     size: PropTypes.number.isRequired, | ||||||
|     direction: PropTypes.string, |     direction: PropTypes.string, | ||||||
|     ariaLabel: PropTypes.string |     ariaLabel: PropTypes.string, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static defaultProps = { |   static defaultProps = { | ||||||
|     ariaLabel: "Menu" |     ariaLabel: "Menu", | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   state = { |   state = { | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ class ExtendedVideoPlayer extends React.PureComponent { | ||||||
|     src: PropTypes.string.isRequired, |     src: PropTypes.string.isRequired, | ||||||
|     time: PropTypes.number, |     time: PropTypes.number, | ||||||
|     controls: PropTypes.bool.isRequired, |     controls: PropTypes.bool.isRequired, | ||||||
|     muted: PropTypes.bool.isRequired |     muted: PropTypes.bool.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleLoadedData = () => { |   handleLoadedData = () => { | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ class IconButton extends React.PureComponent { | ||||||
|     disabled: PropTypes.bool, |     disabled: PropTypes.bool, | ||||||
|     inverted: PropTypes.bool, |     inverted: PropTypes.bool, | ||||||
|     animate: PropTypes.bool, |     animate: PropTypes.bool, | ||||||
|     overlay: PropTypes.bool |     overlay: PropTypes.bool, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static defaultProps = { |   static defaultProps = { | ||||||
|  | @ -25,7 +25,7 @@ class IconButton extends React.PureComponent { | ||||||
|     active: false, |     active: false, | ||||||
|     disabled: false, |     disabled: false, | ||||||
|     animate: false, |     animate: false, | ||||||
|     overlay: false |     overlay: false, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = (e) =>  { |   handleClick = (e) =>  { | ||||||
|  | @ -43,7 +43,7 @@ class IconButton extends React.PureComponent { | ||||||
|       height: `${this.props.size * 1.28571429}px`, |       height: `${this.props.size * 1.28571429}px`, | ||||||
|       lineHeight: `${this.props.size}px`, |       lineHeight: `${this.props.size}px`, | ||||||
|       ...this.props.style, |       ...this.props.style, | ||||||
|       ...(this.props.active ? this.props.activeStyle : {}) |       ...(this.props.active ? this.props.activeStyle : {}), | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     const classes = ['icon-button']; |     const classes = ['icon-button']; | ||||||
|  | @ -65,7 +65,7 @@ class IconButton extends React.PureComponent { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (this.props.className) { |     if (this.props.className) { | ||||||
|       classes.push(this.props.className) |       classes.push(this.props.className); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ const LoadMore = ({ onClick }) => ( | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| LoadMore.propTypes = { | LoadMore.propTypes = { | ||||||
|   onClick: PropTypes.func |   onClick: PropTypes.func, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default LoadMore; | export default LoadMore; | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| import { isIOS } from '../is_mobile'; | import { isIOS } from '../is_mobile'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | 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 { | class Item extends React.PureComponent { | ||||||
|  | @ -16,7 +16,7 @@ class Item extends React.PureComponent { | ||||||
|     index: PropTypes.number.isRequired, |     index: PropTypes.number.isRequired, | ||||||
|     size: PropTypes.number.isRequired, |     size: PropTypes.number.isRequired, | ||||||
|     onClick: PropTypes.func.isRequired, |     onClick: PropTypes.func.isRequired, | ||||||
|     autoPlayGif: PropTypes.bool.isRequired |     autoPlayGif: PropTypes.bool.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = (e) => { |   handleClick = (e) => { | ||||||
|  | @ -131,11 +131,11 @@ class MediaGallery extends React.PureComponent { | ||||||
|     height: PropTypes.number.isRequired, |     height: PropTypes.number.isRequired, | ||||||
|     onOpenMedia: PropTypes.func.isRequired, |     onOpenMedia: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired, |     intl: PropTypes.object.isRequired, | ||||||
|     autoPlayGif: PropTypes.bool.isRequired |     autoPlayGif: PropTypes.bool.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   state = { |   state = { | ||||||
|     visible: !this.props.sensitive |     visible: !this.props.sensitive, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleOpen = (e) => { |   handleOpen = (e) => { | ||||||
|  |  | ||||||
|  | @ -4,14 +4,14 @@ import PropTypes from 'prop-types'; | ||||||
| class Permalink extends React.PureComponent { | class Permalink extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static contextTypes = { |   static contextTypes = { | ||||||
|     router: PropTypes.object |     router: PropTypes.object, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     className: PropTypes.string, |     className: PropTypes.string, | ||||||
|     href: PropTypes.string.isRequired, |     href: PropTypes.string.isRequired, | ||||||
|     to: PropTypes.string.isRequired, |     to: PropTypes.string.isRequired, | ||||||
|     children: PropTypes.node |     children: PropTypes.node, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = (e) => { |   handleClick = (e) => { | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ const RelativeTimestamp = ({ intl, timestamp }) => { | ||||||
| 
 | 
 | ||||||
| RelativeTimestamp.propTypes = { | RelativeTimestamp.propTypes = { | ||||||
|   intl: PropTypes.object.isRequired, |   intl: PropTypes.object.isRequired, | ||||||
|   timestamp: PropTypes.string.isRequired |   timestamp: PropTypes.string.isRequired, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default injectIntl(RelativeTimestamp); | export default injectIntl(RelativeTimestamp); | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| class Status extends ImmutablePureComponent { | class Status extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   static contextTypes = { |   static contextTypes = { | ||||||
|     router: PropTypes.object |     router: PropTypes.object, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|  | @ -35,7 +35,7 @@ class Status extends ImmutablePureComponent { | ||||||
|     me: PropTypes.number, |     me: PropTypes.number, | ||||||
|     boostModal: PropTypes.bool, |     boostModal: PropTypes.bool, | ||||||
|     autoPlayGif: PropTypes.bool, |     autoPlayGif: PropTypes.bool, | ||||||
|     muted: PropTypes.bool |     muted: PropTypes.bool, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = () => { |   handleClick = () => { | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ const messages = defineMessages({ | ||||||
| class StatusActionBar extends React.PureComponent { | class StatusActionBar extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static contextTypes = { |   static contextTypes = { | ||||||
|     router: PropTypes.object |     router: PropTypes.object, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|  | @ -40,7 +40,7 @@ class StatusActionBar extends React.PureComponent { | ||||||
|     onMuteConversation: PropTypes.func, |     onMuteConversation: PropTypes.func, | ||||||
|     me: PropTypes.number.isRequired, |     me: PropTypes.number.isRequired, | ||||||
|     withDismiss: PropTypes.bool, |     withDismiss: PropTypes.bool, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleReplyClick = () => { |   handleReplyClick = () => { | ||||||
|  |  | ||||||
|  | @ -10,16 +10,16 @@ import Permalink from './permalink'; | ||||||
| class StatusContent extends React.PureComponent { | class StatusContent extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static contextTypes = { |   static contextTypes = { | ||||||
|     router: PropTypes.object |     router: PropTypes.object, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     status: ImmutablePropTypes.map.isRequired, |     status: ImmutablePropTypes.map.isRequired, | ||||||
|     onClick: PropTypes.func |     onClick: PropTypes.func, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   state = { |   state = { | ||||||
|     hidden: true |     hidden: true, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentDidMount () { |   componentDidMount () { | ||||||
|  | @ -107,7 +107,7 @@ class StatusContent extends React.PureComponent { | ||||||
|         <Permalink to={`/accounts/${item.get('id')}`} href={item.get('url')} key={item.get('id')} className='mention'> |         <Permalink to={`/accounts/${item.get('id')}`} href={item.get('url')} key={item.get('id')} className='mention'> | ||||||
|           @<span>{item.get('username')}</span> |           @<span>{item.get('username')}</span> | ||||||
|         </Permalink> |         </Permalink> | ||||||
|       )).reduce((aggregate, item) => [...aggregate, item, ' '], []) |       )).reduce((aggregate, item) => [...aggregate, item, ' '], []); | ||||||
| 
 | 
 | ||||||
|       const toggleText = hidden ? <FormattedMessage id='status.show_more' defaultMessage='Show more' /> : <FormattedMessage id='status.show_less' defaultMessage='Show less' />; |       const toggleText = hidden ? <FormattedMessage id='status.show_more' defaultMessage='Show more' /> : <FormattedMessage id='status.show_less' defaultMessage='Show less' />; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -20,11 +20,11 @@ class StatusList extends ImmutablePureComponent { | ||||||
|     isUnread: PropTypes.bool, |     isUnread: PropTypes.bool, | ||||||
|     hasMore: PropTypes.bool, |     hasMore: PropTypes.bool, | ||||||
|     prepend: PropTypes.node, |     prepend: PropTypes.node, | ||||||
|     emptyMessage: PropTypes.node |     emptyMessage: PropTypes.node, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static defaultProps = { |   static defaultProps = { | ||||||
|     trackScroll: true |     trackScroll: true, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleScroll = (e) => { |   handleScroll = (e) => { | ||||||
|  |  | ||||||
|  | @ -20,12 +20,12 @@ class VideoPlayer extends React.PureComponent { | ||||||
|     sensitive: PropTypes.bool, |     sensitive: PropTypes.bool, | ||||||
|     intl: PropTypes.object.isRequired, |     intl: PropTypes.object.isRequired, | ||||||
|     autoplay: PropTypes.bool, |     autoplay: PropTypes.bool, | ||||||
|     onOpenVideo: PropTypes.func.isRequired |     onOpenVideo: PropTypes.func.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static defaultProps = { |   static defaultProps = { | ||||||
|     width: 239, |     width: 239, | ||||||
|     height: 110 |     height: 110, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   state = { |   state = { | ||||||
|  | @ -33,7 +33,7 @@ class VideoPlayer extends React.PureComponent { | ||||||
|     preview: true, |     preview: true, | ||||||
|     muted: true, |     muted: true, | ||||||
|     hasAudio: true, |     hasAudio: true, | ||||||
|     videoError: false |     videoError: false, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = () => { |   handleClick = () => { | ||||||
|  | @ -59,7 +59,7 @@ class VideoPlayer extends React.PureComponent { | ||||||
|   handleVisibility = () => { |   handleVisibility = () => { | ||||||
|     this.setState({ |     this.setState({ | ||||||
|       visible: !this.state.visible, |       visible: !this.state.visible, | ||||||
|       preview: true |       preview: true, | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ const makeMapStateToProps = () => { | ||||||
| 
 | 
 | ||||||
|   const mapStateToProps = (state, props) => ({ |   const mapStateToProps = (state, props) => ({ | ||||||
|     account: getAccount(state, props.id), |     account: getAccount(state, props.id), | ||||||
|     me: state.getIn(['meta', 'me']) |     me: state.getIn(['meta', 'me']), | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   return mapStateToProps; |   return mapStateToProps; | ||||||
|  | @ -44,7 +44,7 @@ const mapDispatchToProps = (dispatch) => ({ | ||||||
|     } else { |     } else { | ||||||
|       dispatch(muteAccount(account.get('id'))); |       dispatch(muteAccount(account.get('id'))); | ||||||
|     } |     } | ||||||
|   } |   }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| export default connect(makeMapStateToProps, mapDispatchToProps)(Account); | export default connect(makeMapStateToProps, mapDispatchToProps)(Account); | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ import { | ||||||
|   deleteFromTimelines, |   deleteFromTimelines, | ||||||
|   refreshTimeline, |   refreshTimeline, | ||||||
|   connectTimeline, |   connectTimeline, | ||||||
|   disconnectTimeline |   disconnectTimeline, | ||||||
| } from '../actions/timelines'; | } from '../actions/timelines'; | ||||||
| import { showOnboardingOnce } from '../actions/onboarding'; | import { showOnboardingOnce } from '../actions/onboarding'; | ||||||
| import { updateNotifications, refreshNotifications } from '../actions/notifications'; | import { updateNotifications, refreshNotifications } from '../actions/notifications'; | ||||||
|  | @ -75,7 +75,7 @@ const initialState = JSON.parse(document.getElementById("initial-state").textCon | ||||||
| store.dispatch(hydrateStore(initialState)); | store.dispatch(hydrateStore(initialState)); | ||||||
| 
 | 
 | ||||||
| const browserHistory = useRouterHistory(createBrowserHistory)({ | const browserHistory = useRouterHistory(createBrowserHistory)({ | ||||||
|   basename: '/web' |   basename: '/web', | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| addLocaleData([ | addLocaleData([ | ||||||
|  | @ -155,7 +155,7 @@ class Mastodon extends React.PureComponent { | ||||||
|         store.dispatch(connectTimeline('home')); |         store.dispatch(connectTimeline('home')); | ||||||
|         store.dispatch(refreshTimeline('home')); |         store.dispatch(refreshTimeline('home')); | ||||||
|         store.dispatch(refreshNotifications()); |         store.dispatch(refreshNotifications()); | ||||||
|       } |       }, | ||||||
| 
 | 
 | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  | @ -223,7 +223,7 @@ class Mastodon extends React.PureComponent { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Mastodon.propTypes = { | Mastodon.propTypes = { | ||||||
|   locale: PropTypes.string.isRequired |   locale: PropTypes.string.isRequired, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default Mastodon; | export default Mastodon; | ||||||
|  |  | ||||||
|  | @ -4,23 +4,23 @@ import Status from '../components/status'; | ||||||
| import { makeGetStatus } from '../selectors'; | import { makeGetStatus } from '../selectors'; | ||||||
| import { | import { | ||||||
|   replyCompose, |   replyCompose, | ||||||
|   mentionCompose |   mentionCompose, | ||||||
| } from '../actions/compose'; | } from '../actions/compose'; | ||||||
| import { | import { | ||||||
|   reblog, |   reblog, | ||||||
|   favourite, |   favourite, | ||||||
|   unreblog, |   unreblog, | ||||||
|   unfavourite |   unfavourite, | ||||||
| } from '../actions/interactions'; | } from '../actions/interactions'; | ||||||
| import { | import { | ||||||
|   blockAccount, |   blockAccount, | ||||||
|   muteAccount |   muteAccount, | ||||||
| } from '../actions/accounts'; | } from '../actions/accounts'; | ||||||
| import { muteStatus, unmuteStatus, deleteStatus } from '../actions/statuses'; | import { muteStatus, unmuteStatus, deleteStatus } from '../actions/statuses'; | ||||||
| import { initReport } from '../actions/reports'; | import { initReport } from '../actions/reports'; | ||||||
| import { openModal } from '../actions/modal'; | import { openModal } from '../actions/modal'; | ||||||
| import { createSelector } from 'reselect' | import { createSelector } from 'reselect'; | ||||||
| import { isMobile } from '../is_mobile' | import { isMobile } from '../is_mobile'; | ||||||
| import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|  | @ -37,7 +37,7 @@ const makeMapStateToProps = () => { | ||||||
|     status: getStatus(state, props.id), |     status: getStatus(state, props.id), | ||||||
|     me: state.getIn(['meta', 'me']), |     me: state.getIn(['meta', 'me']), | ||||||
|     boostModal: state.getIn(['meta', 'boost_modal']), |     boostModal: state.getIn(['meta', 'boost_modal']), | ||||||
|     autoPlayGif: state.getIn(['meta', 'auto_play_gif']) |     autoPlayGif: state.getIn(['meta', 'auto_play_gif']), | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   return mapStateToProps; |   return mapStateToProps; | ||||||
|  | @ -77,7 +77,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ | ||||||
|     dispatch(openModal('CONFIRM', { |     dispatch(openModal('CONFIRM', { | ||||||
|       message: intl.formatMessage(messages.deleteMessage), |       message: intl.formatMessage(messages.deleteMessage), | ||||||
|       confirm: intl.formatMessage(messages.deleteConfirm), |       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', { |     dispatch(openModal('CONFIRM', { | ||||||
|       message: <FormattedMessage id='confirmations.block.message' defaultMessage='Are you sure you want to block {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />, |       message: <FormattedMessage id='confirmations.block.message' defaultMessage='Are you sure you want to block {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />, | ||||||
|       confirm: intl.formatMessage(messages.blockConfirm), |       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', { |     dispatch(openModal('CONFIRM', { | ||||||
|       message: <FormattedMessage id='confirmations.mute.message' defaultMessage='Are you sure you want to mute {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />, |       message: <FormattedMessage id='confirmations.mute.message' defaultMessage='Are you sure you want to mute {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />, | ||||||
|       confirm: intl.formatMessage(messages.muteConfirm), |       confirm: intl.formatMessage(messages.muteConfirm), | ||||||
|       onConfirm: () => dispatch(muteAccount(account.get('id'))) |       onConfirm: () => dispatch(muteAccount(account.get('id'))), | ||||||
|     })); |     })); | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -33,7 +33,7 @@ class ActionBar extends React.PureComponent { | ||||||
|     onMute: PropTypes.func.isRequired, |     onMute: PropTypes.func.isRequired, | ||||||
|     onBlockDomain: PropTypes.func.isRequired, |     onBlockDomain: PropTypes.func.isRequired, | ||||||
|     onUnblockDomain: PropTypes.func.isRequired, |     onUnblockDomain: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -13,12 +13,12 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, |   unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, | ||||||
|   follow: { id: 'account.follow', defaultMessage: 'Follow' }, |   follow: { id: 'account.follow', defaultMessage: 'Follow' }, | ||||||
|   requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' } |   requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const makeMapStateToProps = () => { | const makeMapStateToProps = () => { | ||||||
|   const mapStateToProps = (state, props) => ({ |   const mapStateToProps = (state, props) => ({ | ||||||
|     autoPlayGif: state.getIn(['meta', 'auto_play_gif']) |     autoPlayGif: state.getIn(['meta', 'auto_play_gif']), | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   return mapStateToProps; |   return mapStateToProps; | ||||||
|  | @ -28,11 +28,11 @@ class Avatar extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     account: ImmutablePropTypes.map.isRequired, |     account: ImmutablePropTypes.map.isRequired, | ||||||
|     autoPlayGif: PropTypes.bool.isRequired |     autoPlayGif: PropTypes.bool.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   state = { |   state = { | ||||||
|     isHovered: false |     isHovered: false, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleMouseOver = () => { |   handleMouseOver = () => { | ||||||
|  | @ -77,7 +77,7 @@ class Header extends ImmutablePureComponent { | ||||||
|     me: PropTypes.number.isRequired, |     me: PropTypes.number.isRequired, | ||||||
|     onFollow: PropTypes.func.isRequired, |     onFollow: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired, |     intl: PropTypes.object.isRequired, | ||||||
|     autoPlayGif: PropTypes.bool.isRequired |     autoPlayGif: PropTypes.bool.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  | @ -97,7 +97,7 @@ class Header extends ImmutablePureComponent { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (me !== account.get('id') && account.getIn(['relationship', 'followed_by'])) { |     if (me !== account.get('id') && account.getIn(['relationship', 'followed_by'])) { | ||||||
|       info = <span className='account--follows-info'><FormattedMessage id='account.follows_you' defaultMessage='Follows you' /></span> |       info = <span className='account--follows-info'><FormattedMessage id='account.follows_you' defaultMessage='Follows you' /></span>; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (me !== account.get('id')) { |     if (me !== account.get('id')) { | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import Permalink from '../../../components/permalink'; | ||||||
| class MediaItem extends ImmutablePureComponent { | class MediaItem extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     media: ImmutablePropTypes.map.isRequired |     media: ImmutablePropTypes.map.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  | @ -34,6 +34,7 @@ class MediaItem extends ImmutablePureComponent { | ||||||
|       </div> |       </div> | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default MediaItem; | export default MediaItem; | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import PropTypes from 'prop-types'; | ||||||
| import { | import { | ||||||
|   fetchAccount, |   fetchAccount, | ||||||
|   fetchAccountMediaTimeline, |   fetchAccountMediaTimeline, | ||||||
|   expandAccountMediaTimeline |   expandAccountMediaTimeline, | ||||||
| } from '../../actions/accounts'; | } from '../../actions/accounts'; | ||||||
| import LoadingIndicator from '../../components/loading_indicator'; | import LoadingIndicator from '../../components/loading_indicator'; | ||||||
| import Column from '../ui/components/column'; | import Column from '../ui/components/column'; | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ class Header extends ImmutablePureComponent { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static contextTypes = { |   static contextTypes = { | ||||||
|     router: PropTypes.object |     router: PropTypes.object, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleFollow = () => { |   handleFollow = () => { | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ import { | ||||||
|   blockAccount, |   blockAccount, | ||||||
|   unblockAccount, |   unblockAccount, | ||||||
|   muteAccount, |   muteAccount, | ||||||
|   unmuteAccount |   unmuteAccount, | ||||||
| } from '../../../actions/accounts'; | } from '../../../actions/accounts'; | ||||||
| import { mentionCompose } from '../../../actions/compose'; | import { mentionCompose } from '../../../actions/compose'; | ||||||
| import { initReport } from '../../../actions/reports'; | import { initReport } from '../../../actions/reports'; | ||||||
|  | @ -27,7 +27,7 @@ const makeMapStateToProps = () => { | ||||||
| 
 | 
 | ||||||
|   const mapStateToProps = (state, { accountId }) => ({ |   const mapStateToProps = (state, { accountId }) => ({ | ||||||
|     account: getAccount(state, Number(accountId)), |     account: getAccount(state, Number(accountId)), | ||||||
|     me: state.getIn(['meta', 'me']) |     me: state.getIn(['meta', 'me']), | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   return mapStateToProps; |   return mapStateToProps; | ||||||
|  | @ -49,7 +49,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ | ||||||
|       dispatch(openModal('CONFIRM', { |       dispatch(openModal('CONFIRM', { | ||||||
|         message: <FormattedMessage id='confirmations.block.message' defaultMessage='Are you sure you want to block {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />, |         message: <FormattedMessage id='confirmations.block.message' defaultMessage='Are you sure you want to block {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />, | ||||||
|         confirm: intl.formatMessage(messages.blockConfirm), |         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', { |       dispatch(openModal('CONFIRM', { | ||||||
|         message: <FormattedMessage id='confirmations.mute.message' defaultMessage='Are you sure you want to mute {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />, |         message: <FormattedMessage id='confirmations.mute.message' defaultMessage='Are you sure you want to mute {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />, | ||||||
|         confirm: intl.formatMessage(messages.muteConfirm), |         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', { |     dispatch(openModal('CONFIRM', { | ||||||
|       message: <FormattedMessage id='confirmations.domain_block.message' defaultMessage='Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.' values={{ domain: <strong>{domain}</strong> }} />, |       message: <FormattedMessage id='confirmations.domain_block.message' defaultMessage='Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.' values={{ domain: <strong>{domain}</strong> }} />, | ||||||
|       confirm: intl.formatMessage(messages.blockDomainConfirm), |       confirm: intl.formatMessage(messages.blockDomainConfirm), | ||||||
|       onConfirm: () => dispatch(blockDomain(domain, accountId)) |       onConfirm: () => dispatch(blockDomain(domain, accountId)), | ||||||
|     })); |     })); | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   onUnblockDomain (domain, accountId) { |   onUnblockDomain (domain, accountId) { | ||||||
|     dispatch(unblockDomain(domain, accountId)); |     dispatch(unblockDomain(domain, accountId)); | ||||||
|   } |   }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header)); | export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header)); | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import PropTypes from 'prop-types'; | ||||||
| import { | import { | ||||||
|   fetchAccount, |   fetchAccount, | ||||||
|   fetchAccountTimeline, |   fetchAccountTimeline, | ||||||
|   expandAccountTimeline |   expandAccountTimeline, | ||||||
| } from '../../actions/accounts'; | } from '../../actions/accounts'; | ||||||
| import StatusList from '../../components/status_list'; | import StatusList from '../../components/status_list'; | ||||||
| import LoadingIndicator from '../../components/loading_indicator'; | 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()), |   statusIds: state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'items'], Immutable.List()), | ||||||
|   isLoading: state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'isLoading']), |   isLoading: state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'isLoading']), | ||||||
|   hasMore: !!state.getIn(['timelines', 'accounts_timelines', Number(props.params.accountId), 'next']), |   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 { | class AccountTimeline extends ImmutablePureComponent { | ||||||
|  | @ -30,7 +30,7 @@ class AccountTimeline extends ImmutablePureComponent { | ||||||
|     statusIds: ImmutablePropTypes.list, |     statusIds: ImmutablePropTypes.list, | ||||||
|     isLoading: PropTypes.bool, |     isLoading: PropTypes.bool, | ||||||
|     hasMore: PropTypes.bool, |     hasMore: PropTypes.bool, | ||||||
|     me: PropTypes.number.isRequired |     me: PropTypes.number.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentWillMount () { |   componentWillMount () { | ||||||
|  |  | ||||||
|  | @ -12,11 +12,11 @@ import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   heading: { id: 'column.blocks', defaultMessage: 'Blocked users' } |   heading: { id: 'column.blocks', defaultMessage: 'Blocked users' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   accountIds: state.getIn(['user_lists', 'blocks', 'items']) |   accountIds: state.getIn(['user_lists', 'blocks', 'items']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class Blocks extends ImmutablePureComponent { | class Blocks extends ImmutablePureComponent { | ||||||
|  | @ -25,7 +25,7 @@ class Blocks extends ImmutablePureComponent { | ||||||
|     params: PropTypes.object.isRequired, |     params: PropTypes.object.isRequired, | ||||||
|     dispatch: PropTypes.func.isRequired, |     dispatch: PropTypes.func.isRequired, | ||||||
|     accountIds: ImmutablePropTypes.list, |     accountIds: ImmutablePropTypes.list, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentWillMount () { |   componentWillMount () { | ||||||
|  | @ -64,6 +64,7 @@ class Blocks extends ImmutablePureComponent { | ||||||
|       </Column> |       </Column> | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default connect(mapStateToProps)(injectIntl(Blocks)); | export default connect(mapStateToProps)(injectIntl(Blocks)); | ||||||
|  |  | ||||||
|  | @ -8,20 +8,20 @@ import { | ||||||
|   updateTimeline, |   updateTimeline, | ||||||
|   deleteFromTimelines, |   deleteFromTimelines, | ||||||
|   connectTimeline, |   connectTimeline, | ||||||
|   disconnectTimeline |   disconnectTimeline, | ||||||
| } from '../../actions/timelines'; | } from '../../actions/timelines'; | ||||||
| import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| import ColumnBackButtonSlim from '../../components/column_back_button_slim'; | import ColumnBackButtonSlim from '../../components/column_back_button_slim'; | ||||||
| import createStream from '../../stream'; | import createStream from '../../stream'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   title: { id: 'column.community', defaultMessage: 'Local timeline' } |   title: { id: 'column.community', defaultMessage: 'Local timeline' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   hasUnread: state.getIn(['timelines', 'community', 'unread']) > 0, |   hasUnread: state.getIn(['timelines', 'community', 'unread']) > 0, | ||||||
|   streamingAPIBaseURL: state.getIn(['meta', 'streaming_api_base_url']), |   streamingAPIBaseURL: state.getIn(['meta', 'streaming_api_base_url']), | ||||||
|   accessToken: state.getIn(['meta', 'access_token']) |   accessToken: state.getIn(['meta', 'access_token']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| let subscription; | let subscription; | ||||||
|  | @ -33,7 +33,7 @@ class CommunityTimeline extends React.PureComponent { | ||||||
|     intl: PropTypes.object.isRequired, |     intl: PropTypes.object.isRequired, | ||||||
|     streamingAPIBaseURL: PropTypes.string.isRequired, |     streamingAPIBaseURL: PropTypes.string.isRequired, | ||||||
|     accessToken: PropTypes.string.isRequired, |     accessToken: PropTypes.string.isRequired, | ||||||
|     hasUnread: PropTypes.bool |     hasUnread: PropTypes.bool, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentDidMount () { |   componentDidMount () { | ||||||
|  | @ -68,7 +68,7 @@ class CommunityTimeline extends React.PureComponent { | ||||||
|           dispatch(deleteFromTimelines(data.payload)); |           dispatch(deleteFromTimelines(data.payload)); | ||||||
|           break; |           break; | ||||||
|         } |         } | ||||||
|       } |       }, | ||||||
| 
 | 
 | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| class AutosuggestAccount extends ImmutablePureComponent { | class AutosuggestAccount extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     account: ImmutablePropTypes.map.isRequired |     account: ImmutablePropTypes.map.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ class CharacterCounter extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     text: PropTypes.string.isRequired, |     text: PropTypes.string.isRequired, | ||||||
|     max: PropTypes.number.isRequired |     max: PropTypes.number.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   checkRemainingText (diff) { |   checkRemainingText (diff) { | ||||||
|  |  | ||||||
|  | @ -53,7 +53,7 @@ class ComposeForm extends ImmutablePureComponent { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static defaultProps = { |   static defaultProps = { | ||||||
|     showSearch: false |     showSearch: false, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleChange = (e) => { |   handleChange = (e) => { | ||||||
|  |  | ||||||
|  | @ -13,13 +13,13 @@ const messages = defineMessages({ | ||||||
|   travel: { id: 'emoji_button.travel', defaultMessage: 'Travel & Places' }, |   travel: { id: 'emoji_button.travel', defaultMessage: 'Travel & Places' }, | ||||||
|   objects: { id: 'emoji_button.objects', defaultMessage: 'Objects' }, |   objects: { id: 'emoji_button.objects', defaultMessage: 'Objects' }, | ||||||
|   symbols: { id: 'emoji_button.symbols', defaultMessage: 'Symbols' }, |   symbols: { id: 'emoji_button.symbols', defaultMessage: 'Symbols' }, | ||||||
|   flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' } |   flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const settings = { | const settings = { | ||||||
|   imageType: 'png', |   imageType: 'png', | ||||||
|   sprites: false, |   sprites: false, | ||||||
|   imagePathPNG: '/emoji/' |   imagePathPNG: '/emoji/', | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| let EmojiPicker; // load asynchronously
 | let EmojiPicker; // load asynchronously
 | ||||||
|  | @ -28,12 +28,12 @@ class EmojiPickerDropdown extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     intl: PropTypes.object.isRequired, |     intl: PropTypes.object.isRequired, | ||||||
|     onPickEmoji: PropTypes.func.isRequired |     onPickEmoji: PropTypes.func.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   state = { |   state = { | ||||||
|     active: false, |     active: false, | ||||||
|     loading: false |     loading: false, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   setRef = (c) => { |   setRef = (c) => { | ||||||
|  | @ -98,8 +98,8 @@ class EmojiPickerDropdown extends React.PureComponent { | ||||||
|       flags: { |       flags: { | ||||||
|         title: intl.formatMessage(messages.flags), |         title: intl.formatMessage(messages.flags), | ||||||
|         emoji: 'flag_gb', |         emoji: 'flag_gb', | ||||||
|       } |       }, | ||||||
|     } |     }; | ||||||
| 
 | 
 | ||||||
|     const { active, loading } = this.state; |     const { active, loading } = this.state; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| class NavigationBar extends ImmutablePureComponent { | class NavigationBar extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     account: ImmutablePropTypes.map.isRequired |     account: ImmutablePropTypes.map.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -12,24 +12,24 @@ const messages = defineMessages({ | ||||||
|   private_long: { id: 'privacy.private.long', defaultMessage: 'Post to followers only' }, |   private_long: { id: 'privacy.private.long', defaultMessage: 'Post to followers only' }, | ||||||
|   direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, |   direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, | ||||||
|   direct_long: { id: 'privacy.direct.long', defaultMessage: 'Post to mentioned users only' }, |   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 = { | const iconStyle = { | ||||||
|   height: null, |   height: null, | ||||||
|   lineHeight: '27px' |   lineHeight: '27px', | ||||||
| } | }; | ||||||
| 
 | 
 | ||||||
| class PrivacyDropdown extends React.PureComponent { | class PrivacyDropdown extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     value: PropTypes.string.isRequired, |     value: PropTypes.string.isRequired, | ||||||
|     onChange: PropTypes.func.isRequired, |     onChange: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   state = { |   state = { | ||||||
|     open: false |     open: false, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleToggle = () => { |   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: '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: '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: '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); |     const valueOption = options.find(item => item.value === value); | ||||||
|  |  | ||||||
|  | @ -9,19 +9,19 @@ import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' } |   cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class ReplyIndicator extends ImmutablePureComponent { | class ReplyIndicator extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   static contextTypes = { |   static contextTypes = { | ||||||
|     router: PropTypes.object |     router: PropTypes.object, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     status: ImmutablePropTypes.map, |     status: ImmutablePropTypes.map, | ||||||
|     onCancel: PropTypes.func.isRequired, |     onCancel: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = () => { |   handleClick = () => { | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import PropTypes from 'prop-types'; | ||||||
| import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   placeholder: { id: 'search.placeholder', defaultMessage: 'Search' } |   placeholder: { id: 'search.placeholder', defaultMessage: 'Search' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class Search extends React.PureComponent { | class Search extends React.PureComponent { | ||||||
|  | @ -15,7 +15,7 @@ class Search extends React.PureComponent { | ||||||
|     onSubmit: PropTypes.func.isRequired, |     onSubmit: PropTypes.func.isRequired, | ||||||
|     onClear: PropTypes.func.isRequired, |     onClear: PropTypes.func.isRequired, | ||||||
|     onShow: PropTypes.func.isRequired, |     onShow: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleChange = (e) => { |   handleChange = (e) => { | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| class SearchResults extends ImmutablePureComponent { | class SearchResults extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     results: ImmutablePropTypes.map.isRequired |     results: ImmutablePropTypes.map.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ class TextIconButton extends React.PureComponent { | ||||||
|     title: PropTypes.string, |     title: PropTypes.string, | ||||||
|     active: PropTypes.bool, |     active: PropTypes.bool, | ||||||
|     onClick: PropTypes.func.isRequired, |     onClick: PropTypes.func.isRequired, | ||||||
|     ariaControls: PropTypes.string |     ariaControls: PropTypes.string, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = (e) => { |   handleClick = (e) => { | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import { connect } from 'react-redux'; | import { connect } from 'react-redux'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   upload: { id: 'upload_button.label', defaultMessage: 'Add media' } |   upload: { id: 'upload_button.label', defaultMessage: 'Add media' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const makeMapStateToProps = () => { | const makeMapStateToProps = () => { | ||||||
|  | @ -14,12 +14,12 @@ const makeMapStateToProps = () => { | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   return mapStateToProps; |   return mapStateToProps; | ||||||
| } | }; | ||||||
| 
 | 
 | ||||||
| const iconStyle = { | const iconStyle = { | ||||||
|   height: null, |   height: null, | ||||||
|   lineHeight: '27px' |   lineHeight: '27px', | ||||||
| } | }; | ||||||
| 
 | 
 | ||||||
| class UploadButton extends React.PureComponent { | class UploadButton extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|  | @ -29,7 +29,7 @@ class UploadButton extends React.PureComponent { | ||||||
|     style: PropTypes.object, |     style: PropTypes.object, | ||||||
|     resetFileKey: PropTypes.number, |     resetFileKey: PropTypes.number, | ||||||
|     acceptContentTypes: PropTypes.arrayOf(PropTypes.string).isRequired, |     acceptContentTypes: PropTypes.arrayOf(PropTypes.string).isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleChange = (e) => { |   handleChange = (e) => { | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ import Motion from 'react-motion/lib/Motion'; | ||||||
| import spring from 'react-motion/lib/spring'; | import spring from 'react-motion/lib/spring'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   undo: { id: 'upload_form.undo', defaultMessage: 'Undo' } |   undo: { id: 'upload_form.undo', defaultMessage: 'Undo' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class UploadForm extends React.PureComponent { | class UploadForm extends React.PureComponent { | ||||||
|  | @ -16,7 +16,7 @@ class UploadForm extends React.PureComponent { | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     media: ImmutablePropTypes.list.isRequired, |     media: ImmutablePropTypes.list.isRequired, | ||||||
|     onRemoveFile: PropTypes.func.isRequired, |     onRemoveFile: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   onRemoveFile = (e) => { |   onRemoveFile = (e) => { | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ class UploadProgress extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     active: PropTypes.bool, |     active: PropTypes.bool, | ||||||
|     progress: PropTypes.number |     progress: PropTypes.number, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import PropTypes from 'prop-types'; | ||||||
| class Warning extends React.PureComponent { | class Warning extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     message: PropTypes.node.isRequired |     message: PropTypes.node.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ const makeMapStateToProps = () => { | ||||||
|   const getAccount = makeGetAccount(); |   const getAccount = makeGetAccount(); | ||||||
| 
 | 
 | ||||||
|   const mapStateToProps = (state, { id }) => ({ |   const mapStateToProps = (state, { id }) => ({ | ||||||
|     account: getAccount(state, id) |     account: getAccount(state, id), | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   return mapStateToProps; |   return mapStateToProps; | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ const makeMapStateToProps = () => { | ||||||
|   const getStatus = makeGetStatus(); |   const getStatus = makeGetStatus(); | ||||||
| 
 | 
 | ||||||
|   const mapStateToProps = (state, { id }) => ({ |   const mapStateToProps = (state, { id }) => ({ | ||||||
|     status: getStatus(state, id) |     status: getStatus(state, id), | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   return mapStateToProps; |   return mapStateToProps; | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ import { | ||||||
|   fetchComposeSuggestions, |   fetchComposeSuggestions, | ||||||
|   selectComposeSuggestion, |   selectComposeSuggestion, | ||||||
|   changeComposeSpoilerText, |   changeComposeSpoilerText, | ||||||
|   insertEmojiCompose |   insertEmojiCompose, | ||||||
| } from '../../../actions/compose'; | } from '../../../actions/compose'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|  | @ -23,7 +23,7 @@ const mapStateToProps = state => ({ | ||||||
|   is_submitting: state.getIn(['compose', 'is_submitting']), |   is_submitting: state.getIn(['compose', 'is_submitting']), | ||||||
|   is_uploading: state.getIn(['compose', 'is_uploading']), |   is_uploading: state.getIn(['compose', 'is_uploading']), | ||||||
|   me: state.getIn(['compose', 'me']), |   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) => ({ | const mapDispatchToProps = (dispatch) => ({ | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import NavigationBar from '../components/navigation_bar'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = (state, props) => { | const mapStateToProps = (state, props) => { | ||||||
|   return { |   return { | ||||||
|     account: state.getIn(['accounts', state.getIn(['meta', 'me'])]) |     account: state.getIn(['accounts', state.getIn(['meta', 'me'])]), | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,14 +3,14 @@ import PrivacyDropdown from '../components/privacy_dropdown'; | ||||||
| import { changeComposeVisibility } from '../../../actions/compose'; | import { changeComposeVisibility } from '../../../actions/compose'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   value: state.getIn(['compose', 'privacy']) |   value: state.getIn(['compose', 'privacy']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapDispatchToProps = dispatch => ({ | const mapDispatchToProps = dispatch => ({ | ||||||
| 
 | 
 | ||||||
|   onChange (value) { |   onChange (value) { | ||||||
|     dispatch(changeComposeVisibility(value)); |     dispatch(changeComposeVisibility(value)); | ||||||
|   } |   }, | ||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ const mapDispatchToProps = dispatch => ({ | ||||||
| 
 | 
 | ||||||
|   onCancel () { |   onCancel () { | ||||||
|     dispatch(cancelReplyCompose()); |     dispatch(cancelReplyCompose()); | ||||||
|   } |   }, | ||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,13 +3,13 @@ import { | ||||||
|   changeSearch, |   changeSearch, | ||||||
|   clearSearch, |   clearSearch, | ||||||
|   submitSearch, |   submitSearch, | ||||||
|   showSearch |   showSearch, | ||||||
| } from '../../../actions/search'; | } from '../../../actions/search'; | ||||||
| import Search from '../components/search'; | import Search from '../components/search'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   value: state.getIn(['search', 'value']), |   value: state.getIn(['search', 'value']), | ||||||
|   submitted: state.getIn(['search', 'submitted']) |   submitted: state.getIn(['search', 'submitted']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapDispatchToProps = dispatch => ({ | const mapDispatchToProps = dispatch => ({ | ||||||
|  | @ -28,7 +28,7 @@ const mapDispatchToProps = dispatch => ({ | ||||||
| 
 | 
 | ||||||
|   onShow () { |   onShow () { | ||||||
|     dispatch(showSearch()); |     dispatch(showSearch()); | ||||||
|   } |   }, | ||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import { connect } from 'react-redux'; | ||||||
| import SearchResults from '../components/search_results'; | import SearchResults from '../components/search_results'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   results: state.getIn(['search', 'results']) |   results: state.getIn(['search', 'results']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| export default connect(mapStateToProps)(SearchResults); | export default connect(mapStateToProps)(SearchResults); | ||||||
|  |  | ||||||
|  | @ -8,19 +8,19 @@ import spring from 'react-motion/lib/spring'; | ||||||
| import { injectIntl, defineMessages } from 'react-intl'; | import { injectIntl, defineMessages } from 'react-intl'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | 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 => ({ | const mapStateToProps = state => ({ | ||||||
|   visible: state.getIn(['compose', 'media_attachments']).size > 0, |   visible: state.getIn(['compose', 'media_attachments']).size > 0, | ||||||
|   active: state.getIn(['compose', 'sensitive']) |   active: state.getIn(['compose', 'sensitive']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapDispatchToProps = dispatch => ({ | const mapDispatchToProps = dispatch => ({ | ||||||
| 
 | 
 | ||||||
|   onClick () { |   onClick () { | ||||||
|     dispatch(changeComposeSensitivity()); |     dispatch(changeComposeSensitivity()); | ||||||
|   } |   }, | ||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | @ -30,7 +30,7 @@ class SensitiveButton extends React.PureComponent { | ||||||
|     visible: PropTypes.bool, |     visible: PropTypes.bool, | ||||||
|     active: PropTypes.bool, |     active: PropTypes.bool, | ||||||
|     onClick: PropTypes.func.isRequired, |     onClick: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -4,21 +4,21 @@ import { changeComposeSpoilerness } from '../../../actions/compose'; | ||||||
| import { injectIntl, defineMessages } from 'react-intl'; | import { injectIntl, defineMessages } from 'react-intl'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | 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 }) => ({ | const mapStateToProps = (state, { intl }) => ({ | ||||||
|   label: 'CW', |   label: 'CW', | ||||||
|   title: intl.formatMessage(messages.title), |   title: intl.formatMessage(messages.title), | ||||||
|   active: state.getIn(['compose', 'spoiler']), |   active: state.getIn(['compose', 'spoiler']), | ||||||
|   ariaControls: 'cw-spoiler-input' |   ariaControls: 'cw-spoiler-input', | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapDispatchToProps = dispatch => ({ | const mapDispatchToProps = dispatch => ({ | ||||||
| 
 | 
 | ||||||
|   onClick () { |   onClick () { | ||||||
|     dispatch(changeComposeSpoilerness()); |     dispatch(changeComposeSpoilerness()); | ||||||
|   } |   }, | ||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,14 +4,14 @@ import { uploadCompose } from '../../../actions/compose'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | 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')), |   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 => ({ | const mapDispatchToProps = dispatch => ({ | ||||||
| 
 | 
 | ||||||
|   onSelectFile (files) { |   onSelectFile (files) { | ||||||
|     dispatch(uploadCompose(files)); |     dispatch(uploadCompose(files)); | ||||||
|   } |   }, | ||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ const mapDispatchToProps = dispatch => ({ | ||||||
| 
 | 
 | ||||||
|   onRemoveFile (media_id) { |   onRemoveFile (media_id) { | ||||||
|     dispatch(undoUploadCompose(media_id)); |     dispatch(undoUploadCompose(media_id)); | ||||||
|   } |   }, | ||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import UploadProgress from '../components/upload_progress'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = (state, props) => ({ | const mapStateToProps = (state, props) => ({ | ||||||
|   active: state.getIn(['compose', 'is_uploading']), |   active: state.getIn(['compose', 'is_uploading']), | ||||||
|   progress: state.getIn(['compose', 'progress']) |   progress: state.getIn(['compose', 'progress']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| export default connect(mapStateToProps)(UploadProgress); | export default connect(mapStateToProps)(UploadProgress); | ||||||
|  |  | ||||||
|  | @ -20,7 +20,7 @@ const mapStateToProps = state => { | ||||||
|   return { |   return { | ||||||
|     needsLeakWarning: (state.getIn(['compose', 'privacy']) === 'private' || state.getIn(['compose', 'privacy']) === 'direct') && mentionedUsernames !== null, |     needsLeakWarning: (state.getIn(['compose', 'privacy']) === 'private' || state.getIn(['compose', 'privacy']) === 'direct') && mentionedUsernames !== null, | ||||||
|     mentionedDomains: mentionedUsernamesWithDomains, |     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']), | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -17,11 +17,11 @@ const messages = defineMessages({ | ||||||
|   public: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' }, |   public: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' }, | ||||||
|   community: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' }, |   community: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' }, | ||||||
|   preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, |   preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, | ||||||
|   logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' } |   logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | 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 { | class Compose extends React.PureComponent { | ||||||
|  | @ -30,7 +30,7 @@ class Compose extends React.PureComponent { | ||||||
|     dispatch: PropTypes.func.isRequired, |     dispatch: PropTypes.func.isRequired, | ||||||
|     withHeader: PropTypes.bool, |     withHeader: PropTypes.bool, | ||||||
|     showSearch: PropTypes.bool, |     showSearch: PropTypes.bool, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentDidMount () { |   componentDidMount () { | ||||||
|  |  | ||||||
|  | @ -11,13 +11,13 @@ import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   heading: { id: 'column.favourites', defaultMessage: 'Favourites' } |   heading: { id: 'column.favourites', defaultMessage: 'Favourites' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   statusIds: state.getIn(['status_lists', 'favourites', 'items']), |   statusIds: state.getIn(['status_lists', 'favourites', 'items']), | ||||||
|   loaded: state.getIn(['status_lists', 'favourites', 'loaded']), |   loaded: state.getIn(['status_lists', 'favourites', 'loaded']), | ||||||
|   me: state.getIn(['meta', 'me']) |   me: state.getIn(['meta', 'me']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class Favourites extends ImmutablePureComponent { | class Favourites extends ImmutablePureComponent { | ||||||
|  | @ -27,7 +27,7 @@ class Favourites extends ImmutablePureComponent { | ||||||
|     statusIds: ImmutablePropTypes.list.isRequired, |     statusIds: ImmutablePropTypes.list.isRequired, | ||||||
|     loaded: PropTypes.bool, |     loaded: PropTypes.bool, | ||||||
|     intl: PropTypes.object.isRequired, |     intl: PropTypes.object.isRequired, | ||||||
|     me: PropTypes.number.isRequired |     me: PropTypes.number.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentWillMount () { |   componentWillMount () { | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ import ColumnBackButton from '../../components/column_back_button'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = (state, props) => ({ | 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 { | class Favourites extends ImmutablePureComponent { | ||||||
|  | @ -19,7 +19,7 @@ class Favourites extends ImmutablePureComponent { | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     params: PropTypes.object.isRequired, |     params: PropTypes.object.isRequired, | ||||||
|     dispatch: PropTypes.func.isRequired, |     dispatch: PropTypes.func.isRequired, | ||||||
|     accountIds: ImmutablePropTypes.list |     accountIds: ImmutablePropTypes.list, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentWillMount () { |   componentWillMount () { | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   authorize: { id: 'follow_request.authorize', defaultMessage: 'Authorize' }, |   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 { | class AccountAuthorize extends ImmutablePureComponent { | ||||||
|  | @ -20,7 +20,7 @@ class AccountAuthorize extends ImmutablePureComponent { | ||||||
|     account: ImmutablePropTypes.map.isRequired, |     account: ImmutablePropTypes.map.isRequired, | ||||||
|     onAuthorize: PropTypes.func.isRequired, |     onAuthorize: PropTypes.func.isRequired, | ||||||
|     onReject: PropTypes.func.isRequired, |     onReject: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ const makeMapStateToProps = () => { | ||||||
|   const getAccount = makeGetAccount(); |   const getAccount = makeGetAccount(); | ||||||
| 
 | 
 | ||||||
|   const mapStateToProps = (state, props) => ({ |   const mapStateToProps = (state, props) => ({ | ||||||
|     account: getAccount(state, props.id) |     account: getAccount(state, props.id), | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   return mapStateToProps; |   return mapStateToProps; | ||||||
|  | @ -20,7 +20,7 @@ const mapDispatchToProps = (dispatch, { id }) => ({ | ||||||
| 
 | 
 | ||||||
|   onReject (account) { |   onReject (account) { | ||||||
|     dispatch(rejectFollowRequest(id)); |     dispatch(rejectFollowRequest(id)); | ||||||
|   } |   }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| export default connect(makeMapStateToProps, mapDispatchToProps)(AccountAuthorize); | export default connect(makeMapStateToProps, mapDispatchToProps)(AccountAuthorize); | ||||||
|  |  | ||||||
|  | @ -12,11 +12,11 @@ import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   heading: { id: 'column.follow_requests', defaultMessage: 'Follow requests' } |   heading: { id: 'column.follow_requests', defaultMessage: 'Follow requests' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   accountIds: state.getIn(['user_lists', 'follow_requests', 'items']) |   accountIds: state.getIn(['user_lists', 'follow_requests', 'items']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class FollowRequests extends ImmutablePureComponent { | class FollowRequests extends ImmutablePureComponent { | ||||||
|  | @ -25,7 +25,7 @@ class FollowRequests extends ImmutablePureComponent { | ||||||
|     params: PropTypes.object.isRequired, |     params: PropTypes.object.isRequired, | ||||||
|     dispatch: PropTypes.func.isRequired, |     dispatch: PropTypes.func.isRequired, | ||||||
|     accountIds: ImmutablePropTypes.list, |     accountIds: ImmutablePropTypes.list, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentWillMount () { |   componentWillMount () { | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import LoadingIndicator from '../../components/loading_indicator'; | ||||||
| import { | import { | ||||||
|   fetchAccount, |   fetchAccount, | ||||||
|   fetchFollowers, |   fetchFollowers, | ||||||
|   expandFollowers |   expandFollowers, | ||||||
| } from '../../actions/accounts'; | } from '../../actions/accounts'; | ||||||
| import { ScrollContainer } from 'react-router-scroll'; | import { ScrollContainer } from 'react-router-scroll'; | ||||||
| import AccountContainer from '../../containers/account_container'; | import AccountContainer from '../../containers/account_container'; | ||||||
|  | @ -17,7 +17,7 @@ import ColumnBackButton from '../../components/column_back_button'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = (state, props) => ({ | 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 { | class Followers extends ImmutablePureComponent { | ||||||
|  | @ -25,7 +25,7 @@ class Followers extends ImmutablePureComponent { | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     params: PropTypes.object.isRequired, |     params: PropTypes.object.isRequired, | ||||||
|     dispatch: PropTypes.func.isRequired, |     dispatch: PropTypes.func.isRequired, | ||||||
|     accountIds: ImmutablePropTypes.list |     accountIds: ImmutablePropTypes.list, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentWillMount () { |   componentWillMount () { | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import LoadingIndicator from '../../components/loading_indicator'; | ||||||
| import { | import { | ||||||
|   fetchAccount, |   fetchAccount, | ||||||
|   fetchFollowing, |   fetchFollowing, | ||||||
|   expandFollowing |   expandFollowing, | ||||||
| } from '../../actions/accounts'; | } from '../../actions/accounts'; | ||||||
| import { ScrollContainer } from 'react-router-scroll'; | import { ScrollContainer } from 'react-router-scroll'; | ||||||
| import AccountContainer from '../../containers/account_container'; | import AccountContainer from '../../containers/account_container'; | ||||||
|  | @ -17,7 +17,7 @@ import ColumnBackButton from '../../components/column_back_button'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = (state, props) => ({ | 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 { | class Following extends ImmutablePureComponent { | ||||||
|  | @ -25,7 +25,7 @@ class Following extends ImmutablePureComponent { | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     params: PropTypes.object.isRequired, |     params: PropTypes.object.isRequired, | ||||||
|     dispatch: PropTypes.func.isRequired, |     dispatch: PropTypes.func.isRequired, | ||||||
|     accountIds: ImmutablePropTypes.list |     accountIds: ImmutablePropTypes.list, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   componentWillMount () { |   componentWillMount () { | ||||||
|  |  | ||||||
|  | @ -21,18 +21,18 @@ const messages = defineMessages({ | ||||||
|   favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, |   favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, | ||||||
|   blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' }, |   blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' }, | ||||||
|   mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted 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 => ({ | const mapStateToProps = state => ({ | ||||||
|   me: state.getIn(['accounts', state.getIn(['meta', 'me'])]) |   me: state.getIn(['accounts', state.getIn(['meta', 'me'])]), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class GettingStarted extends ImmutablePureComponent { | class GettingStarted extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     intl: PropTypes.object.isRequired, |     intl: PropTypes.object.isRequired, | ||||||
|     me: ImmutablePropTypes.map.isRequired |     me: ImmutablePropTypes.map.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  | @ -69,7 +69,7 @@ class GettingStarted extends ImmutablePureComponent { | ||||||
|                 values={{ |                 values={{ | ||||||
|                   faq: <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/FAQ.md" rel="noopener" target="_blank"><FormattedMessage id='getting_started.faq' defaultMessage='FAQ' /></a>, |                   faq: <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/FAQ.md" rel="noopener" target="_blank"><FormattedMessage id='getting_started.faq' defaultMessage='FAQ' /></a>, | ||||||
|                   userguide: <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/User-guide.md" rel="noopener" target="_blank"><FormattedMessage id='getting_started.userguide' defaultMessage='User Guide' /></a>, |                   userguide: <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/User-guide.md" rel="noopener" target="_blank"><FormattedMessage id='getting_started.userguide' defaultMessage='User Guide' /></a>, | ||||||
|                   apps: <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md" rel="noopener" target="_blank"><FormattedMessage id='getting_started.appsshort' defaultMessage='Apps' /></a> |                   apps: <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md" rel="noopener" target="_blank"><FormattedMessage id='getting_started.appsshort' defaultMessage='Apps' /></a>, | ||||||
|                 }} |                 }} | ||||||
|               /> |               /> | ||||||
|             </p> |             </p> | ||||||
|  | @ -85,6 +85,7 @@ class GettingStarted extends ImmutablePureComponent { | ||||||
|       </Column> |       </Column> | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default connect(mapStateToProps)(injectIntl(GettingStarted)); | export default connect(mapStateToProps)(injectIntl(GettingStarted)); | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import Column from '../ui/components/column'; | ||||||
| import { | import { | ||||||
|   refreshTimeline, |   refreshTimeline, | ||||||
|   updateTimeline, |   updateTimeline, | ||||||
|   deleteFromTimelines |   deleteFromTimelines, | ||||||
| } from '../../actions/timelines'; | } from '../../actions/timelines'; | ||||||
| import ColumnBackButtonSlim from '../../components/column_back_button_slim'; | import ColumnBackButtonSlim from '../../components/column_back_button_slim'; | ||||||
| import { FormattedMessage } from 'react-intl'; | import { FormattedMessage } from 'react-intl'; | ||||||
|  | @ -15,7 +15,7 @@ import createStream from '../../stream'; | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   hasUnread: state.getIn(['timelines', 'tag', 'unread']) > 0, |   hasUnread: state.getIn(['timelines', 'tag', 'unread']) > 0, | ||||||
|   streamingAPIBaseURL: state.getIn(['meta', 'streaming_api_base_url']), |   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 { | class HashtagTimeline extends React.PureComponent { | ||||||
|  | @ -25,7 +25,7 @@ class HashtagTimeline extends React.PureComponent { | ||||||
|     dispatch: PropTypes.func.isRequired, |     dispatch: PropTypes.func.isRequired, | ||||||
|     streamingAPIBaseURL: PropTypes.string.isRequired, |     streamingAPIBaseURL: PropTypes.string.isRequired, | ||||||
|     accessToken: PropTypes.string.isRequired, |     accessToken: PropTypes.string.isRequired, | ||||||
|     hasUnread: PropTypes.bool |     hasUnread: PropTypes.bool, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   _subscribe (dispatch, id) { |   _subscribe (dispatch, id) { | ||||||
|  | @ -42,7 +42,7 @@ class HashtagTimeline extends React.PureComponent { | ||||||
|           dispatch(deleteFromTimelines(data.payload)); |           dispatch(deleteFromTimelines(data.payload)); | ||||||
|           break; |           break; | ||||||
|         } |         } | ||||||
|       } |       }, | ||||||
| 
 | 
 | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ import SettingText from './setting_text'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   filter_regex: { id: 'home.column_settings.filter_regex', defaultMessage: 'Filter out by regular expressions' }, |   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 { | class ColumnSettings extends React.PureComponent { | ||||||
|  | @ -17,7 +17,7 @@ class ColumnSettings extends React.PureComponent { | ||||||
|     settings: ImmutablePropTypes.map.isRequired, |     settings: ImmutablePropTypes.map.isRequired, | ||||||
|     onChange: PropTypes.func.isRequired, |     onChange: PropTypes.func.isRequired, | ||||||
|     onSave: PropTypes.func.isRequired, |     onSave: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -8,11 +8,11 @@ class SettingText extends React.PureComponent { | ||||||
|     settings: ImmutablePropTypes.map.isRequired, |     settings: ImmutablePropTypes.map.isRequired, | ||||||
|     settingKey: PropTypes.array.isRequired, |     settingKey: PropTypes.array.isRequired, | ||||||
|     label: PropTypes.string.isRequired, |     label: PropTypes.string.isRequired, | ||||||
|     onChange: PropTypes.func.isRequired |     onChange: PropTypes.func.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleChange = (e) => { |   handleChange = (e) => { | ||||||
|     this.props.onChange(this.props.settingKey, e.target.value) |     this.props.onChange(this.props.settingKey, e.target.value); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import ColumnSettings from '../components/column_settings'; | ||||||
| import { changeSetting, saveSettings } from '../../../actions/settings'; | import { changeSetting, saveSettings } from '../../../actions/settings'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   settings: state.getIn(['settings', 'home']) |   settings: state.getIn(['settings', 'home']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapDispatchToProps = dispatch => ({ | const mapDispatchToProps = dispatch => ({ | ||||||
|  | @ -14,7 +14,7 @@ const mapDispatchToProps = dispatch => ({ | ||||||
| 
 | 
 | ||||||
|   onSave () { |   onSave () { | ||||||
|     dispatch(saveSettings()); |     dispatch(saveSettings()); | ||||||
|   } |   }, | ||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,12 +8,12 @@ import ColumnSettingsContainer from './containers/column_settings_container'; | ||||||
| import Link from 'react-router/lib/Link'; | import Link from 'react-router/lib/Link'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   title: { id: 'column.home', defaultMessage: 'Home' } |   title: { id: 'column.home', defaultMessage: 'Home' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0, |   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 { | class HomeTimeline extends React.PureComponent { | ||||||
|  | @ -21,7 +21,7 @@ class HomeTimeline extends React.PureComponent { | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     intl: PropTypes.object.isRequired, |     intl: PropTypes.object.isRequired, | ||||||
|     hasUnread: PropTypes.bool, |     hasUnread: PropTypes.bool, | ||||||
|     hasFollows: PropTypes.bool |     hasFollows: PropTypes.bool, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  | @ -30,7 +30,7 @@ class HomeTimeline extends React.PureComponent { | ||||||
|     let emptyMessage; |     let emptyMessage; | ||||||
| 
 | 
 | ||||||
|     if (hasFollows) { |     if (hasFollows) { | ||||||
|       emptyMessage = <FormattedMessage id='empty_column.home.inactivity' defaultMessage="Your home feed is empty. If you have been inactive for a while, it will be regenerated for you soon." /> |       emptyMessage = <FormattedMessage id='empty_column.home.inactivity' defaultMessage="Your home feed is empty. If you have been inactive for a while, it will be regenerated for you soon." />; | ||||||
|     } else { |     } else { | ||||||
|       emptyMessage = <FormattedMessage id='empty_column.home' defaultMessage="You aren't following anyone yet. Visit {public} or use search to get started and meet other users." values={{ public: <Link to='/timelines/public'><FormattedMessage id='empty_column.home.public_timeline' defaultMessage='the public timeline' /></Link> }} />; |       emptyMessage = <FormattedMessage id='empty_column.home' defaultMessage="You aren't following anyone yet. Visit {public} or use search to get started and meet other users." values={{ public: <Link to='/timelines/public'><FormattedMessage id='empty_column.home.public_timeline' defaultMessage='the public timeline' /></Link> }} />; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -12,11 +12,11 @@ import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   heading: { id: 'column.mutes', defaultMessage: 'Muted users' } |   heading: { id: 'column.mutes', defaultMessage: 'Muted users' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   accountIds: state.getIn(['user_lists', 'mutes', 'items']) |   accountIds: state.getIn(['user_lists', 'mutes', 'items']), | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class Mutes extends ImmutablePureComponent { | class Mutes extends ImmutablePureComponent { | ||||||
|  | @ -64,7 +64,7 @@ Mutes.propTypes = { | ||||||
|   params: PropTypes.object.isRequired, |   params: PropTypes.object.isRequired, | ||||||
|   dispatch: PropTypes.func.isRequired, |   dispatch: PropTypes.func.isRequired, | ||||||
|   accountIds: ImmutablePropTypes.list, |   accountIds: ImmutablePropTypes.list, | ||||||
|   intl: PropTypes.object.isRequired |   intl: PropTypes.object.isRequired, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default connect(mapStateToProps)(injectIntl(Mutes)); | export default connect(mapStateToProps)(injectIntl(Mutes)); | ||||||
|  |  | ||||||
|  | @ -3,14 +3,14 @@ import PropTypes from 'prop-types'; | ||||||
| import { defineMessages, injectIntl } from 'react-intl'; | import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   clear: { id: 'notifications.clear', defaultMessage: 'Clear notifications' } |   clear: { id: 'notifications.clear', defaultMessage: 'Clear notifications' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class ClearColumnButton extends React.Component { | class ClearColumnButton extends React.Component { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     onClick: PropTypes.func.isRequired, |     onClick: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.object.isRequired |     intl: PropTypes.object.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  | @ -22,6 +22,7 @@ class ClearColumnButton extends React.Component { | ||||||
|       </div> |       </div> | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default injectIntl(ClearColumnButton); | export default injectIntl(ClearColumnButton); | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import ColumnCollapsable from '../../../components/column_collapsable'; | ||||||
| import SettingToggle from './setting_toggle'; | import SettingToggle from './setting_toggle'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   settings: { id: 'notifications.settings', defaultMessage: 'Column settings' } |   settings: { id: 'notifications.settings', defaultMessage: 'Column settings' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| class ColumnSettings extends React.PureComponent { | class ColumnSettings extends React.PureComponent { | ||||||
|  | @ -16,8 +16,8 @@ class ColumnSettings extends React.PureComponent { | ||||||
|     onChange: PropTypes.func.isRequired, |     onChange: PropTypes.func.isRequired, | ||||||
|     onSave: PropTypes.func.isRequired, |     onSave: PropTypes.func.isRequired, | ||||||
|     intl: PropTypes.shape({ |     intl: PropTypes.shape({ | ||||||
|       formatMessage: PropTypes.func.isRequired |       formatMessage: PropTypes.func.isRequired, | ||||||
|     }).isRequired |     }).isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| class Notification extends ImmutablePureComponent { | class Notification extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     notification: ImmutablePropTypes.map.isRequired |     notification: ImmutablePropTypes.map.isRequired, | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   renderFollow (account, link) { |   renderFollow (account, link) { | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue