stremio-web/src/routes/Addons/useSelectableInputs.js
2020-02-05 13:46:07 +02:00

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;