]> cat aescling's git repositories - mastodon.git/commitdiff
TURBO shortcode search
authorOndřej Hruška <ondra@ondrovo.com>
Wed, 20 Sep 2017 19:57:33 +0000 (21:57 +0200)
committerOndřej Hruška <ondra@ondrovo.com>
Wed, 20 Sep 2017 19:57:33 +0000 (21:57 +0200)
app/javascript/mastodon/components/autosuggest_textarea.js
app/javascript/mastodon/features/compose/components/compose_form.js

index d73491ec067aef9c6467c99b6419a2903be8c0ea..e94900c828bd61392858c1bd16fd24f825ccf06a 100644 (file)
@@ -43,6 +43,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
     onSuggestionSelected: PropTypes.func.isRequired,
     onSuggestionsClearRequested: PropTypes.func.isRequired,
     onSuggestionsFetchRequested: PropTypes.func.isRequired,
+    onLocalSuggestionsFetchRequested: PropTypes.func.isRequired,
     onChange: PropTypes.func.isRequired,
     onKeyUp: PropTypes.func,
     onKeyDown: PropTypes.func,
@@ -66,7 +67,13 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
 
     if (token !== null && this.state.lastToken !== token) {
       this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart });
-      this.props.onSuggestionsFetchRequested(token);
+      if (token[0] === ':') {
+        // faster debounce for shortcodes.
+        // hashtags have long debounce because they're fetched from server.
+        this.props.onLocalSuggestionsFetchRequested(token);
+      } else {
+        this.props.onSuggestionsFetchRequested(token);
+      }
     } else if (token === null) {
       this.setState({ lastToken: null });
       this.props.onSuggestionsClearRequested();
index 000e414feff24893c3c66e3610280ddc8a8460ea..f6b5cf0be5843d14328d8b063d1226b7ce21444f 100644 (file)
@@ -90,6 +90,10 @@ export default class ComposeForm extends ImmutablePureComponent {
     this.props.onFetchSuggestions(token);
   }, 500, { trailing: true })
 
+  onLocalSuggestionsFetchRequested = debounce((token) => {
+    this.props.onFetchSuggestions(token);
+  }, 100, { trailing: true })
+
   onSuggestionSelected = (tokenStart, token, value) => {
     this._restoreCaret = null;
     this.props.onSuggestionSelected(tokenStart, token, value);
@@ -186,6 +190,7 @@ export default class ComposeForm extends ImmutablePureComponent {
             suggestions={this.props.suggestions}
             onKeyDown={this.handleKeyDown}
             onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
+            onLocalSuggestionsFetchRequested={this.onLocalSuggestionsFetchRequested}
             onSuggestionsClearRequested={this.onSuggestionsClearRequested}
             onSuggestionSelected={this.onSuggestionSelected}
             onPaste={onPaste}
This page took 0.026093 seconds and 3 git commands to generate.