Web UI support for the new omnisearch
This commit is contained in:
parent
acfee0945c
commit
88f32708c3
4 changed files with 44 additions and 30 deletions
|
@ -11,28 +11,38 @@ const initialState = Immutable.Map({
|
|||
suggestions: []
|
||||
});
|
||||
|
||||
const normalizeSuggestions = (state, value, accounts) => {
|
||||
let newSuggestions = [
|
||||
{
|
||||
const normalizeSuggestions = (state, value, accounts, hashtags, statuses) => {
|
||||
let newSuggestions = [];
|
||||
|
||||
if (accounts.length > 0) {
|
||||
newSuggestions.push({
|
||||
title: 'account',
|
||||
items: accounts.map(item => ({
|
||||
type: 'account',
|
||||
id: item.id,
|
||||
value: item.acct
|
||||
}))
|
||||
}
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
if (value.indexOf('@') === -1 && value.indexOf(' ') === -1 || hashtags.length > 0) {
|
||||
let hashtagItems = hashtags.map(item => ({
|
||||
type: 'hashtag',
|
||||
id: item,
|
||||
value: `#${item}`
|
||||
}));
|
||||
|
||||
if (value.indexOf('@') === -1 && value.indexOf(' ') === -1 && hashtags.indexOf(value) === -1) {
|
||||
hashtagItems.unshift({
|
||||
type: 'hashtag',
|
||||
id: value,
|
||||
value: `#${value}`
|
||||
});
|
||||
}
|
||||
|
||||
if (value.indexOf('@') === -1 && value.indexOf(' ') === -1) {
|
||||
newSuggestions.push({
|
||||
title: 'hashtag',
|
||||
items: [
|
||||
{
|
||||
type: 'hashtag',
|
||||
id: value,
|
||||
value: `#${value}`
|
||||
}
|
||||
]
|
||||
items: hashtagItems
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -44,17 +54,17 @@ const normalizeSuggestions = (state, value, accounts) => {
|
|||
|
||||
export default function search(state = initialState, action) {
|
||||
switch(action.type) {
|
||||
case SEARCH_CHANGE:
|
||||
return state.set('value', action.value);
|
||||
case SEARCH_SUGGESTIONS_READY:
|
||||
return normalizeSuggestions(state, action.value, action.accounts);
|
||||
case SEARCH_RESET:
|
||||
return state.withMutations(map => {
|
||||
map.set('suggestions', []);
|
||||
map.set('value', '');
|
||||
map.set('loaded_value', '');
|
||||
});
|
||||
default:
|
||||
return state;
|
||||
case SEARCH_CHANGE:
|
||||
return state.set('value', action.value);
|
||||
case SEARCH_SUGGESTIONS_READY:
|
||||
return normalizeSuggestions(state, action.value, action.accounts, action.hashtags, action.statuses);
|
||||
case SEARCH_RESET:
|
||||
return state.withMutations(map => {
|
||||
map.set('suggestions', []);
|
||||
map.set('value', '');
|
||||
map.set('loaded_value', '');
|
||||
});
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue