mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-22 08:32:04 +00:00
49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
const React = require('react');
|
|
|
|
const mapSelectableInputs = (addons, navigate) => {
|
|
const catalogSelect = {
|
|
title: 'Select catalog',
|
|
options: addons.selectable.catalogs
|
|
.map(({ name, request }) => ({
|
|
value: JSON.stringify(request),
|
|
label: name
|
|
})),
|
|
selected: addons.selectable.catalogs
|
|
.filter(({ request }) => {
|
|
return addons.catalog_resource !== null &&
|
|
addons.catalog_resource.request.base === request.base &&
|
|
addons.catalog_resource.request.path.id === request.path.id;
|
|
})
|
|
.map(({ request }) => JSON.stringify(request)),
|
|
onSelect: (event) => {
|
|
navigate({ request: JSON.parse(event.value) });
|
|
}
|
|
};
|
|
const typeSelect = {
|
|
title: 'Select type',
|
|
options: addons.selectable.types
|
|
.map(({ name, request }) => ({
|
|
value: JSON.stringify(request),
|
|
label: name
|
|
})),
|
|
selected: addons.selectable.types
|
|
.filter(({ request }) => {
|
|
return addons.catalog_resource !== null &&
|
|
addons.catalog_resource.request.path.type_name === request.path.type_name;
|
|
})
|
|
.map(({ request }) => JSON.stringify(request)),
|
|
onSelect: (event) => {
|
|
navigate({ request: JSON.parse(event.value) });
|
|
}
|
|
};
|
|
return [catalogSelect, typeSelect];
|
|
};
|
|
|
|
const useSelectableInputs = (addons, navigate) => {
|
|
const selectableInputs = React.useMemo(() => {
|
|
return mapSelectableInputs(addons, navigate);
|
|
}, [addons, navigate]);
|
|
return selectableInputs;
|
|
};
|
|
|
|
module.exports = useSelectableInputs;
|