// Copyright (C) 2017-2020 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); const ModalDialog = require('stremio/common/ModalDialog'); const { useServices } = require('stremio/services'); const AddonDetails = require('./AddonDetails'); const useAddonDetails = require('./useAddonDetails'); const styles = require('./styles'); const AddonDetailsModal = ({ transportUrl, onCloseRequest }) => { const { core } = useServices(); const addonDetails = useAddonDetails(transportUrl); const modalButtons = React.useMemo(() => { if (addonDetails.remote_addon === null || addonDetails.remote_addon.content.type !== 'Ready') { return null; } const cancelOnClick = (event) => { if (typeof onCloseRequest === 'function') { onCloseRequest({ type: 'cancel', reactEvent: event, nativeEvent: event.nativeEvent }); } }; const installOnClick = (event) => { core.transport.dispatch({ action: 'Ctx', args: { action: 'InstallAddon', args: addonDetails.remote_addon.content.content } }); if (typeof onCloseRequest === 'function') { onCloseRequest({ type: 'install', reactEvent: event, nativeEvent: event.nativeEvent }); } }; const uninstallOnClick = (event) => { core.transport.dispatch({ action: 'Ctx', args: { action: 'UninstallAddon', args: addonDetails.remote_addon.content.content.transportUrl } }); if (typeof onCloseRequest === 'function') { onCloseRequest({ type: 'uninstall', reactEvent: event, nativeEvent: event.nativeEvent }); } }; return [ { className: styles['cancel-button'], label: 'Cancel', props: { onClick: cancelOnClick } }, addonDetails.remote_addon.content.content.installed ? { className: styles['uninstall-button'], label: 'Uninstall', props: { onClick: uninstallOnClick } } : { className: styles['install-button'], label: 'Install', props: { onClick: installOnClick } } ]; }, [addonDetails, onCloseRequest]); return ( { addonDetails.selected === null ?
Loading addon manifest
: addonDetails.remote_addon === null || addonDetails.remote_addon.content.type === 'Loading' ?
Loading addon manifest from {addonDetails.selected.transport_url}
: addonDetails.remote_addon.content.type === 'Err' ?
Failed to get addon manifest from {addonDetails.selected.transport_url}. {addonDetails.remote_addon.content.content}
: }
); }; AddonDetailsModal.propTypes = { transportUrl: PropTypes.string, onCloseRequest: PropTypes.func }; module.exports = AddonDetailsModal;