import api from '../api';
import { emojiIndex } from 'emoji-mart';
+import { throttle } from 'lodash';
import {
updateTimeline,
};
};
+const fetchComposeSuggestionsAccounts = throttle((dispatch, getState, token) => {
+ api(getState).get('/api/v1/accounts/search', {
+ params: {
+ q: token.slice(1),
+ resolve: false,
+ limit: 4,
+ },
+ }).then(response => {
+ dispatch(readyComposeSuggestionsAccounts(token, response.data));
+ });
+}, 200, { leading: true, trailing: true });
+
+const fetchComposeSuggestionsEmojis = (dispatch, getState, token) => {
+ const results = emojiIndex.search(token.replace(':', ''), { maxResults: 5 });
+ dispatch(readyComposeSuggestionsEmojis(token, results));
+};
+
export function fetchComposeSuggestions(token) {
return (dispatch, getState) => {
if (token[0] === ':') {
- const results = emojiIndex.search(token.replace(':', ''), { maxResults: 3 });
- dispatch(readyComposeSuggestionsEmojis(token, results));
- return;
+ fetchComposeSuggestionsEmojis(dispatch, getState, token);
+ } else {
+ fetchComposeSuggestionsAccounts(dispatch, getState, token);
}
-
- api(getState).get('/api/v1/accounts/search', {
- params: {
- q: token.slice(1),
- resolve: false,
- limit: 4,
- },
- }).then(response => {
- dispatch(readyComposeSuggestionsAccounts(token, response.data));
- });
};
};
import PropTypes from 'prop-types';
import ReplyIndicatorContainer from '../containers/reply_indicator_container';
import AutosuggestTextarea from '../../../components/autosuggest_textarea';
-import { debounce } from 'lodash';
import UploadButtonContainer from '../containers/upload_button_container';
import { defineMessages, injectIntl } from 'react-intl';
import Collapsable from '../../../components/collapsable';
this.props.onClearSuggestions();
}
- onSuggestionsFetchRequested = debounce((token) => {
+ onSuggestionsFetchRequested = (token) => {
this.props.onFetchSuggestions(token);
- }, 500, { trailing: true })
+ }
onSuggestionSelected = (tokenStart, token, value) => {
this._restoreCaret = null;