// Copyright (C) 2017-2022 Smart code 203358507 const React = require('react'); const { t } = require('i18next'); const { translateOption } = require('stremio/common'); const mapSelectableInputs = (installedAddons, remoteAddons) => { const catalogSelect = { title: t('SELECT_CATALOG'), options: remoteAddons.selectable.catalogs .concat(installedAddons.selectable.catalogs) .map(({ name, deepLinks }) => ({ value: deepLinks.addons, label: translateOption(name, 'ADDON_'), title: translateOption(name, 'ADDON_'), })), selected: remoteAddons.selectable.catalogs .concat(installedAddons.selectable.catalogs) .filter(({ selected }) => selected) .map(({ deepLinks }) => deepLinks.addons), renderLabelText: remoteAddons.selected !== null ? () => { const selectableCatalog = remoteAddons.selectable.catalogs .find(({ id }) => id === remoteAddons.selected.request.path.id); return selectableCatalog ? translateOption(selectableCatalog.name, 'ADDON_') : remoteAddons.selected.request.path.id; } : null, onSelect: (event) => { window.location = event.value; } }; const typeSelect = { title: t('SELECT_TYPE'), options: installedAddons.selected !== null ? installedAddons.selectable.types.map(({ type, deepLinks }) => ({ value: deepLinks.addons, label: type !== null ? translateOption(type, 'TYPE_') : t('TYPE_ALL') })) : remoteAddons.selectable.types.map(({ type, deepLinks }) => ({ value: deepLinks.addons, label: translateOption(type, 'TYPE_') })), selected: installedAddons.selected !== null ? installedAddons.selectable.types .filter(({ selected }) => selected) .map(({ deepLinks }) => deepLinks.addons) : remoteAddons.selectable.types .filter(({ selected }) => selected) .map(({ deepLinks }) => deepLinks.addons), renderLabelText: () => { return installedAddons.selected !== null ? installedAddons.selected.request.type === null ? t('TYPE_ALL') : translateOption(installedAddons.selected.request.type, 'TYPE_') : remoteAddons.selected !== null ? translateOption(remoteAddons.selected.request.path.type, 'TYPE_') : typeSelect.title; }, onSelect: (event) => { window.location = event.value; } }; return [catalogSelect, typeSelect]; }; const useSelectableInputs = (installedAddons, remoteAddons) => { const selectableInputs = React.useMemo(() => { return mapSelectableInputs(installedAddons, remoteAddons); }, [installedAddons, remoteAddons]); return selectableInputs; }; module.exports = useSelectableInputs;