From c49f6290eb9c93720bd5407f4320bb0fd6c96ed9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2016 18:13:05 +0100 Subject: Basic username autocomplete for text area --- .../javascripts/components/actions/compose.jsx | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'app/assets/javascripts/components/actions') diff --git a/app/assets/javascripts/components/actions/compose.jsx b/app/assets/javascripts/components/actions/compose.jsx index 1bf95eec0..e27b606ee 100644 --- a/app/assets/javascripts/components/actions/compose.jsx +++ b/app/assets/javascripts/components/actions/compose.jsx @@ -13,6 +13,9 @@ export const COMPOSE_UPLOAD_FAIL = 'COMPOSE_UPLOAD_FAIL'; export const COMPOSE_UPLOAD_PROGRESS = 'COMPOSE_UPLOAD_PROGRESS'; export const COMPOSE_UPLOAD_UNDO = 'COMPOSE_UPLOAD_UNDO'; +export const COMPOSE_SUGGESTIONS_CLEAR = 'COMPOSE_SUGGESTIONS_CLEAR'; +export const COMPOSE_SUGGESTIONS_READY = 'COMPOSE_SUGGESTIONS_READY'; + export function changeCompose(text) { return { type: COMPOSE_CHANGE, @@ -129,3 +132,27 @@ export function undoUploadCompose(media_id) { media_id: media_id }; }; + +export function clearComposeSuggestions() { + return { + type: COMPOSE_SUGGESTIONS_CLEAR + }; +}; + +export function fetchComposeSuggestions(token) { + return (dispatch, getState) => { + const loadedCandidates = getState().get('accounts').filter(item => item.get('acct').toLowerCase().slice(0, token.length) === token).map(item => ({ + label: item.get('acct'), + completion: item.get('acct').slice(0, token.length) + })).toList().toJS(); + + dispatch(readyComposeSuggestions(loadedCandidates)); + }; +}; + +export function readyComposeSuggestions(accounts) { + return { + type: COMPOSE_SUGGESTIONS_READY, + accounts + }; +}; -- cgit