mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-05-16 00:42:37 +00:00
67 lines
2.2 KiB
JavaScript
67 lines
2.2 KiB
JavaScript
// Copyright (C) 2017-2023 Smart code 203358507
|
|
|
|
const React = require('react');
|
|
const { useModelState } = require('stremio/common');
|
|
const { useServices } = require('stremio/services');
|
|
|
|
const useSearch = (queryParams) => {
|
|
const { core } = useServices();
|
|
// TODO: refactor this to be in stremio-core-web
|
|
// React.useEffect(() => {
|
|
// let timerId = setTimeout(emitSearchEvent, 500);
|
|
// function emitSearchEvent() {
|
|
// timerId = null;
|
|
// const state = core.transport.getState('search');
|
|
// if (state.selected !== null) {
|
|
// const [, query] = state.selected.extra.find(([name]) => name === 'search');
|
|
// const responses = state.catalogs.filter((catalog) => catalog.content?.type === 'Ready');
|
|
// core.transport.analytics({
|
|
// event: 'Search',
|
|
// args: {
|
|
// query,
|
|
// responsesCount: responses.length
|
|
// }
|
|
// });
|
|
// }
|
|
// }
|
|
// return () => {
|
|
// if (timerId !== null) {
|
|
// clearTimeout(timerId);
|
|
// emitSearchEvent();
|
|
// }
|
|
// };
|
|
// }, [queryParams.get('search')]);
|
|
const action = React.useMemo(() => {
|
|
const query = queryParams.get('search') ?? queryParams.get('query');
|
|
if (query?.length > 0) {
|
|
return {
|
|
action: 'Load',
|
|
args: {
|
|
model: 'CatalogsWithExtra',
|
|
args: {
|
|
extra: [
|
|
['search', query]
|
|
]
|
|
}
|
|
}
|
|
};
|
|
} else {
|
|
return {
|
|
action: 'Unload'
|
|
};
|
|
}
|
|
}, [queryParams]);
|
|
const loadRange = React.useCallback((range) => {
|
|
core.transport.dispatch({
|
|
action: 'CatalogsWithExtra',
|
|
args: {
|
|
action: 'LoadRange',
|
|
args: range
|
|
}
|
|
}, 'search');
|
|
}, []);
|
|
const search = useModelState({ model: 'search', action });
|
|
return [search, loadRange];
|
|
};
|
|
|
|
module.exports = useSearch;
|