Merge pull request #1862 from ClearlyClaire/glitch-soc/refactor/upstream-discrepancies
Refactor glitch-soc front-end to limit discrepancies with upstream
This commit is contained in:
		
						commit
						b01faa7375
					
				|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| 
 | 
 | ||||||
| export const ACCOUNT_NOTE_SUBMIT_REQUEST = 'ACCOUNT_NOTE_SUBMIT_REQUEST'; | export const ACCOUNT_NOTE_SUBMIT_REQUEST = 'ACCOUNT_NOTE_SUBMIT_REQUEST'; | ||||||
| export const ACCOUNT_NOTE_SUBMIT_SUCCESS = 'ACCOUNT_NOTE_SUBMIT_SUCCESS'; | export const ACCOUNT_NOTE_SUBMIT_SUCCESS = 'ACCOUNT_NOTE_SUBMIT_SUCCESS'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from 'flavours/glitch/util/api'; | import api, { getLinks } from '../api'; | ||||||
| import { importAccount, importFetchedAccount, importFetchedAccounts } from './importer'; | import { importAccount, importFetchedAccount, importFetchedAccounts } from './importer'; | ||||||
| 
 | 
 | ||||||
| export const ACCOUNT_FETCH_REQUEST = 'ACCOUNT_FETCH_REQUEST'; | export const ACCOUNT_FETCH_REQUEST = 'ACCOUNT_FETCH_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { normalizeAnnouncement } from './importer/normalizer'; | import { normalizeAnnouncement } from './importer/normalizer'; | ||||||
| 
 | 
 | ||||||
| export const ANNOUNCEMENTS_FETCH_REQUEST = 'ANNOUNCEMENTS_FETCH_REQUEST'; | export const ANNOUNCEMENTS_FETCH_REQUEST = 'ANNOUNCEMENTS_FETCH_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from 'flavours/glitch/util/api'; | import api, { getLinks } from '../api'; | ||||||
| import { fetchRelationships } from './accounts'; | import { fetchRelationships } from './accounts'; | ||||||
| import { importFetchedAccounts } from './importer'; | import { importFetchedAccounts } from './importer'; | ||||||
| import { openModal } from './modal'; | import { openModal } from './modal'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from 'flavours/glitch/util/api'; | import api, { getLinks } from '../api'; | ||||||
| import { importFetchedStatuses } from './importer'; | import { importFetchedStatuses } from './importer'; | ||||||
| 
 | 
 | ||||||
| export const BOOKMARKED_STATUSES_FETCH_REQUEST = 'BOOKMARKED_STATUSES_FETCH_REQUEST'; | export const BOOKMARKED_STATUSES_FETCH_REQUEST = 'BOOKMARKED_STATUSES_FETCH_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,11 +1,11 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { CancelToken, isCancel } from 'axios'; | import { CancelToken, isCancel } from 'axios'; | ||||||
| import { throttle } from 'lodash'; | import { throttle } from 'lodash'; | ||||||
| import { search as emojiSearch } from 'flavours/glitch/util/emoji/emoji_mart_search_light'; | import { search as emojiSearch } from 'flavours/glitch/features/emoji/emoji_mart_search_light'; | ||||||
| import { useEmoji } from './emojis'; | import { useEmoji } from './emojis'; | ||||||
| import { tagHistory } from 'flavours/glitch/util/settings'; | import { tagHistory } from '../settings'; | ||||||
| import { recoverHashtags } from 'flavours/glitch/util/hashtag'; | import { recoverHashtags } from 'flavours/glitch/utils/hashtag'; | ||||||
| import resizeImage from 'flavours/glitch/util/resize_image'; | import resizeImage from 'flavours/glitch/utils/resize_image'; | ||||||
| import { importFetchedAccounts } from './importer'; | import { importFetchedAccounts } from './importer'; | ||||||
| import { updateTimeline } from './timelines'; | import { updateTimeline } from './timelines'; | ||||||
| import { showAlertForError } from './alerts'; | import { showAlertForError } from './alerts'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from 'flavours/glitch/util/api'; | import api, { getLinks } from '../api'; | ||||||
| import { | import { | ||||||
|   importFetchedAccounts, |   importFetchedAccounts, | ||||||
|   importFetchedStatuses, |   importFetchedStatuses, | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| 
 | 
 | ||||||
| export const CUSTOM_EMOJIS_FETCH_REQUEST = 'CUSTOM_EMOJIS_FETCH_REQUEST'; | export const CUSTOM_EMOJIS_FETCH_REQUEST = 'CUSTOM_EMOJIS_FETCH_REQUEST'; | ||||||
| export const CUSTOM_EMOJIS_FETCH_SUCCESS = 'CUSTOM_EMOJIS_FETCH_SUCCESS'; | export const CUSTOM_EMOJIS_FETCH_SUCCESS = 'CUSTOM_EMOJIS_FETCH_SUCCESS'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { importFetchedAccounts } from './importer'; | import { importFetchedAccounts } from './importer'; | ||||||
| import { fetchRelationships } from './accounts'; | import { fetchRelationships } from './accounts'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from 'flavours/glitch/util/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'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from 'flavours/glitch/util/api'; | import api, { getLinks } from '../api'; | ||||||
| import { importFetchedStatuses } from './importer'; | import { importFetchedStatuses } from './importer'; | ||||||
| 
 | 
 | ||||||
| export const FAVOURITED_STATUSES_FETCH_REQUEST = 'FAVOURITED_STATUSES_FETCH_REQUEST'; | export const FAVOURITED_STATUSES_FETCH_REQUEST = 'FAVOURITED_STATUSES_FETCH_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { openModal } from './modal'; | import { openModal } from './modal'; | ||||||
| 
 | 
 | ||||||
| export const FILTERS_FETCH_REQUEST = 'FILTERS_FETCH_REQUEST'; | export const FILTERS_FETCH_REQUEST = 'FILTERS_FETCH_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { importFetchedAccounts } from './importer'; | import { importFetchedAccounts } from './importer'; | ||||||
| 
 | 
 | ||||||
| export const HISTORY_FETCH_REQUEST = 'HISTORY_FETCH_REQUEST'; | export const HISTORY_FETCH_REQUEST = 'HISTORY_FETCH_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| 
 | 
 | ||||||
| export const IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST = 'IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST'; | export const IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST = 'IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST'; | ||||||
| export const IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS = 'IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS'; | export const IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS = 'IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import escapeTextContentForBrowser from 'escape-html'; | import escapeTextContentForBrowser from 'escape-html'; | ||||||
| import emojify from 'flavours/glitch/util/emoji'; | import emojify from 'flavours/glitch/features/emoji/emoji'; | ||||||
| import { unescapeHTML } from 'flavours/glitch/util/html'; | import { unescapeHTML } from 'flavours/glitch/utils/html'; | ||||||
| import { autoHideCW } from 'flavours/glitch/util/content_warning'; | import { autoHideCW } from 'flavours/glitch/utils/content_warning'; | ||||||
| 
 | 
 | ||||||
| const domParser = new DOMParser(); | const domParser = new DOMParser(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { importFetchedAccounts, importFetchedStatus } from './importer'; | import { importFetchedAccounts, importFetchedStatus } from './importer'; | ||||||
| 
 | 
 | ||||||
| export const REBLOG_REQUEST = 'REBLOG_REQUEST'; | export const REBLOG_REQUEST = 'REBLOG_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { importFetchedAccounts } from './importer'; | import { importFetchedAccounts } from './importer'; | ||||||
| import { showAlertForError } from './alerts'; | import { showAlertForError } from './alerts'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import { expandSpoilers, disableSwiping } from 'flavours/glitch/util/initial_state'; | import { expandSpoilers, disableSwiping } from 'flavours/glitch/initial_state'; | ||||||
| import { openModal } from './modal'; | import { openModal } from './modal'; | ||||||
| 
 | 
 | ||||||
| export const LOCAL_SETTING_CHANGE = 'LOCAL_SETTING_CHANGE'; | export const LOCAL_SETTING_CHANGE = 'LOCAL_SETTING_CHANGE'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { debounce } from 'lodash'; | import { debounce } from 'lodash'; | ||||||
| import compareId from 'flavours/glitch/util/compare_id'; | import compareId from '../compare_id'; | ||||||
| import { List as ImmutableList } from 'immutable'; | import { List as ImmutableList } from 'immutable'; | ||||||
| 
 | 
 | ||||||
| export const MARKERS_FETCH_REQUEST = 'MARKERS_FETCH_REQUEST'; | export const MARKERS_FETCH_REQUEST = 'MARKERS_FETCH_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from 'flavours/glitch/util/api'; | import api, { getLinks } from '../api'; | ||||||
| import { fetchRelationships } from './accounts'; | import { fetchRelationships } from './accounts'; | ||||||
| import { importFetchedAccounts } from './importer'; | import { importFetchedAccounts } from './importer'; | ||||||
| import { openModal } from 'flavours/glitch/actions/modal'; | import { openModal } from 'flavours/glitch/actions/modal'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from 'flavours/glitch/util/api'; | import api, { getLinks } from '../api'; | ||||||
| import IntlMessageFormat from 'intl-messageformat'; | import IntlMessageFormat from 'intl-messageformat'; | ||||||
| import { fetchFollowRequests, fetchRelationships } from './accounts'; | import { fetchFollowRequests, fetchRelationships } from './accounts'; | ||||||
| import { | import { | ||||||
|  | @ -11,10 +11,10 @@ import { submitMarkers } from './markers'; | ||||||
| import { saveSettings } from './settings'; | import { saveSettings } from './settings'; | ||||||
| import { defineMessages } from 'react-intl'; | import { defineMessages } from 'react-intl'; | ||||||
| import { List as ImmutableList } from 'immutable'; | import { List as ImmutableList } from 'immutable'; | ||||||
| import { unescapeHTML } from 'flavours/glitch/util/html'; | import { unescapeHTML } from 'flavours/glitch/utils/html'; | ||||||
| import { usePendingItems as preferPendingItems } from 'flavours/glitch/util/initial_state'; | import { usePendingItems as preferPendingItems } from 'flavours/glitch/initial_state'; | ||||||
| import compareId from 'flavours/glitch/util/compare_id'; | import compareId from 'flavours/glitch/compare_id'; | ||||||
| import { requestNotificationPermission } from 'flavours/glitch/util/notifications'; | import { requestNotificationPermission } from 'flavours/glitch/utils/notifications'; | ||||||
| 
 | 
 | ||||||
| export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE'; | export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE'; | ||||||
| export const NOTIFICATIONS_UPDATE_NOOP = 'NOTIFICATIONS_UPDATE_NOOP'; | export const NOTIFICATIONS_UPDATE_NOOP = 'NOTIFICATIONS_UPDATE_NOOP'; | ||||||
|  |  | ||||||
|  | @ -1,11 +1,11 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { importFetchedStatuses } from './importer'; | import { importFetchedStatuses } from './importer'; | ||||||
| 
 | 
 | ||||||
| export const PINNED_STATUSES_FETCH_REQUEST = 'PINNED_STATUSES_FETCH_REQUEST'; | export const PINNED_STATUSES_FETCH_REQUEST = 'PINNED_STATUSES_FETCH_REQUEST'; | ||||||
| export const PINNED_STATUSES_FETCH_SUCCESS = 'PINNED_STATUSES_FETCH_SUCCESS'; | export const PINNED_STATUSES_FETCH_SUCCESS = 'PINNED_STATUSES_FETCH_SUCCESS'; | ||||||
| export const PINNED_STATUSES_FETCH_FAIL = 'PINNED_STATUSES_FETCH_FAIL'; | export const PINNED_STATUSES_FETCH_FAIL = 'PINNED_STATUSES_FETCH_FAIL'; | ||||||
| 
 | 
 | ||||||
| import { me } from 'flavours/glitch/util/initial_state'; | import { me } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| export function fetchPinnedStatuses() { | export function fetchPinnedStatuses() { | ||||||
|   return (dispatch, getState) => { |   return (dispatch, getState) => { | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { importFetchedPoll } from './importer'; | import { importFetchedPoll } from './importer'; | ||||||
| 
 | 
 | ||||||
| export const POLL_VOTE_REQUEST = 'POLL_VOTE_REQUEST'; | export const POLL_VOTE_REQUEST = 'POLL_VOTE_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../../api'; | ||||||
| import { pushNotificationsSetting } from 'flavours/glitch/util/settings'; | import { pushNotificationsSetting } from '../../settings'; | ||||||
| import { setBrowserSupport, setSubscription, clearSubscription } from './setter'; | import { setBrowserSupport, setSubscription, clearSubscription } from './setter'; | ||||||
| 
 | 
 | ||||||
| // Taken from https://www.npmjs.com/package/web-push
 | // Taken from https://www.npmjs.com/package/web-push
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { openModal } from './modal'; | import { openModal } from './modal'; | ||||||
| 
 | 
 | ||||||
| export const REPORT_SUBMIT_REQUEST = 'REPORT_SUBMIT_REQUEST'; | export const REPORT_SUBMIT_REQUEST = 'REPORT_SUBMIT_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { fetchRelationships } from './accounts'; | import { fetchRelationships } from './accounts'; | ||||||
| import { importFetchedAccounts, importFetchedStatuses } from './importer'; | import { importFetchedAccounts, importFetchedStatuses } from './importer'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { importFetchedAccount } from './importer'; | import { importFetchedAccount } from './importer'; | ||||||
| 
 | 
 | ||||||
| export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST'; | export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { debounce } from 'lodash'; | import { debounce } from 'lodash'; | ||||||
| import { showAlertForError } from './alerts'; | import { showAlertForError } from './alerts'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| 
 | 
 | ||||||
| import { deleteFromTimelines } from './timelines'; | import { deleteFromTimelines } from './timelines'; | ||||||
| import { importFetchedStatus, importFetchedStatuses } from './importer'; | import { importFetchedStatus, importFetchedStatuses } from './importer'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| // @ts-check
 | // @ts-check
 | ||||||
| 
 | 
 | ||||||
| import { connectStream } from 'flavours/glitch/util/stream'; | import { connectStream } from '../stream'; | ||||||
| import { | import { | ||||||
|   updateTimeline, |   updateTimeline, | ||||||
|   deleteFromTimelines, |   deleteFromTimelines, | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| import { importFetchedAccounts } from './importer'; | import { importFetchedAccounts } from './importer'; | ||||||
| import { fetchRelationships } from './accounts'; | import { fetchRelationships } from './accounts'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api from 'flavours/glitch/util/api'; | import api from '../api'; | ||||||
| 
 | 
 | ||||||
| export const HASHTAG_FETCH_REQUEST = 'HASHTAG_FETCH_REQUEST'; | export const HASHTAG_FETCH_REQUEST = 'HASHTAG_FETCH_REQUEST'; | ||||||
| export const HASHTAG_FETCH_SUCCESS = 'HASHTAG_FETCH_SUCCESS'; | export const HASHTAG_FETCH_SUCCESS = 'HASHTAG_FETCH_SUCCESS'; | ||||||
|  |  | ||||||
|  | @ -1,10 +1,10 @@ | ||||||
| import { importFetchedStatus, importFetchedStatuses } from './importer'; | import { importFetchedStatus, importFetchedStatuses } from './importer'; | ||||||
| import { submitMarkers } from './markers'; | import { submitMarkers } from './markers'; | ||||||
| import api, { getLinks } from 'flavours/glitch/util/api'; | import api, { getLinks } from 'flavours/glitch/api'; | ||||||
| import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; | import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; | ||||||
| import compareId from 'flavours/glitch/util/compare_id'; | import compareId from 'flavours/glitch/compare_id'; | ||||||
| import { me, usePendingItems as preferPendingItems } from 'flavours/glitch/util/initial_state'; | import { me, usePendingItems as preferPendingItems } from 'flavours/glitch/initial_state'; | ||||||
| import { toServerSideType } from 'flavours/glitch/util/filters'; | import { toServerSideType } from 'flavours/glitch/utils/filters'; | ||||||
| 
 | 
 | ||||||
| export const TIMELINE_UPDATE  = 'TIMELINE_UPDATE'; | export const TIMELINE_UPDATE  = 'TIMELINE_UPDATE'; | ||||||
| export const TIMELINE_DELETE  = 'TIMELINE_DELETE'; | export const TIMELINE_DELETE  = 'TIMELINE_DELETE'; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import api, { getLinks } from 'flavours/glitch/util/api'; | import api, { getLinks } from '../api'; | ||||||
| import { importFetchedStatuses } from './importer'; | import { importFetchedStatuses } from './importer'; | ||||||
| 
 | 
 | ||||||
| export const TRENDS_TAGS_FETCH_REQUEST = 'TRENDS_TAGS_FETCH_REQUEST'; | export const TRENDS_TAGS_FETCH_REQUEST = 'TRENDS_TAGS_FETCH_REQUEST'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import axios from 'axios'; | import axios from 'axios'; | ||||||
| import ready from './ready'; |  | ||||||
| import LinkHeader from 'http-link-header'; | import LinkHeader from 'http-link-header'; | ||||||
|  | import ready from './ready'; | ||||||
| 
 | 
 | ||||||
| export const getLinks = response => { | export const getLinks = response => { | ||||||
|   const value = response.headers.link; |   const value = response.headers.link; | ||||||
|  | @ -5,7 +5,7 @@ import includes from 'array-includes'; | ||||||
| import assign from 'object-assign'; | import assign from 'object-assign'; | ||||||
| import values from 'object.values'; | import values from 'object.values'; | ||||||
| import isNaN from 'is-nan'; | import isNaN from 'is-nan'; | ||||||
| import { decode as decodeBase64 } from './base64'; | import { decode as decodeBase64 } from './utils/base64'; | ||||||
| import promiseFinally from 'promise.prototype.finally'; | import promiseFinally from 'promise.prototype.finally'; | ||||||
| 
 | 
 | ||||||
| if (!Array.prototype.includes) { | if (!Array.prototype.includes) { | ||||||
|  | @ -7,7 +7,7 @@ import Permalink from './permalink'; | ||||||
| import IconButton from './icon_button'; | import IconButton from './icon_button'; | ||||||
| import { defineMessages, injectIntl } from 'react-intl'; | import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { me } from 'flavours/glitch/util/initial_state'; | import { me } from 'flavours/glitch/initial_state'; | ||||||
| import RelativeTimestamp from './relative_timestamp'; | import RelativeTimestamp from './relative_timestamp'; | ||||||
| import Skeleton from 'flavours/glitch/components/skeleton'; | import Skeleton from 'flavours/glitch/components/skeleton'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import api from 'flavours/glitch/util/api'; | import api from 'flavours/glitch/api'; | ||||||
| import { FormattedNumber } from 'react-intl'; | import { FormattedNumber } from 'react-intl'; | ||||||
| import { Sparklines, SparklinesCurve } from 'react-sparklines'; | import { Sparklines, SparklinesCurve } from 'react-sparklines'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import api from 'flavours/glitch/util/api'; | import api from 'flavours/glitch/api'; | ||||||
| import { FormattedNumber } from 'react-intl'; | import { FormattedNumber } from 'react-intl'; | ||||||
| import { roundTo10 } from 'flavours/glitch/util/numbers'; | import { roundTo10 } from 'flavours/glitch/utils/numbers'; | ||||||
| import Skeleton from 'flavours/glitch/components/skeleton'; | import Skeleton from 'flavours/glitch/components/skeleton'; | ||||||
| 
 | 
 | ||||||
| export default class Dimension extends React.PureComponent { | export default class Dimension extends React.PureComponent { | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import api from 'flavours/glitch/util/api'; | import api from 'flavours/glitch/api'; | ||||||
| import { injectIntl, defineMessages } from 'react-intl'; | import { injectIntl, defineMessages } from 'react-intl'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,9 +1,9 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import api from 'flavours/glitch/util/api'; | import api from 'flavours/glitch/api'; | ||||||
| import { FormattedMessage, FormattedNumber, FormattedDate } from 'react-intl'; | import { FormattedMessage, FormattedNumber, FormattedDate } from 'react-intl'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import { roundTo10 } from 'flavours/glitch/util/numbers'; | import { roundTo10 } from 'flavours/glitch/utils/numbers'; | ||||||
| 
 | 
 | ||||||
| const dateForCohort = cohort => { | const dateForCohort = cohort => { | ||||||
|   switch(cohort.frequency) { |   switch(cohort.frequency) { | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import api from 'flavours/glitch/util/api'; | import api from 'flavours/glitch/api'; | ||||||
| import { FormattedMessage } from 'react-intl'; | import { FormattedMessage } from 'react-intl'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import Hashtag from 'flavours/glitch/components/hashtag'; | import Hashtag from 'flavours/glitch/components/hashtag'; | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import PropTypes from 'prop-types'; | ||||||
| import { FormattedNumber } from 'react-intl'; | import { FormattedNumber } from 'react-intl'; | ||||||
| import TransitionMotion from 'react-motion/lib/TransitionMotion'; | import TransitionMotion from 'react-motion/lib/TransitionMotion'; | ||||||
| import spring from 'react-motion/lib/spring'; | import spring from 'react-motion/lib/spring'; | ||||||
| import { reduceMotion } from 'flavours/glitch/util/initial_state'; | import { reduceMotion } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| const obfuscatedCount = count => { | const obfuscatedCount = count => { | ||||||
|   if (count < 0) { |   if (count < 0) { | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import unicodeMapping from 'flavours/glitch/util/emoji/emoji_unicode_mapping_light'; | import unicodeMapping from 'flavours/glitch/features/emoji/emoji_unicode_mapping_light'; | ||||||
| 
 | 
 | ||||||
| import { assetHost } from 'flavours/glitch/util/config'; | import { assetHost } from 'flavours/glitch/utils/config'; | ||||||
| 
 | 
 | ||||||
| export default class AutosuggestEmoji extends React.PureComponent { | export default class AutosuggestEmoji extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import { autoPlayGif } from 'flavours/glitch/util/initial_state'; | import { autoPlayGif } from 'flavours/glitch/initial_state'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| 
 | 
 | ||||||
| export default class Avatar extends React.PureComponent { | export default class Avatar extends React.PureComponent { | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import { autoPlayGif } from 'flavours/glitch/util/initial_state'; | import { autoPlayGif } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| export default class AvatarComposite extends React.PureComponent { | export default class AvatarComposite extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import { autoPlayGif } from 'flavours/glitch/util/initial_state'; | import { autoPlayGif } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| export default class AvatarOverlay extends React.PureComponent { | export default class AvatarOverlay extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import { supportsPassiveEvents } from 'detect-passive-events'; | import { supportsPassiveEvents } from 'detect-passive-events'; | ||||||
| import { scrollTop } from 'flavours/glitch/util/scroll'; | import { scrollTop } from '../scroll'; | ||||||
| 
 | 
 | ||||||
| export default class Column extends React.PureComponent { | export default class Column extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import React from 'react'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import { autoPlayGif } from 'flavours/glitch/util/initial_state'; | import { autoPlayGif } from 'flavours/glitch/initial_state'; | ||||||
| import Skeleton from 'flavours/glitch/components/skeleton'; | import Skeleton from 'flavours/glitch/components/skeleton'; | ||||||
| 
 | 
 | ||||||
| export default class DisplayName extends React.PureComponent { | export default class DisplayName extends React.PureComponent { | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import PropTypes from 'prop-types'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import IconButton from './icon_button'; | import IconButton from './icon_button'; | ||||||
| import Overlay from 'react-overlays/lib/Overlay'; | import Overlay from 'react-overlays/lib/Overlay'; | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from '../features/ui/util/optional_motion'; | ||||||
| import spring from 'react-motion/lib/spring'; | import spring from 'react-motion/lib/spring'; | ||||||
| import { supportsPassiveEvents } from 'detect-passive-events'; | import { supportsPassiveEvents } from 'detect-passive-events'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import { FormattedMessage } from 'react-intl'; | import { FormattedMessage } from 'react-intl'; | ||||||
| import { source_url } from 'flavours/glitch/util/initial_state'; | import { source_url } from 'flavours/glitch/initial_state'; | ||||||
| import { preferencesLink } from 'flavours/glitch/util/backend_links'; | import { preferencesLink } from 'flavours/glitch/utils/backend_links'; | ||||||
| import StackTrace from 'stacktrace-js'; | import StackTrace from 'stacktrace-js'; | ||||||
| 
 | 
 | ||||||
| export default class ErrorBoundary extends React.PureComponent { | export default class ErrorBoundary extends React.PureComponent { | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from '../features/ui/util/optional_motion'; | ||||||
| import spring from 'react-motion/lib/spring'; | import spring from 'react-motion/lib/spring'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import scheduleIdleTask from 'flavours/glitch/util/schedule_idle_task'; | import scheduleIdleTask from '../features/ui/util/schedule_idle_task'; | ||||||
| import getRectFromEntry from 'flavours/glitch/util/get_rect_from_entry'; | import getRectFromEntry from '../features/ui/util/get_rect_from_entry'; | ||||||
| 
 | 
 | ||||||
| // Diff these props in the "unrendered" state
 | // Diff these props in the "unrendered" state
 | ||||||
| const updateOnPropsForUnrendered = ['id', 'index', 'listLength', 'cachedHeight']; | const updateOnPropsForUnrendered = ['id', 'index', 'listLength', 'cachedHeight']; | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ import PropTypes from 'prop-types'; | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| 
 | 
 | ||||||
| //  Utils.
 | //  Utils.
 | ||||||
| import { assignHandlers } from 'flavours/glitch/util/react_helpers'; | import { assignHandlers } from 'flavours/glitch/utils/react_helpers'; | ||||||
| 
 | 
 | ||||||
| //  Handlers.
 | //  Handlers.
 | ||||||
| const handlers = { | const handlers = { | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { MediaGallery, Video, Audio } from 'flavours/glitch/util/async-components'; | import { MediaGallery, Video, Audio } from 'flavours/glitch/features/ui/util/async-components'; | ||||||
| import Bundle from 'flavours/glitch/features/ui/components/bundle'; | import Bundle from 'flavours/glitch/features/ui/components/bundle'; | ||||||
| import noop from 'lodash/noop'; | import noop from 'lodash/noop'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,9 +4,9 @@ import PropTypes from 'prop-types'; | ||||||
| import { is } from 'immutable'; | import { is } from 'immutable'; | ||||||
| import IconButton from './icon_button'; | import IconButton from './icon_button'; | ||||||
| import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| import { isIOS } from 'flavours/glitch/util/is_mobile'; | import { isIOS } from '../is_mobile'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import { autoPlayGif, displayMedia, useBlurhash } from 'flavours/glitch/util/initial_state'; | import { autoPlayGif, displayMedia, useBlurhash } from 'flavours/glitch/initial_state'; | ||||||
| import { debounce } from 'lodash'; | import { debounce } from 'lodash'; | ||||||
| import Blurhash from 'flavours/glitch/components/blurhash'; | import Blurhash from 'flavours/glitch/components/blurhash'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,10 +4,10 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from 'flavours/glitch/features/ui/util/optional_motion'; | ||||||
| import spring from 'react-motion/lib/spring'; | import spring from 'react-motion/lib/spring'; | ||||||
| import escapeTextContentForBrowser from 'escape-html'; | import escapeTextContentForBrowser from 'escape-html'; | ||||||
| import emojify from 'flavours/glitch/util/emoji'; | import emojify from 'flavours/glitch/features/emoji/emoji'; | ||||||
| import RelativeTimestamp from './relative_timestamp'; | import RelativeTimestamp from './relative_timestamp'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,11 +4,11 @@ import PropTypes from 'prop-types'; | ||||||
| import IntersectionObserverArticleContainer from 'flavours/glitch/containers/intersection_observer_article_container'; | import IntersectionObserverArticleContainer from 'flavours/glitch/containers/intersection_observer_article_container'; | ||||||
| import LoadMore from './load_more'; | import LoadMore from './load_more'; | ||||||
| import LoadPending from './load_pending'; | import LoadPending from './load_pending'; | ||||||
| import IntersectionObserverWrapper from 'flavours/glitch/util/intersection_observer_wrapper'; | import IntersectionObserverWrapper from 'flavours/glitch/features/ui/util/intersection_observer_wrapper'; | ||||||
| import { throttle } from 'lodash'; | import { throttle } from 'lodash'; | ||||||
| import { List as ImmutableList } from 'immutable'; | import { List as ImmutableList } from 'immutable'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from 'flavours/glitch/util/fullscreen'; | import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../features/ui/util/fullscreen'; | ||||||
| import LoadingIndicator from './loading_indicator'; | import LoadingIndicator from './loading_indicator'; | ||||||
| import { connect } from 'react-redux'; | import { connect } from 'react-redux'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import { domain } from 'flavours/glitch/util/initial_state'; | import { domain } from 'flavours/glitch/initial_state'; | ||||||
| import { fetchServer } from 'flavours/glitch/actions/server'; | import { fetchServer } from 'flavours/glitch/actions/server'; | ||||||
| import { connect } from 'react-redux'; | import { connect } from 'react-redux'; | ||||||
| import Account from 'flavours/glitch/containers/account_container'; | import Account from 'flavours/glitch/containers/account_container'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import { toShortNumber, pluralReady, DECIMAL_UNITS } from '../util/numbers'; | import { toShortNumber, pluralReady, DECIMAL_UNITS } from '../utils/numbers'; | ||||||
| import { FormattedMessage, FormattedNumber } from 'react-intl'; | import { FormattedMessage, FormattedNumber } from 'react-intl'; | ||||||
| // @ts-check
 | // @ts-check
 | ||||||
| 
 | 
 | ||||||
|  | @ -56,7 +56,7 @@ ShortNumber.propTypes = { | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * @typedef {object} ShortNumberCounterProps |  * @typedef {object} ShortNumberCounterProps | ||||||
|  * @property {import('../util/number').ShortNumber} value Short number |  * @property {import('../utils/number').ShortNumber} value Short number | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  |  | ||||||
|  | @ -10,13 +10,13 @@ import AttachmentList from './attachment_list'; | ||||||
| import Card from '../features/status/components/card'; | import Card from '../features/status/components/card'; | ||||||
| import { injectIntl, FormattedMessage } from 'react-intl'; | import { injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { MediaGallery, Video, Audio } from 'flavours/glitch/util/async-components'; | import { MediaGallery, Video, Audio } from '../features/ui/util/async-components'; | ||||||
| import { HotKeys } from 'react-hotkeys'; | import { HotKeys } from 'react-hotkeys'; | ||||||
| import NotificationOverlayContainer from 'flavours/glitch/features/notifications/containers/overlay_container'; | import NotificationOverlayContainer from 'flavours/glitch/features/notifications/containers/overlay_container'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import { autoUnfoldCW } from 'flavours/glitch/util/content_warning'; | import { autoUnfoldCW } from 'flavours/glitch/utils/content_warning'; | ||||||
| import PollContainer from 'flavours/glitch/containers/poll_container'; | import PollContainer from 'flavours/glitch/containers/poll_container'; | ||||||
| import { displayMedia } from 'flavours/glitch/util/initial_state'; | import { displayMedia } from 'flavours/glitch/initial_state'; | ||||||
| import PictureInPicturePlaceholder from 'flavours/glitch/components/picture_in_picture_placeholder'; | import PictureInPicturePlaceholder from 'flavours/glitch/components/picture_in_picture_placeholder'; | ||||||
| 
 | 
 | ||||||
| // We use the component (and not the container) since we do not want
 | // We use the component (and not the container) since we do not want
 | ||||||
|  |  | ||||||
|  | @ -5,9 +5,9 @@ import IconButton from './icon_button'; | ||||||
| import DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container'; | import DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container'; | ||||||
| import { defineMessages, injectIntl } from 'react-intl'; | import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { me } from 'flavours/glitch/util/initial_state'; | import { me } from 'flavours/glitch/initial_state'; | ||||||
| import RelativeTimestamp from './relative_timestamp'; | import RelativeTimestamp from './relative_timestamp'; | ||||||
| import { accountAdminLink, statusAdminLink } from 'flavours/glitch/util/backend_links'; | import { accountAdminLink, statusAdminLink } from 'flavours/glitch/utils/backend_links'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import { PERMISSION_MANAGE_USERS } from 'flavours/glitch/permissions'; | import { PERMISSION_MANAGE_USERS } from 'flavours/glitch/permissions'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ import { FormattedMessage } from 'react-intl'; | ||||||
| import Permalink from './permalink'; | import Permalink from './permalink'; | ||||||
| import classnames from 'classnames'; | import classnames from 'classnames'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| import { autoPlayGif } from 'flavours/glitch/util/initial_state'; | import { autoPlayGif } from 'flavours/glitch/initial_state'; | ||||||
| import { decode as decodeIDNA } from 'flavours/glitch/util/idna'; | import { decode as decodeIDNA } from 'flavours/glitch/utils/idna'; | ||||||
| 
 | 
 | ||||||
| const textMatchesTarget = (text, origin, host) => { | const textMatchesTarget = (text, origin, host) => { | ||||||
|   return (text === origin || text === host |   return (text === origin || text === host | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import IconButton from './icon_button'; | import IconButton from './icon_button'; | ||||||
| import VisibilityIcon from './status_visibility_icon'; | import VisibilityIcon from './status_visibility_icon'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| import { languages } from 'flavours/glitch/util/initial_state'; | import { languages } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| //  Messages for use with internationalization stuff.
 | //  Messages for use with internationalization stuff.
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import PropTypes from 'prop-types'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import { FormattedMessage } from 'react-intl'; | import { FormattedMessage } from 'react-intl'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| import { me } from 'flavours/glitch/util/initial_state'; | import { me } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| export default class StatusPrepend extends React.PureComponent { | export default class StatusPrepend extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ import { | ||||||
| } from 'flavours/glitch/actions/accounts'; | } from 'flavours/glitch/actions/accounts'; | ||||||
| import { openModal } from 'flavours/glitch/actions/modal'; | import { openModal } from 'flavours/glitch/actions/modal'; | ||||||
| import { initMuteModal } from 'flavours/glitch/actions/mutes'; | import { initMuteModal } from 'flavours/glitch/actions/mutes'; | ||||||
| import { unfollowModal } from 'flavours/glitch/util/initial_state'; | import { unfollowModal } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, |   unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import { hydrateStore } from 'flavours/glitch/actions/store'; | ||||||
| import { IntlProvider, addLocaleData } from 'react-intl'; | import { IntlProvider, addLocaleData } from 'react-intl'; | ||||||
| import { getLocale } from 'mastodon/locales'; | import { getLocale } from 'mastodon/locales'; | ||||||
| import Compose from 'flavours/glitch/features/standalone/compose'; | import Compose from 'flavours/glitch/features/standalone/compose'; | ||||||
| import initialState from 'flavours/glitch/util/initial_state'; | import initialState from 'flavours/glitch/initial_state'; | ||||||
| import { fetchCustomEmojis } from 'flavours/glitch/actions/custom_emojis'; | import { fetchCustomEmojis } from 'flavours/glitch/actions/custom_emojis'; | ||||||
| 
 | 
 | ||||||
| const { localeData, messages } = getLocale(); | const { localeData, messages } = getLocale(); | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import { openDropdownMenu, closeDropdownMenu } from 'flavours/glitch/actions/dro | ||||||
| import { openModal, closeModal } from 'flavours/glitch/actions/modal'; | import { openModal, closeModal } from 'flavours/glitch/actions/modal'; | ||||||
| import { connect } from 'react-redux'; | import { connect } from 'react-redux'; | ||||||
| import DropdownMenu from 'flavours/glitch/components/dropdown_menu'; | import DropdownMenu from 'flavours/glitch/components/dropdown_menu'; | ||||||
| import { isUserTouching } from 'flavours/glitch/util/is_mobile'; | import { isUserTouching } from '../is_mobile'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => ({ | const mapStateToProps = state => ({ | ||||||
|   dropdownPlacement: state.getIn(['dropdown_menu', 'placement']), |   dropdownPlacement: state.getIn(['dropdown_menu', 'placement']), | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ import { connectUserStream } from 'flavours/glitch/actions/streaming'; | ||||||
| import { checkDeprecatedLocalSettings } from 'flavours/glitch/actions/local_settings'; | import { checkDeprecatedLocalSettings } from 'flavours/glitch/actions/local_settings'; | ||||||
| import { IntlProvider, addLocaleData } from 'react-intl'; | import { IntlProvider, addLocaleData } from 'react-intl'; | ||||||
| import { getLocale } from 'locales'; | import { getLocale } from 'locales'; | ||||||
| import initialState from 'flavours/glitch/util/initial_state'; | import initialState from 'flavours/glitch/initial_state'; | ||||||
| import ErrorBoundary from 'flavours/glitch/components/error_boundary'; | import ErrorBoundary from 'flavours/glitch/components/error_boundary'; | ||||||
| 
 | 
 | ||||||
| const { localeData, messages } = getLocale(); | const { localeData, messages } = getLocale(); | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import PropTypes from 'prop-types'; | ||||||
| import { IntlProvider, addLocaleData } from 'react-intl'; | import { IntlProvider, addLocaleData } from 'react-intl'; | ||||||
| import { fromJS } from 'immutable'; | import { fromJS } from 'immutable'; | ||||||
| import { getLocale } from 'mastodon/locales'; | import { getLocale } from 'mastodon/locales'; | ||||||
| import { getScrollbarWidth } from 'flavours/glitch/util/scrollbar'; | import { getScrollbarWidth } from 'flavours/glitch/utils/scrollbar'; | ||||||
| import MediaGallery from 'flavours/glitch/components/media_gallery'; | import MediaGallery from 'flavours/glitch/components/media_gallery'; | ||||||
| import Poll from 'flavours/glitch/components/poll'; | import Poll from 'flavours/glitch/components/poll'; | ||||||
| import { ImmutableHashtag as Hashtag } from 'flavours/glitch/components/hashtag'; | import { ImmutableHashtag as Hashtag } from 'flavours/glitch/components/hashtag'; | ||||||
|  |  | ||||||
|  | @ -36,8 +36,8 @@ import { openModal } from 'flavours/glitch/actions/modal'; | ||||||
| import { deployPictureInPicture } from 'flavours/glitch/actions/picture_in_picture'; | import { deployPictureInPicture } from 'flavours/glitch/actions/picture_in_picture'; | ||||||
| import { changeLocalSetting } from 'flavours/glitch/actions/local_settings'; | import { changeLocalSetting } from 'flavours/glitch/actions/local_settings'; | ||||||
| import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| import { boostModal, favouriteModal, deleteModal } from 'flavours/glitch/util/initial_state'; | import { boostModal, favouriteModal, deleteModal } from 'flavours/glitch/initial_state'; | ||||||
| import { filterEditLink } from 'flavours/glitch/util/backend_links'; | import { filterEditLink } from 'flavours/glitch/utils/backend_links'; | ||||||
| import { showAlertForError } from '../actions/alerts'; | import { showAlertForError } from '../actions/alerts'; | ||||||
| import AccountContainer from 'flavours/glitch/containers/account_container'; | import AccountContainer from 'flavours/glitch/containers/account_container'; | ||||||
| import Spoilers from '../components/spoilers'; | import Spoilers from '../components/spoilers'; | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ import { getLocale } from 'mastodon/locales'; | ||||||
| import PublicTimeline from 'flavours/glitch/features/standalone/public_timeline'; | import PublicTimeline from 'flavours/glitch/features/standalone/public_timeline'; | ||||||
| import HashtagTimeline from 'flavours/glitch/features/standalone/hashtag_timeline'; | import HashtagTimeline from 'flavours/glitch/features/standalone/hashtag_timeline'; | ||||||
| import ModalContainer from 'flavours/glitch/features/ui/containers/modal_container'; | import ModalContainer from 'flavours/glitch/features/ui/containers/modal_container'; | ||||||
| import initialState from 'flavours/glitch/util/initial_state'; | import initialState from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| const { localeData, messages } = getLocale(); | const { localeData, messages } = getLocale(); | ||||||
| addLocaleData(localeData); | addLocaleData(localeData); | ||||||
|  |  | ||||||
|  | @ -4,8 +4,8 @@ import PropTypes from 'prop-types'; | ||||||
| import DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container'; | import DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container'; | ||||||
| import { NavLink } from 'react-router-dom'; | import { NavLink } from 'react-router-dom'; | ||||||
| import { injectIntl, FormattedMessage, FormattedNumber } from 'react-intl'; | import { injectIntl, FormattedMessage, FormattedNumber } from 'react-intl'; | ||||||
| import { me, isStaff } from 'flavours/glitch/util/initial_state'; | import { me, isStaff } from 'flavours/glitch/initial_state'; | ||||||
| import { profileLink, accountAdminLink } from 'flavours/glitch/util/backend_links'; | import { profileLink, accountAdminLink } from 'flavours/glitch/utils/backend_links'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| 
 | 
 | ||||||
| export default @injectIntl | export default @injectIntl | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { autoPlayGif, me, title, domain } from 'flavours/glitch/util/initial_state'; | import { autoPlayGif, me, title, domain } from 'flavours/glitch/initial_state'; | ||||||
| import { preferencesLink, profileLink, accountAdminLink } from 'flavours/glitch/util/backend_links'; | import { preferencesLink, profileLink, accountAdminLink } from 'flavours/glitch/utils/backend_links'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| import IconButton from 'flavours/glitch/components/icon_button'; | import IconButton from 'flavours/glitch/components/icon_button'; | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| import Blurhash from 'flavours/glitch/components/blurhash'; | import Blurhash from 'flavours/glitch/components/blurhash'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| import { autoPlayGif, displayMedia, useBlurhash } from 'flavours/glitch/util/initial_state'; | import { autoPlayGif, displayMedia, useBlurhash } from 'flavours/glitch/initial_state'; | ||||||
| import { isIOS } from 'flavours/glitch/util/is_mobile'; | import { isIOS } from 'flavours/glitch/is_mobile'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ import { openModal } from 'flavours/glitch/actions/modal'; | ||||||
| import { blockDomain, unblockDomain } from 'flavours/glitch/actions/domain_blocks'; | import { blockDomain, unblockDomain } from 'flavours/glitch/actions/domain_blocks'; | ||||||
| import { initEditAccountNote } from 'flavours/glitch/actions/account_notes'; | import { initEditAccountNote } from 'flavours/glitch/actions/account_notes'; | ||||||
| import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| import { unfollowModal } from 'flavours/glitch/util/initial_state'; | import { unfollowModal } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, |   unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ import { throttle } from 'lodash'; | ||||||
| import { getPointerPosition, fileNameFromURL } from 'flavours/glitch/features/video'; | import { getPointerPosition, fileNameFromURL } from 'flavours/glitch/features/video'; | ||||||
| import { debounce } from 'lodash'; | import { debounce } from 'lodash'; | ||||||
| import Visualizer from './visualizer'; | import Visualizer from './visualizer'; | ||||||
| import { displayMedia, useBlurhash } from 'flavours/glitch/util/initial_state'; | import { displayMedia, useBlurhash } from 'flavours/glitch/initial_state'; | ||||||
| import Blurhash from 'flavours/glitch/components/blurhash'; | import Blurhash from 'flavours/glitch/components/blurhash'; | ||||||
| import { is } from 'immutable'; | import { is } from 'immutable'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/col | ||||||
| import ColumnSettingsContainer from './containers/column_settings_container'; | import ColumnSettingsContainer from './containers/column_settings_container'; | ||||||
| import { connectCommunityStream } from 'flavours/glitch/actions/streaming'; | import { connectCommunityStream } from 'flavours/glitch/actions/streaming'; | ||||||
| import { Helmet } from 'react-helmet'; | import { Helmet } from 'react-helmet'; | ||||||
| import { title } from 'flavours/glitch/util/initial_state'; | import { title } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   title: { id: 'column.community', defaultMessage: 'Local timeline' }, |   title: { id: 'column.community', defaultMessage: 'Local timeline' }, | ||||||
|  |  | ||||||
|  | @ -5,17 +5,17 @@ import ReplyIndicatorContainer from '../containers/reply_indicator_container'; | ||||||
| import AutosuggestTextarea from '../../../components/autosuggest_textarea'; | import AutosuggestTextarea from '../../../components/autosuggest_textarea'; | ||||||
| import AutosuggestInput from '../../../components/autosuggest_input'; | import AutosuggestInput from '../../../components/autosuggest_input'; | ||||||
| import { defineMessages, injectIntl } from 'react-intl'; | import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import EmojiPicker from 'flavours/glitch/features/emoji_picker'; | import EmojiPickerDropdown from '../containers/emoji_picker_dropdown_container'; | ||||||
| import PollFormContainer from '../containers/poll_form_container'; | import PollFormContainer from '../containers/poll_form_container'; | ||||||
| import UploadFormContainer from '../containers/upload_form_container'; | import UploadFormContainer from '../containers/upload_form_container'; | ||||||
| import WarningContainer from '../containers/warning_container'; | import WarningContainer from '../containers/warning_container'; | ||||||
| import { isMobile } from 'flavours/glitch/util/is_mobile'; | import { isMobile } from 'flavours/glitch/is_mobile'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { countableText } from 'flavours/glitch/util/counter'; | import { countableText } from '../util/counter'; | ||||||
| import OptionsContainer from '../containers/options_container'; | import OptionsContainer from '../containers/options_container'; | ||||||
| import Publisher from './publisher'; | import Publisher from './publisher'; | ||||||
| import TextareaIcons from './textarea_icons'; | import TextareaIcons from './textarea_icons'; | ||||||
| import { maxChars } from 'flavours/glitch/util/initial_state'; | import { maxChars } from 'flavours/glitch/initial_state'; | ||||||
| import CharacterCounter from './character_counter'; | import CharacterCounter from './character_counter'; | ||||||
| import { length } from 'stringz'; | import { length } from 'stringz'; | ||||||
| 
 | 
 | ||||||
|  | @ -143,7 +143,7 @@ class ComposeForm extends ImmutablePureComponent { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   //  Inserts an emoji at the caret.
 |   //  Inserts an emoji at the caret.
 | ||||||
|   handleEmoji = (data) => { |   handleEmojiPick = (data) => { | ||||||
|     const { textarea: { selectionStart } } = this; |     const { textarea: { selectionStart } } = this; | ||||||
|     const { onPickEmoji } = this.props; |     const { onPickEmoji } = this.props; | ||||||
|     if (onPickEmoji) { |     if (onPickEmoji) { | ||||||
|  | @ -275,7 +275,7 @@ class ComposeForm extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|     const { |     const { | ||||||
|       handleEmoji, |       handleEmojiPick, | ||||||
|       handleSecondarySubmit, |       handleSecondarySubmit, | ||||||
|       handleSelect, |       handleSelect, | ||||||
|       handleSubmit, |       handleSubmit, | ||||||
|  | @ -344,7 +344,7 @@ class ComposeForm extends ImmutablePureComponent { | ||||||
|           onPaste={onPaste} |           onPaste={onPaste} | ||||||
|           autoFocus={!showSearch && !isMobile(window.innerWidth, layout)} |           autoFocus={!showSearch && !isMobile(window.innerWidth, layout)} | ||||||
|         > |         > | ||||||
|           <EmojiPicker onPickEmoji={handleEmoji} /> |           <EmojiPickerDropdown onPickEmoji={handleEmojiPick} /> | ||||||
|           <TextareaIcons advancedOptions={advancedOptions} /> |           <TextareaIcons advancedOptions={advancedOptions} /> | ||||||
|           <div className='compose-form__modifiers'> |           <div className='compose-form__modifiers'> | ||||||
|             <UploadFormContainer /> |             <UploadFormContainer /> | ||||||
|  |  | ||||||
|  | @ -9,8 +9,8 @@ import IconButton from 'flavours/glitch/components/icon_button'; | ||||||
| import DropdownMenu from './dropdown_menu'; | import DropdownMenu from './dropdown_menu'; | ||||||
| 
 | 
 | ||||||
| //  Utils.
 | //  Utils.
 | ||||||
| import { isUserTouching } from 'flavours/glitch/util/is_mobile'; | import { isUserTouching } from 'flavours/glitch/is_mobile'; | ||||||
| import { assignHandlers } from 'flavours/glitch/util/react_helpers'; | import { assignHandlers } from 'flavours/glitch/utils/react_helpers'; | ||||||
| 
 | 
 | ||||||
| //  The component.
 | //  The component.
 | ||||||
| export default class ComposerOptionsDropdown extends React.PureComponent { | export default class ComposerOptionsDropdown extends React.PureComponent { | ||||||
|  |  | ||||||
|  | @ -9,9 +9,9 @@ import classNames from 'classnames'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| 
 | 
 | ||||||
| //  Utils.
 | //  Utils.
 | ||||||
| import { withPassive } from 'flavours/glitch/util/dom_helpers'; | import { withPassive } from 'flavours/glitch/utils/dom_helpers'; | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from '../../ui/util/optional_motion'; | ||||||
| import { assignHandlers } from 'flavours/glitch/util/react_helpers'; | import { assignHandlers } from 'flavours/glitch/utils/react_helpers'; | ||||||
| 
 | 
 | ||||||
| //  The spring to use with our motion.
 | //  The spring to use with our motion.
 | ||||||
| const springMotion = spring(1, { | const springMotion = spring(1, { | ||||||
|  |  | ||||||
|  | @ -1,19 +1,14 @@ | ||||||
| import { connect } from 'react-redux'; |  | ||||||
| import { changeSetting } from 'flavours/glitch/actions/settings'; |  | ||||||
| import { createSelector } from 'reselect'; |  | ||||||
| import { Map as ImmutableMap } from 'immutable'; |  | ||||||
| import { useEmoji } from 'flavours/glitch/actions/emojis'; |  | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; | ||||||
| import { EmojiPicker as EmojiPickerAsync } from 'flavours/glitch/util/async-components'; | import { EmojiPicker as EmojiPickerAsync } from '../../ui/util/async-components'; | ||||||
| import Overlay from 'react-overlays/lib/Overlay'; | import Overlay from 'react-overlays/lib/Overlay'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import { supportsPassiveEvents } from 'detect-passive-events'; | import { supportsPassiveEvents } from 'detect-passive-events'; | ||||||
| import { buildCustomEmojis, categoriesFromEmojis } from 'flavours/glitch/util/emoji'; | import { buildCustomEmojis, categoriesFromEmojis } from '../../emoji/emoji'; | ||||||
| import { useSystemEmojiFont } from 'flavours/glitch/util/initial_state'; | import { useSystemEmojiFont } from 'flavours/glitch/initial_state'; | ||||||
| import { assetHost } from 'flavours/glitch/util/config'; | import { assetHost } from 'flavours/glitch/utils/config'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' }, |   emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' }, | ||||||
|  | @ -31,80 +26,6 @@ const messages = defineMessages({ | ||||||
|   flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' }, |   flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' }, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| const perLine = 8; |  | ||||||
| const lines   = 2; |  | ||||||
| 
 |  | ||||||
| const DEFAULTS = [ |  | ||||||
|   '+1', |  | ||||||
|   'grinning', |  | ||||||
|   'kissing_heart', |  | ||||||
|   'heart_eyes', |  | ||||||
|   'laughing', |  | ||||||
|   'stuck_out_tongue_winking_eye', |  | ||||||
|   'sweat_smile', |  | ||||||
|   'joy', |  | ||||||
|   'yum', |  | ||||||
|   'disappointed', |  | ||||||
|   'thinking_face', |  | ||||||
|   'weary', |  | ||||||
|   'sob', |  | ||||||
|   'sunglasses', |  | ||||||
|   'heart', |  | ||||||
|   'ok_hand', |  | ||||||
| ]; |  | ||||||
| 
 |  | ||||||
| const getFrequentlyUsedEmojis = createSelector([ |  | ||||||
|   state => state.getIn(['settings', 'frequentlyUsedEmojis'], ImmutableMap()), |  | ||||||
| ], emojiCounters => { |  | ||||||
|   let emojis = emojiCounters |  | ||||||
|     .keySeq() |  | ||||||
|     .sort((a, b) => emojiCounters.get(a) - emojiCounters.get(b)) |  | ||||||
|     .reverse() |  | ||||||
|     .slice(0, perLine * lines) |  | ||||||
|     .toArray(); |  | ||||||
| 
 |  | ||||||
|   if (emojis.length < DEFAULTS.length) { |  | ||||||
|     emojis = emojis.concat(DEFAULTS.slice(0, DEFAULTS.length - emojis.length)); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   return emojis; |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| const getCustomEmojis = createSelector([ |  | ||||||
|   state => state.get('custom_emojis'), |  | ||||||
| ], emojis => emojis.filter(e => e.get('visible_in_picker')).sort((a, b) => { |  | ||||||
|   const aShort = a.get('shortcode').toLowerCase(); |  | ||||||
|   const bShort = b.get('shortcode').toLowerCase(); |  | ||||||
| 
 |  | ||||||
|   if (aShort < bShort) { |  | ||||||
|     return -1; |  | ||||||
|   } else if (aShort > bShort ) { |  | ||||||
|     return 1; |  | ||||||
|   } else { |  | ||||||
|     return 0; |  | ||||||
|   } |  | ||||||
| })); |  | ||||||
| 
 |  | ||||||
| const mapStateToProps = state => ({ |  | ||||||
|   custom_emojis: getCustomEmojis(state), |  | ||||||
|   skinTone: state.getIn(['settings', 'skinTone']), |  | ||||||
|   frequentlyUsedEmojis: getFrequentlyUsedEmojis(state), |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| const mapDispatchToProps = (dispatch, { onPickEmoji }) => ({ |  | ||||||
|   onSkinTone: skinTone => { |  | ||||||
|     dispatch(changeSetting(['skinTone'], skinTone)); |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   onPickEmoji: emoji => { |  | ||||||
|     dispatch(useEmoji(emoji)); |  | ||||||
| 
 |  | ||||||
|     if (onPickEmoji) { |  | ||||||
|       onPickEmoji(emoji); |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| let EmojiPicker, Emoji; // load asynchronously
 | let EmojiPicker, Emoji; // load asynchronously
 | ||||||
| 
 | 
 | ||||||
| const listenerOptions = supportsPassiveEvents ? { passive: true } : false; | const listenerOptions = supportsPassiveEvents ? { passive: true } : false; | ||||||
|  | @ -389,8 +310,7 @@ class EmojiPickerMenu extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default @connect(mapStateToProps, mapDispatchToProps) | export default @injectIntl | ||||||
| @injectIntl |  | ||||||
| class EmojiPickerDropdown extends React.PureComponent { | class EmojiPickerDropdown extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|  | @ -10,8 +10,8 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| 
 | 
 | ||||||
| //  Utils.
 | //  Utils.
 | ||||||
| import { conditionalRender } from 'flavours/glitch/util/react_helpers'; | import { conditionalRender } from 'flavours/glitch/utils/react_helpers'; | ||||||
| import { signOutLink } from 'flavours/glitch/util/backend_links'; | import { signOutLink } from 'flavours/glitch/utils/backend_links'; | ||||||
| 
 | 
 | ||||||
| //  Messages.
 | //  Messages.
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|  |  | ||||||
|  | @ -3,12 +3,12 @@ import PropTypes from 'prop-types'; | ||||||
| import { injectIntl, defineMessages } from 'react-intl'; | import { injectIntl, defineMessages } from 'react-intl'; | ||||||
| import TextIconButton from './text_icon_button'; | import TextIconButton from './text_icon_button'; | ||||||
| import Overlay from 'react-overlays/lib/Overlay'; | import Overlay from 'react-overlays/lib/Overlay'; | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from 'flavours/glitch/features/ui/util/optional_motion'; | ||||||
| import spring from 'react-motion/lib/spring'; | import spring from 'react-motion/lib/spring'; | ||||||
| import { supportsPassiveEvents } from 'detect-passive-events'; | import { supportsPassiveEvents } from 'detect-passive-events'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import { languages as preloadedLanguages } from 'flavours/glitch/util/initial_state'; | import { languages as preloadedLanguages } from 'flavours/glitch/initial_state'; | ||||||
| import { loupeIcon, deleteIcon } from 'flavours/glitch/util/icons'; | import { loupeIcon, deleteIcon } from 'flavours/glitch/utils/icons'; | ||||||
| import fuzzysort from 'fuzzysort'; | import fuzzysort from 'fuzzysort'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import Avatar from 'flavours/glitch/components/avatar'; | ||||||
| import Permalink from 'flavours/glitch/components/permalink'; | import Permalink from 'flavours/glitch/components/permalink'; | ||||||
| import { FormattedMessage } from 'react-intl'; | import { FormattedMessage } from 'react-intl'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { profileLink } from 'flavours/glitch/util/backend_links'; | import { profileLink } from 'flavours/glitch/utils/backend_links'; | ||||||
| 
 | 
 | ||||||
| export default class NavigationBar extends ImmutablePureComponent { | export default class NavigationBar extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -16,8 +16,8 @@ import LanguageDropdown from '../containers/language_dropdown_container'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| 
 | 
 | ||||||
| //  Utils.
 | //  Utils.
 | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from '../../ui/util/optional_motion'; | ||||||
| import { pollLimits } from 'flavours/glitch/util/initial_state'; | import { pollLimits } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| //  Messages.
 | //  Messages.
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ import IconButton from 'flavours/glitch/components/icon_button'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| import AutosuggestInput from 'flavours/glitch/components/autosuggest_input'; | import AutosuggestInput from 'flavours/glitch/components/autosuggest_input'; | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import { pollLimits } from 'flavours/glitch/util/initial_state'; | import { pollLimits } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   option_placeholder: { id: 'compose_form.poll.option_placeholder', defaultMessage: 'Choice {number}' }, |   option_placeholder: { id: 'compose_form.poll.option_placeholder', defaultMessage: 'Choice {number}' }, | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ import Button from 'flavours/glitch/components/button'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| 
 | 
 | ||||||
| //  Utils.
 | //  Utils.
 | ||||||
| import { maxChars } from 'flavours/glitch/util/initial_state'; | import { maxChars } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| //  Messages.
 | //  Messages.
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|  |  | ||||||
|  | @ -15,9 +15,9 @@ import Overlay from 'react-overlays/lib/Overlay'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| 
 | 
 | ||||||
| //  Utils.
 | //  Utils.
 | ||||||
| import { focusRoot } from 'flavours/glitch/util/dom_helpers'; | import { focusRoot } from 'flavours/glitch/utils/dom_helpers'; | ||||||
| import { searchEnabled } from 'flavours/glitch/util/initial_state'; | import { searchEnabled } from 'flavours/glitch/initial_state'; | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from '../../ui/util/optional_motion'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   placeholder: { id: 'search.placeholder', defaultMessage: 'Search' }, |   placeholder: { id: 'search.placeholder', defaultMessage: 'Search' }, | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ import StatusContainer from 'flavours/glitch/containers/status_container'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { ImmutableHashtag as Hashtag } from 'flavours/glitch/components/hashtag'; | import { ImmutableHashtag as Hashtag } from 'flavours/glitch/components/hashtag'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| import { searchEnabled } from 'flavours/glitch/util/initial_state'; | import { searchEnabled } from 'flavours/glitch/initial_state'; | ||||||
| import LoadMore from 'flavours/glitch/components/load_more'; | import LoadMore from 'flavours/glitch/components/load_more'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|  |  | ||||||
|  | @ -1,12 +1,12 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from '../../ui/util/optional_motion'; | ||||||
| import spring from 'react-motion/lib/spring'; | import spring from 'react-motion/lib/spring'; | ||||||
| import ImmutablePureComponent from 'react-immutable-pure-component'; | import ImmutablePureComponent from 'react-immutable-pure-component'; | ||||||
| import { FormattedMessage } from 'react-intl'; | import { FormattedMessage } from 'react-intl'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| import { isUserTouching } from 'flavours/glitch/util/is_mobile'; | import { isUserTouching } from 'flavours/glitch/is_mobile'; | ||||||
| 
 | 
 | ||||||
| export default class Upload extends ImmutablePureComponent { | export default class Upload extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from '../../ui/util/optional_motion'; | ||||||
| import spring from 'react-motion/lib/spring'; | import spring from 'react-motion/lib/spring'; | ||||||
| import Icon from 'flavours/glitch/components/icon'; | import Icon from 'flavours/glitch/components/icon'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import Motion from 'flavours/glitch/util/optional_motion'; | import Motion from '../../ui/util/optional_motion'; | ||||||
| import spring from 'react-motion/lib/spring'; | import spring from 'react-motion/lib/spring'; | ||||||
| 
 | 
 | ||||||
| export default class Warning extends React.PureComponent { | export default class Warning extends React.PureComponent { | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ import { | ||||||
| } from 'flavours/glitch/actions/modal'; | } from 'flavours/glitch/actions/modal'; | ||||||
| import { changeLocalSetting } from 'flavours/glitch/actions/local_settings'; | import { changeLocalSetting } from 'flavours/glitch/actions/local_settings'; | ||||||
| 
 | 
 | ||||||
| import { privacyPreference } from 'flavours/glitch/util/privacy_preference'; | import { privacyPreference } from 'flavours/glitch/utils/privacy_preference'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   missingDescriptionMessage: {  id: 'confirmations.missing_media_description.message', |   missingDescriptionMessage: {  id: 'confirmations.missing_media_description.message', | ||||||
|  |  | ||||||
|  | @ -0,0 +1,82 @@ | ||||||
|  | import { connect } from 'react-redux'; | ||||||
|  | import EmojiPickerDropdown from '../components/emoji_picker_dropdown'; | ||||||
|  | import { changeSetting } from 'flavours/glitch/actions/settings'; | ||||||
|  | import { createSelector } from 'reselect'; | ||||||
|  | import { Map as ImmutableMap } from 'immutable'; | ||||||
|  | import { useEmoji } from 'flavours/glitch/actions/emojis'; | ||||||
|  | 
 | ||||||
|  | const perLine = 8; | ||||||
|  | const lines   = 2; | ||||||
|  | 
 | ||||||
|  | const DEFAULTS = [ | ||||||
|  |   '+1', | ||||||
|  |   'grinning', | ||||||
|  |   'kissing_heart', | ||||||
|  |   'heart_eyes', | ||||||
|  |   'laughing', | ||||||
|  |   'stuck_out_tongue_winking_eye', | ||||||
|  |   'sweat_smile', | ||||||
|  |   'joy', | ||||||
|  |   'yum', | ||||||
|  |   'disappointed', | ||||||
|  |   'thinking_face', | ||||||
|  |   'weary', | ||||||
|  |   'sob', | ||||||
|  |   'sunglasses', | ||||||
|  |   'heart', | ||||||
|  |   'ok_hand', | ||||||
|  | ]; | ||||||
|  | 
 | ||||||
|  | const getFrequentlyUsedEmojis = createSelector([ | ||||||
|  |   state => state.getIn(['settings', 'frequentlyUsedEmojis'], ImmutableMap()), | ||||||
|  | ], emojiCounters => { | ||||||
|  |   let emojis = emojiCounters | ||||||
|  |     .keySeq() | ||||||
|  |     .sort((a, b) => emojiCounters.get(a) - emojiCounters.get(b)) | ||||||
|  |     .reverse() | ||||||
|  |     .slice(0, perLine * lines) | ||||||
|  |     .toArray(); | ||||||
|  | 
 | ||||||
|  |   if (emojis.length < DEFAULTS.length) { | ||||||
|  |     emojis = emojis.concat(DEFAULTS.slice(0, DEFAULTS.length - emojis.length)); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return emojis; | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | const getCustomEmojis = createSelector([ | ||||||
|  |   state => state.get('custom_emojis'), | ||||||
|  | ], emojis => emojis.filter(e => e.get('visible_in_picker')).sort((a, b) => { | ||||||
|  |   const aShort = a.get('shortcode').toLowerCase(); | ||||||
|  |   const bShort = b.get('shortcode').toLowerCase(); | ||||||
|  | 
 | ||||||
|  |   if (aShort < bShort) { | ||||||
|  |     return -1; | ||||||
|  |   } else if (aShort > bShort ) { | ||||||
|  |     return 1; | ||||||
|  |   } else { | ||||||
|  |     return 0; | ||||||
|  |   } | ||||||
|  | })); | ||||||
|  | 
 | ||||||
|  | const mapStateToProps = state => ({ | ||||||
|  |   custom_emojis: getCustomEmojis(state), | ||||||
|  |   skinTone: state.getIn(['settings', 'skinTone']), | ||||||
|  |   frequentlyUsedEmojis: getFrequentlyUsedEmojis(state), | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | const mapDispatchToProps = (dispatch, { onPickEmoji }) => ({ | ||||||
|  |   onSkinTone: skinTone => { | ||||||
|  |     dispatch(changeSetting(['skinTone'], skinTone)); | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   onPickEmoji: emoji => { | ||||||
|  |     dispatch(useEmoji(emoji)); | ||||||
|  | 
 | ||||||
|  |     if (onPickEmoji) { | ||||||
|  |       onPickEmoji(emoji); | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | export default connect(mapStateToProps, mapDispatchToProps)(EmojiPickerDropdown); | ||||||
|  | @ -2,7 +2,7 @@ import { openModal } from 'flavours/glitch/actions/modal'; | ||||||
| import { connect }   from 'react-redux'; | import { connect }   from 'react-redux'; | ||||||
| import { defineMessages, injectIntl } from 'react-intl'; | import { defineMessages, injectIntl } from 'react-intl'; | ||||||
| import Header from '../components/header'; | import Header from '../components/header'; | ||||||
| import { logOut } from 'flavours/glitch/util/log_out'; | import { logOut } from 'flavours/glitch/utils/log_out'; | ||||||
| 
 | 
 | ||||||
| const messages = defineMessages({ | const messages = defineMessages({ | ||||||
|   logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, |   logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { connect }   from 'react-redux'; | import { connect }   from 'react-redux'; | ||||||
| import NavigationBar from '../components/navigation_bar'; | import NavigationBar from '../components/navigation_bar'; | ||||||
| import { me } from 'flavours/glitch/util/initial_state'; | import { me } from 'flavours/glitch/initial_state'; | ||||||
| 
 | 
 | ||||||
| const mapStateToProps = state => { | const mapStateToProps = state => { | ||||||
|   return { |   return { | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ import { connect } from 'react-redux'; | ||||||
| import Warning from '../components/warning'; | import Warning from '../components/warning'; | ||||||
| import PropTypes from 'prop-types'; | import PropTypes from 'prop-types'; | ||||||
| import { FormattedMessage } from 'react-intl'; | import { FormattedMessage } from 'react-intl'; | ||||||
| import { me } from 'flavours/glitch/util/initial_state'; | import { me } from 'flavours/glitch/initial_state'; | ||||||
| import { profileLink, termsLink } from 'flavours/glitch/util/backend_links'; | import { profileLink, termsLink } from 'flavours/glitch/utils/backend_links'; | ||||||
| 
 | 
 | ||||||
| const buildHashtagRE = () => { | const buildHashtagRE = () => { | ||||||
|   try { |   try { | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue