diff --git a/src/component/relatedContent/index.js b/src/component/relatedContent/index.js index bed3f06..7dd415c 100644 --- a/src/component/relatedContent/index.js +++ b/src/component/relatedContent/index.js @@ -6,7 +6,6 @@ import { makeSelectTitleForUri, selectIsSearching, } from 'lbry-redux'; -import { doNativeSearch } from 'redux/actions/native'; import RelatedContent from './view'; const select = (state, props) => ({ @@ -17,7 +16,6 @@ const select = (state, props) => ({ }); const perform = dispatch => ({ - search: query => dispatch(doNativeSearch(query, 20, undefined, true)), resolveUris: uris => dispatch(doResolveUris(uris)), }); diff --git a/src/page/file/index.js b/src/page/file/index.js index 4d0fe35..73846ac 100644 --- a/src/page/file/index.js +++ b/src/page/file/index.js @@ -8,6 +8,7 @@ import { doPurchaseUri, doDeletePurchasedUri, doResolveUri, + doSearch, doSendTip, doToast, makeSelectIsUriResolving, @@ -44,7 +45,6 @@ import { doStopDownloadingFile, } from 'redux/actions/file'; import { doPopDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer'; -import { doNativeSearch } from 'redux/actions/native'; import { selectDrawerStack } from 'redux/selectors/drawer'; import FilePage from './view'; @@ -94,7 +94,7 @@ const perform = dispatch => ({ purchaseUri: (uri, costInfo, saveFile) => dispatch(doPurchaseUri(uri, costInfo, saveFile)), deletePurchasedUri: uri => dispatch(doDeletePurchasedUri(uri)), resolveUri: uri => dispatch(doResolveUri(uri)), - searchRecommended: query => dispatch(doNativeSearch(query, 20, undefined, true)), + searchRecommended: query => dispatch(doSearch(query, 20, undefined, true)), sendTip: (amount, claimId, isSupport, successCallback, errorCallback) => dispatch(doSendTip(amount, claimId, isSupport, successCallback, errorCallback)), setPlayerVisible: () => dispatch(doSetPlayerVisible(true)), diff --git a/src/redux/actions/native.js b/src/redux/actions/native.js deleted file mode 100644 index 2779972..0000000 --- a/src/redux/actions/native.js +++ /dev/null @@ -1,95 +0,0 @@ -// @flow -import { NativeModules } from 'react-native'; -import { - ACTIONS, - batchActions, - buildURI, - doResolveUri, - doUpdateSearchQuery, - makeSelectSearchUris, - selectSuggestions, - makeSelectQueryWithOptions, - selectSearchValue, -} from 'lbry-redux'; - -let CONNECTION_STRING = 'https://lighthouse.lbry.com/'; - -const handleNativeFetchResponse = str => { - const json = JSON.parse(str); - if (json.error) { - return Promise.reject(new Error(json.error)); - } - - return Promise.resolve(json); -}; - -// Use a native asyncTask to call the lighthouse api -export const doNativeSearch = ( - rawQuery: string, // pass in a query if you don't want to search for what's in the search bar - size: ?number, // only pass in if you don't want to use the users setting (ex: related content) - from: ?number, - isBackgroundSearch: boolean = false -) => (dispatch: Dispatch, getState: GetState) => { - const query = rawQuery.replace(/^lbry:\/\//i, '').replace(/\//, ' '); - - if (!query) { - dispatch({ - type: ACTIONS.SEARCH_FAIL, - }); - return; - } - - const state = getState(); - const queryWithOptions = makeSelectQueryWithOptions(query, size, from, isBackgroundSearch)(state); - - // If we have already searched for something, we don't need to do anything - const urisForQuery = makeSelectSearchUris(queryWithOptions)(state); - if (urisForQuery && !!urisForQuery.length) { - return; - } - - dispatch({ - type: ACTIONS.SEARCH_START, - }); - - // If the user is on the file page with a pre-populated uri and they select - // the search option without typing anything, searchQuery will be empty - // We need to populate it so the input is filled on the search page - // isBackgroundSearch means the search is happening in the background, don't update the search query - if (!state.search.searchQuery && !isBackgroundSearch) { - dispatch(doUpdateSearchQuery(query)); - } - - const url = `${CONNECTION_STRING}search?${queryWithOptions}`; - NativeModules.Requests.get(url) - .then(handleNativeFetchResponse) - .then((data: Array<{ name: String, claimId: string }>) => { - const uris = []; - const actions = []; - - data.forEach(result => { - if (result.name) { - const uri = buildURI({ - claimName: result.name, - claimId: result.claimId, - }); - actions.push(doResolveUri(uri)); - uris.push(uri); - } - }); - - actions.push({ - type: ACTIONS.SEARCH_SUCCESS, - data: { - query: queryWithOptions, - uris, - }, - }); - dispatch(batchActions(...actions)); - }) - .catch(e => { - dispatch({ - type: ACTIONS.SEARCH_FAIL, - }); - }); -};