You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.8 KiB
82 lines
1.8 KiB
import api from '../api'; |
|
import { fetchRelationships } from './accounts'; |
|
import { importFetchedAccounts, importFetchedStatuses } from './importer'; |
|
|
|
export const SEARCH_CHANGE = 'SEARCH_CHANGE'; |
|
export const SEARCH_CLEAR = 'SEARCH_CLEAR'; |
|
export const SEARCH_SHOW = 'SEARCH_SHOW'; |
|
|
|
export const SEARCH_FETCH_REQUEST = 'SEARCH_FETCH_REQUEST'; |
|
export const SEARCH_FETCH_SUCCESS = 'SEARCH_FETCH_SUCCESS'; |
|
export const SEARCH_FETCH_FAIL = 'SEARCH_FETCH_FAIL'; |
|
|
|
export function changeSearch(value) { |
|
return { |
|
type: SEARCH_CHANGE, |
|
value, |
|
}; |
|
}; |
|
|
|
export function clearSearch() { |
|
return { |
|
type: SEARCH_CLEAR, |
|
}; |
|
}; |
|
|
|
export function submitSearch() { |
|
return (dispatch, getState) => { |
|
const value = getState().getIn(['search', 'value']); |
|
|
|
if (value.length === 0) { |
|
return; |
|
} |
|
|
|
dispatch(fetchSearchRequest()); |
|
|
|
api(getState).get('/api/v1/search', { |
|
params: { |
|
q: value, |
|
resolve: true, |
|
}, |
|
}).then(response => { |
|
if (response.data.accounts) { |
|
dispatch(importFetchedAccounts(response.data.accounts)); |
|
} |
|
|
|
if (response.data.statuses) { |
|
dispatch(importFetchedStatuses(response.data.statuses)); |
|
} |
|
|
|
dispatch(fetchSearchSuccess(response.data)); |
|
dispatch(fetchRelationships(response.data.accounts.map(item => item.id))); |
|
}).catch(error => { |
|
dispatch(fetchSearchFail(error)); |
|
}); |
|
}; |
|
}; |
|
|
|
export function fetchSearchRequest() { |
|
return { |
|
type: SEARCH_FETCH_REQUEST, |
|
}; |
|
}; |
|
|
|
export function fetchSearchSuccess(results) { |
|
return { |
|
type: SEARCH_FETCH_SUCCESS, |
|
results, |
|
}; |
|
}; |
|
|
|
export function fetchSearchFail(error) { |
|
return { |
|
type: SEARCH_FETCH_FAIL, |
|
error, |
|
}; |
|
}; |
|
|
|
export function showSearch() { |
|
return { |
|
type: SEARCH_SHOW, |
|
}; |
|
};
|
|
|