1
0
Fork 0
mirror of https://github.com/pawelmalak/flame.git synced 2025-07-24 05:39:35 +02:00

Added option to set secondary search provider

This commit is contained in:
Paweł Malak 2022-03-25 14:28:40 +01:00
parent 2c0491a5b0
commit 16121ff547
9 changed files with 79 additions and 25 deletions

View file

@ -1,5 +1,5 @@
import { queries } from './searchQueries.json';
import { Query, SearchResult } from '../interfaces';
import { SearchResult } from '../interfaces';
import { store } from '../store/store';
import { isUrlOrIp } from '.';
@ -8,8 +8,13 @@ export const searchParser = (searchQuery: string): SearchResult => {
isLocal: false,
isURL: false,
sameTab: false,
search: '',
query: {
encodedURL: '',
primarySearch: {
name: '',
prefix: '',
template: '',
},
secondarySearch: {
name: '',
prefix: '',
template: '',
@ -25,20 +30,26 @@ export const searchParser = (searchQuery: string): SearchResult => {
// Match prefix and query
const splitQuery = searchQuery.match(/^\/([a-z]+)[ ](.+)$/i);
// Extract prefix
const prefix = splitQuery ? splitQuery[1] : config.defaultSearchProvider;
const search = splitQuery
// Encode url
const encodedURL = splitQuery
? encodeURIComponent(splitQuery[2])
: encodeURIComponent(searchQuery);
const query = [...queries, ...customQueries].find(
(q: Query) => q.prefix === prefix
);
// Find primary search engine template
const findProvider = (prefix: string) => {
return [...queries, ...customQueries].find((q) => q.prefix === prefix);
};
// If search provider was found
if (query) {
result.query = query;
result.search = search;
const primarySearch = findProvider(prefix);
const secondarySearch = findProvider(config.secondarySearchProvider);
// If search providers were found
if (primarySearch) {
result.primarySearch = primarySearch;
result.encodedURL = encodedURL;
if (prefix === 'l') {
result.isLocal = true;
@ -46,6 +57,10 @@ export const searchParser = (searchQuery: string): SearchResult => {
result.sameTab = config.searchSameTab;
}
if (secondarySearch) {
result.secondarySearch = secondarySearch;
}
return result;
}