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:
parent
2c0491a5b0
commit
16121ff547
9 changed files with 79 additions and 25 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue