// import fetchJsonp from 'fetch-jsonp' import * as types from '../types' // import { hashPath } from '../util' import { post } from '../util' // import querystring from 'query-string' // urls const url = { search: (dataset, q) => process.env.API_HOST + '/api/dataset/' + dataset + '/name?q=' + encodeURIComponent(q), } export const publicUrl = { } // standard loading events const loading = (tag, offset) => ({ type: types.nameSearch.loading, tag, offset }) const loaded = (tag, data, offset = 0) => ({ type: types.nameSearch.loaded, tag, data, offset }) const error = (tag, err) => ({ type: types.nameSearch.error, tag, err }) // search UI functions export const updateOptions = opt => dispatch => { dispatch({ type: types.nameSearch.update_options, opt }) } // API functions export const search = (payload, q) => dispatch => { const tag = 'result' const fd = new FormData() fd.append('q', q) dispatch(loading(tag)) post(url.search(payload.dataset, q), fd) .then(data => { dispatch(loaded(tag, data)) }) .catch(err => dispatch(error(tag, err))) }