dfc631cc37
Completely remove it for now to make the commit deltas clearer. We'll replace it with the new method at the end.
89 lines
2.6 KiB
JavaScript
89 lines
2.6 KiB
JavaScript
// @flow
|
|
|
|
import { isNameValid, isURIValid, normalizeURI, parseURI } from 'lbry-redux';
|
|
import { URL as SITE_URL, URL_LOCAL, URL_DEV } from 'config';
|
|
|
|
export function createNormalizedSearchKey(query: string) {
|
|
const FROM = '&from=';
|
|
|
|
// Ignore the "page" (`from`) because we don't care what the last page
|
|
// searched was, we want everything.
|
|
let normalizedQuery = query;
|
|
if (normalizedQuery.includes(FROM)) {
|
|
const a = normalizedQuery.indexOf(FROM);
|
|
const b = normalizedQuery.indexOf('&', a + FROM.length);
|
|
if (b > a) {
|
|
normalizedQuery = normalizedQuery.substring(0, a) + normalizedQuery.substring(b);
|
|
} else {
|
|
normalizedQuery = normalizedQuery.substring(0, a);
|
|
}
|
|
}
|
|
return normalizedQuery;
|
|
}
|
|
|
|
/**
|
|
* getUriForSearchTerm
|
|
* @param term
|
|
* @returns {string[]|*[]|(string|string)[]}
|
|
*/
|
|
export function getUriForSearchTerm(term: string) {
|
|
const WEB_DEV_PREFIX = `${URL_DEV}/`;
|
|
const WEB_LOCAL_PREFIX = `${URL_LOCAL}/`;
|
|
const WEB_PROD_PREFIX = `${SITE_URL}/`;
|
|
const ODYSEE_PREFIX = `https://odysee.com/`;
|
|
const includesLbryTvProd = term.includes(WEB_PROD_PREFIX);
|
|
const includesOdysee = term.includes(ODYSEE_PREFIX);
|
|
const includesLbryTvLocal = term.includes(WEB_LOCAL_PREFIX);
|
|
const includesLbryTvDev = term.includes(WEB_DEV_PREFIX);
|
|
const wasCopiedFromWeb = includesLbryTvDev || includesLbryTvLocal || includesLbryTvProd || includesOdysee;
|
|
const isLbryUrl = term.startsWith('lbry://') && term !== 'lbry://';
|
|
const error = '';
|
|
|
|
const addLbryIfNot = (term) => {
|
|
return term.startsWith('lbry://') ? term : `lbry://${term}`;
|
|
};
|
|
|
|
if (wasCopiedFromWeb) {
|
|
let prefix = WEB_PROD_PREFIX;
|
|
if (includesLbryTvLocal) prefix = WEB_LOCAL_PREFIX;
|
|
if (includesLbryTvDev) prefix = WEB_DEV_PREFIX;
|
|
if (includesOdysee) prefix = ODYSEE_PREFIX;
|
|
|
|
let query = (term && term.slice(prefix.length).replace(/:/g, '#')) || '';
|
|
try {
|
|
const lbryUrl = `lbry://${query}`;
|
|
parseURI(lbryUrl);
|
|
return [lbryUrl, null];
|
|
} catch (e) {
|
|
return [query, 'error'];
|
|
}
|
|
}
|
|
|
|
if (!isLbryUrl) {
|
|
if (term.startsWith('@')) {
|
|
if (isNameValid(term.slice(1))) {
|
|
return [term, null];
|
|
} else {
|
|
return [term, error];
|
|
}
|
|
}
|
|
return [addLbryIfNot(term), null];
|
|
} else {
|
|
try {
|
|
const isValid = isURIValid(term);
|
|
if (isValid) {
|
|
let uri;
|
|
try {
|
|
uri = normalizeURI(term);
|
|
} catch (e) {
|
|
return [term, null];
|
|
}
|
|
return [uri, null];
|
|
} else {
|
|
return [term, null];
|
|
}
|
|
} catch (e) {
|
|
return [term, 'error'];
|
|
}
|
|
}
|
|
}
|