diff --git a/src/routes/Addons/Addons.js b/src/routes/Addons/Addons.js index 07064ae48..340219b95 100644 --- a/src/routes/Addons/Addons.js +++ b/src/routes/Addons/Addons.js @@ -3,7 +3,7 @@ const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useRouteFocused } = require('stremio-router'); const Icon = require('stremio-icons/dom'); -const { AddonDetailsModal, Button, Multiselect, NavBar, TextInput, SharePrompt, ModalDialog, useBinaryState } = require('stremio/common'); +const { AddonDetailsModal, Button, Image, Multiselect, NavBar, TextInput, SharePrompt, ModalDialog, useBinaryState } = require('stremio/common'); const Addon = require('./Addon'); const useAddons = require('./useAddons'); const useSelectableInputs = require('./useSelectableInputs'); @@ -65,12 +65,17 @@ const Addons = ({ urlParams, queryParams }) => { const searchInputOnChange = React.useCallback((event) => { setSearch(event.currentTarget.value); }, []); - const [sharedTransportUrl, setSharedTransportUrl] = React.useState(null); - const clearSharedTransportUrl = React.useCallback(() => { - setSharedTransportUrl(null); + const [sharedAddon, setSharedAddon] = React.useState(null); + const renderLogoFallback = React.useMemo(() => () => { + return ( + + ); + }, []); + const clearSharedAddon = React.useCallback(() => { + setSharedAddon(null); }, []); const onAddonShare = React.useCallback((event) => { - setSharedTransportUrl(event.dataset.transportUrl); + setSharedAddon(event.dataset); }, []); const onAddonToggle = React.useCallback((event) => { navigate({ detailsTransportUrl: event.dataset.transportUrl }); @@ -81,7 +86,7 @@ const Addons = ({ urlParams, queryParams }) => { React.useLayoutEffect(() => { closeAddAddonModal(); setSearch(''); - clearSharedTransportUrl(); + clearSharedAddon(); }, [urlParams, queryParams]); return (
@@ -167,7 +172,7 @@ const Addons = ({ urlParams, queryParams }) => { installed={addon.installed} onToggle={onAddonToggle} onShare={onAddonShare} - dataset={{ transportUrl: addon.transportUrl }} + dataset={{ id: addon.manifest.id, name: addon.manifest.name, version: addon.manifest.version, logo: addon.manifest.logo, transportUrl: addon.transportUrl }} /> )) } @@ -181,11 +186,12 @@ const Addons = ({ urlParams, queryParams }) => { title={'Add addon'} buttons={addAddonModalButtons} onCloseRequest={closeAddAddonModal}> +
You can add an addon via an external link, which will appear under Installed addons.
@@ -193,14 +199,31 @@ const Addons = ({ urlParams, queryParams }) => { null } { - typeof sharedTransportUrl === 'string' ? + sharedAddon !== null && typeof sharedAddon.transportUrl === 'string' ? + title={'Share Addon'} + onCloseRequest={clearSharedAddon}> +
+ {' +
+ {typeof sharedAddon.name === 'string' && sharedAddon.name.length > 0 ? sharedAddon.name : sharedAddon.id} + { + typeof sharedAddon.version === 'string' && sharedAddon.version.length > 0 ? + v. {sharedAddon.version} + : + null + } +
+
: