~cytrogen/masto-fe

ca8944728f4568bbef8edae99382cd44cbc144d6 — ThibG 6 years ago 9a90ec3
Add message telling FTS is disabled when no toot can be found because of this (#11112)

* Add message telling FTS is disabled when no toot can be found because of this

Fixes #11082

* Remove info icon and reword message
M app/javascript/mastodon/actions/search.js => app/javascript/mastodon/actions/search.js +3 -2
@@ 48,7 48,7 @@ export function submitSearch() {
        dispatch(importFetchedStatuses(response.data.statuses));
      }

      dispatch(fetchSearchSuccess(response.data));
      dispatch(fetchSearchSuccess(response.data, value));
      dispatch(fetchRelationships(response.data.accounts.map(item => item.id)));
    }).catch(error => {
      dispatch(fetchSearchFail(error));


@@ 62,10 62,11 @@ export function fetchSearchRequest() {
  };
};

export function fetchSearchSuccess(results) {
export function fetchSearchSuccess(results, searchTerm) {
  return {
    type: SEARCH_FETCH_SUCCESS,
    results,
    searchTerm,
  };
};


M app/javascript/mastodon/features/compose/components/search_results.js => app/javascript/mastodon/features/compose/components/search_results.js +13 -1
@@ 7,6 7,7 @@ import StatusContainer from '../../../containers/status_container';
import ImmutablePureComponent from 'react-immutable-pure-component';
import Hashtag from '../../../components/hashtag';
import Icon from 'mastodon/components/icon';
import { searchEnabled } from '../../../initial_state';

const messages = defineMessages({
  dismissSuggestion: { id: 'suggestions.dismiss', defaultMessage: 'Dismiss suggestion' },


@@ 20,6 21,7 @@ class SearchResults extends ImmutablePureComponent {
    suggestions: ImmutablePropTypes.list.isRequired,
    fetchSuggestions: PropTypes.func.isRequired,
    dismissSuggestion: PropTypes.func.isRequired,
    searchTerm: PropTypes.string,
    intl: PropTypes.object.isRequired,
  };



@@ 28,7 30,7 @@ class SearchResults extends ImmutablePureComponent {
  }

  render () {
    const { intl, results, suggestions, dismissSuggestion } = this.props;
    const { intl, results, suggestions, dismissSuggestion, searchTerm } = this.props;

    if (results.isEmpty() && !suggestions.isEmpty()) {
      return (


@@ 76,6 78,16 @@ class SearchResults extends ImmutablePureComponent {
          {results.get('statuses').map(statusId => <StatusContainer key={statusId} id={statusId} />)}
        </div>
      );
    } else if(results.get('statuses') && results.get('statuses').size === 0 && !searchEnabled && !(searchTerm.startsWith('@') || searchTerm.startsWith('#') || searchTerm.includes(' '))) {
      statuses = (
        <div className='search-results__section'>
          <h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>

          <div className='search-results__info'>
            <FormattedMessage id='search_results.statuses_fts_disabled' defaultMessage='Searching toots by their content is not enabled on this Mastodon server.' />
          </div>
        </div>
      );
    }

    if (results.get('hashtags') && results.get('hashtags').size > 0) {

M app/javascript/mastodon/features/compose/containers/search_results_container.js => app/javascript/mastodon/features/compose/containers/search_results_container.js +1 -0
@@ 5,6 5,7 @@ import { fetchSuggestions, dismissSuggestion } from '../../../actions/suggestion
const mapStateToProps = state => ({
  results: state.getIn(['search', 'results']),
  suggestions: state.getIn(['suggestions', 'items']),
  searchTerm: state.getIn(['search', 'value']),
});

const mapDispatchToProps = dispatch => ({

M app/javascript/mastodon/reducers/search.js => app/javascript/mastodon/reducers/search.js +2 -1
@@ 16,6 16,7 @@ const initialState = ImmutableMap({
  submitted: false,
  hidden: false,
  results: ImmutableMap(),
  searchTerm: '',
});

export default function search(state = initialState, action) {


@@ 40,7 41,7 @@ export default function search(state = initialState, action) {
      accounts: ImmutableList(action.results.accounts.map(item => item.id)),
      statuses: ImmutableList(action.results.statuses.map(item => item.id)),
      hashtags: fromJS(action.results.hashtags),
    })).set('submitted', true);
    })).set('submitted', true).set('searchTerm', action.searchTerm);
  default:
    return state;
  }

M app/javascript/styles/mastodon/components.scss => app/javascript/styles/mastodon/components.scss +5 -0
@@ 3996,6 3996,11 @@ a.status-card.compact:hover {
  }
}

.search-results__info {
  padding: 10px;
  color: $secondary-text-color;
}

.modal-root {
  position: relative;
  transition: opacity 0.3s linear;