diff --git a/src/routes/Addons/Addons.js b/src/routes/Addons/Addons.js index 91bcbd27f..451101cbe 100644 --- a/src/routes/Addons/Addons.js +++ b/src/routes/Addons/Addons.js @@ -6,7 +6,7 @@ const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); const { default: Icon } = require('@stremio/stremio-icons/react'); const { usePlatform, useBinaryState, withCoreSuspender } = require('stremio/common'); -const { AddonDetailsModal, Button, Image, MainNavBars, Multiselect, ModalDialog, SearchBar, SharePrompt, TextInput } = require('stremio/components'); +const { AddonDetailsModal, Button, Image, MainNavBars, ModalDialog, SearchBar, SharePrompt, TextInput, MultiselectMenu } = require('stremio/components'); const { useServices } = require('stremio/services'); const Addon = require('./Addon'); const useInstalledAddons = require('./useInstalledAddons'); @@ -107,7 +107,7 @@ const Addons = ({ urlParams, queryParams }) => {
{selectInputs.map((selectInput, index) => ( - { filtersModalOpen ? {selectInputs.map((selectInput, index) => ( - { + const selectedCatalog = remoteAddons.selectable.catalogs.concat(installedAddons.selectable.catalogs).find(({ selected }) => selected); const catalogSelect = { - title: t.string('SELECT_CATALOG'), options: remoteAddons.selectable.catalogs .concat(installedAddons.selectable.catalogs) .map(({ name, deepLinks }) => ({ @@ -13,24 +13,27 @@ const mapSelectableInputs = (installedAddons, remoteAddons, t) => { label: t.stringWithPrefix(name, 'ADDON_'), title: t.stringWithPrefix(name, 'ADDON_'), })), - selected: remoteAddons.selectable.catalogs - .concat(installedAddons.selectable.catalogs) - .filter(({ selected }) => selected) - .map(({ deepLinks }) => deepLinks.addons), - renderLabelText: remoteAddons.selected !== null ? + selectedOption: selectedCatalog + ? { + label: t.stringWithPrefix(selectedCatalog.name, 'ADDON_'), + value: selectedCatalog.deepLinks.addons, + } + : undefined, + title: remoteAddons.selected !== null ? () => { const selectableCatalog = remoteAddons.selectable.catalogs .find(({ id }) => id === remoteAddons.selected.request.path.id); return selectableCatalog ? t.stringWithPrefix(selectableCatalog.name, 'ADDON_') : remoteAddons.selected.request.path.id; } - : - null, - onSelect: (event) => { - window.location = event.value; + : null, + onSelect: (value) => { + window.location = value; } }; + const selectedType = installedAddons.selected !== null + ? installedAddons.selectable.types.find(({ selected }) => selected) + : remoteAddons.selectable.types.find(({ selected }) => selected); const typeSelect = { - title: t.string('SELECT_TYPE'), options: installedAddons.selected !== null ? installedAddons.selectable.types.map(({ type, deepLinks }) => ({ value: deepLinks.addons, @@ -41,15 +44,13 @@ const mapSelectableInputs = (installedAddons, remoteAddons, t) => { value: deepLinks.addons, label: t.stringWithPrefix(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: () => { + selectedOption: selectedType + ? { + label: selectedType.type !== null ? t.stringWithPrefix(selectedType.type, 'TYPE_') : t.string('TYPE_ALL'), + value: selectedType.deepLinks.addons + } + : undefined, + title: () => { return installedAddons.selected !== null ? installedAddons.selected.request.type === null ? t.string('TYPE_ALL') @@ -61,8 +62,8 @@ const mapSelectableInputs = (installedAddons, remoteAddons, t) => { : typeSelect.title; }, - onSelect: (event) => { - window.location = event.value; + onSelect: (value) => { + window.location = value; } }; return [catalogSelect, typeSelect];