mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-21 03:22:11 +00:00
AddonDetailsModal adapted to changes in core
This commit is contained in:
parent
92b15a5cbb
commit
d32fe5123a
2 changed files with 23 additions and 45 deletions
|
|
@ -12,7 +12,7 @@ const AddonDetailsModal = ({ transportUrl, onCloseRequest }) => {
|
||||||
const { core } = useServices();
|
const { core } = useServices();
|
||||||
const addonDetails = useAddonDetails(transportUrl);
|
const addonDetails = useAddonDetails(transportUrl);
|
||||||
const modalButtons = React.useMemo(() => {
|
const modalButtons = React.useMemo(() => {
|
||||||
if (addonDetails.remote_addon === null || addonDetails.remote_addon.content.type !== 'Ready') {
|
if (addonDetails.remoteAddon === null || addonDetails.remoteAddon.content.type !== 'Ready') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ const AddonDetailsModal = ({ transportUrl, onCloseRequest }) => {
|
||||||
action: 'Ctx',
|
action: 'Ctx',
|
||||||
args: {
|
args: {
|
||||||
action: 'InstallAddon',
|
action: 'InstallAddon',
|
||||||
args: addonDetails.remote_addon.content.content
|
args: addonDetails.remoteAddon.content.content
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (typeof onCloseRequest === 'function') {
|
if (typeof onCloseRequest === 'function') {
|
||||||
|
|
@ -46,7 +46,7 @@ const AddonDetailsModal = ({ transportUrl, onCloseRequest }) => {
|
||||||
action: 'Ctx',
|
action: 'Ctx',
|
||||||
args: {
|
args: {
|
||||||
action: 'UninstallAddon',
|
action: 'UninstallAddon',
|
||||||
args: addonDetails.remote_addon.content.content.transportUrl
|
args: addonDetails.remoteAddon.content.content.transportUrl
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (typeof onCloseRequest === 'function') {
|
if (typeof onCloseRequest === 'function') {
|
||||||
|
|
@ -65,7 +65,7 @@ const AddonDetailsModal = ({ transportUrl, onCloseRequest }) => {
|
||||||
onClick: cancelOnClick
|
onClick: cancelOnClick
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
addonDetails.remote_addon.content.content.installed ?
|
addonDetails.localAddon !== null ?
|
||||||
{
|
{
|
||||||
className: styles['uninstall-button'],
|
className: styles['uninstall-button'],
|
||||||
label: 'Uninstall',
|
label: 'Uninstall',
|
||||||
|
|
@ -92,27 +92,27 @@ const AddonDetailsModal = ({ transportUrl, onCloseRequest }) => {
|
||||||
Loading addon manifest
|
Loading addon manifest
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
addonDetails.remote_addon === null || addonDetails.remote_addon.content.type === 'Loading' ?
|
addonDetails.remoteAddon === null || addonDetails.remoteAddon.content.type === 'Loading' ?
|
||||||
<div className={styles['addon-details-message-container']}>
|
<div className={styles['addon-details-message-container']}>
|
||||||
Loading addon manifest from {addonDetails.selected.transport_url}
|
Loading addon manifest from {addonDetails.selected.transportUrl}
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
addonDetails.remote_addon.content.type === 'Err' ?
|
addonDetails.remoteAddon.content.type === 'Err' ?
|
||||||
<div className={styles['addon-details-message-container']}>
|
<div className={styles['addon-details-message-container']}>
|
||||||
Failed to get addon manifest from {addonDetails.selected.transport_url}.
|
Failed to get addon manifest from {addonDetails.selected.transportUrl}
|
||||||
{addonDetails.remote_addon.content.content}
|
<div>{addonDetails.remoteAddon.content.content.message}</div>
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
<AddonDetails
|
<AddonDetails
|
||||||
className={styles['addon-details-container']}
|
className={styles['addon-details-container']}
|
||||||
id={addonDetails.remote_addon.content.content.manifest.id}
|
id={addonDetails.remoteAddon.content.content.manifest.id}
|
||||||
name={addonDetails.remote_addon.content.content.manifest.name}
|
name={addonDetails.remoteAddon.content.content.manifest.name}
|
||||||
version={addonDetails.remote_addon.content.content.manifest.version}
|
version={addonDetails.remoteAddon.content.content.manifest.version}
|
||||||
logo={addonDetails.remote_addon.content.content.manifest.logo}
|
logo={addonDetails.remoteAddon.content.content.manifest.logo}
|
||||||
description={addonDetails.remote_addon.content.content.manifest.description}
|
description={addonDetails.remoteAddon.content.content.manifest.description}
|
||||||
types={addonDetails.remote_addon.content.content.manifest.types}
|
types={addonDetails.remoteAddon.content.content.manifest.types}
|
||||||
transportUrl={addonDetails.remote_addon.content.content.transportUrl}
|
transportUrl={addonDetails.remoteAddon.content.content.transportUrl}
|
||||||
official={addonDetails.remote_addon.content.content.flags.official}
|
official={addonDetails.remoteAddon.content.content.flags.official}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
</ModalDialog>
|
</ModalDialog>
|
||||||
|
|
|
||||||
|
|
@ -3,38 +3,21 @@
|
||||||
const React = require('react');
|
const React = require('react');
|
||||||
const useModelState = require('stremio/common/useModelState');
|
const useModelState = require('stremio/common/useModelState');
|
||||||
|
|
||||||
const initAddonDetailsState = () => ({
|
const init = () => ({
|
||||||
selected: null,
|
selected: null,
|
||||||
remote_addon: null
|
localAddon: null,
|
||||||
|
remoteAddon: null
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapAddonDetailsStateWithCtx = (addonDetails, ctx) => {
|
|
||||||
const selected = addonDetails.selected;
|
|
||||||
const remote_addon = addonDetails.remote_addon !== null && addonDetails.remote_addon.content.type === 'Ready' ?
|
|
||||||
{
|
|
||||||
transport_url: addonDetails.remote_addon.transport_url,
|
|
||||||
content: {
|
|
||||||
type: addonDetails.remote_addon.content.type,
|
|
||||||
content: {
|
|
||||||
...addonDetails.remote_addon.content.content,
|
|
||||||
installed: ctx.profile.addons.some(({ transportUrl }) => transportUrl === addonDetails.remote_addon.transport_url),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
:
|
|
||||||
addonDetails.remote_addon;
|
|
||||||
return { selected, remote_addon };
|
|
||||||
};
|
|
||||||
|
|
||||||
const useAddonDetails = (transportUrl) => {
|
const useAddonDetails = (transportUrl) => {
|
||||||
const loadAddonDetailsAction = React.useMemo(() => {
|
const action = React.useMemo(() => {
|
||||||
if (typeof transportUrl === 'string') {
|
if (typeof transportUrl === 'string') {
|
||||||
return {
|
return {
|
||||||
action: 'Load',
|
action: 'Load',
|
||||||
args: {
|
args: {
|
||||||
model: 'AddonDetails',
|
model: 'AddonDetails',
|
||||||
args: {
|
args: {
|
||||||
transport_url: transportUrl
|
transportUrl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -44,12 +27,7 @@ const useAddonDetails = (transportUrl) => {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}, [transportUrl]);
|
}, [transportUrl]);
|
||||||
return useModelState({
|
return useModelState({ model: 'addon_details', action, init });
|
||||||
model: 'addon_details',
|
|
||||||
action: loadAddonDetailsAction,
|
|
||||||
mapWithCtx: mapAddonDetailsStateWithCtx,
|
|
||||||
init: initAddonDetailsState,
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = useAddonDetails;
|
module.exports = useAddonDetails;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue