|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
import { ContextMenu, LazyImage } from '@vizality/components';
|
|
|
|
|
import { ContextMenu } from '@vizality/components';
|
|
|
|
|
import { toPlural } from '@vizality/util/string';
|
|
|
|
|
import { contextMenu } from '@vizality/webpack';
|
|
|
|
|
import React, { memo, useState } from 'react';
|
|
|
|
|
import React, { memo } from 'react';
|
|
|
|
|
import { Messages } from '@vizality/i18n';
|
|
|
|
|
|
|
|
|
|
const { closeContextMenu } = contextMenu;
|
|
|
|
@ -15,38 +15,44 @@ const { closeContextMenu } = contextMenu;
|
|
|
|
|
* @returns {React.MemoExoticComponent<function(): React.ReactElement>}
|
|
|
|
|
*/
|
|
|
|
|
export default memo(({ addonId, type }) => {
|
|
|
|
|
const [ isEnabled, setEnabled ] = useState(vizality.manager[toPlural(type)].isEnabled(addonId));
|
|
|
|
|
const [ isInstalled, setInstalled ] = useState(vizality.manager[toPlural(type)].isInstalled(addonId));
|
|
|
|
|
const isEnabled = vizality.manager[toPlural(type)].isEnabled(addonId);
|
|
|
|
|
const isInstalled = vizality.manager[toPlural(type)].isInstalled(addonId);
|
|
|
|
|
const hasSettings = vizality.manager[toPlural(type)].hasSettings(addonId);
|
|
|
|
|
const hasScreenshots = false;
|
|
|
|
|
const hasChangelog = false;
|
|
|
|
|
const hasScreenshots = vizality.manager[toPlural(type)].hasScreenshots(addonId);
|
|
|
|
|
const hasChangelog = vizality.manager[toPlural(type)].hasChangelog(addonId);
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<ContextMenu.Menu navId='vz-addon-context-menu' onClose={closeContextMenu}>
|
|
|
|
|
<ContextMenu.Item
|
|
|
|
|
id='overview'
|
|
|
|
|
label='Overview'
|
|
|
|
|
action={() => vizality.api.routes.navigateTo(`${toPlural(type)}/${addonId}`)}
|
|
|
|
|
action={() => vizality.api.routes.navigateTo(`${type}/${addonId}`)}
|
|
|
|
|
/>
|
|
|
|
|
{hasScreenshots && (
|
|
|
|
|
<ContextMenu.Item
|
|
|
|
|
id='screenshots'
|
|
|
|
|
label='Screenshots'
|
|
|
|
|
action={() => vizality.api.routes.navigateTo(`${toPlural(type)}/${addonId}/screenshots`)}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
{hasChangelog && (
|
|
|
|
|
<ContextMenu.Item
|
|
|
|
|
id='changelog'
|
|
|
|
|
label='Changelog'
|
|
|
|
|
action={() => vizality.api.routes.navigateTo(`${toPlural(type)}/${addonId}/changelog`)}
|
|
|
|
|
action={() => vizality.api.routes.navigateTo(`${type}/${addonId}/screenshots`)}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
{isInstalled && hasSettings && (
|
|
|
|
|
<ContextMenu.Item
|
|
|
|
|
id='settings'
|
|
|
|
|
label='Settings'
|
|
|
|
|
action={() => vizality.api.routes.navigateTo(`${toPlural(type)}/${addonId}/settings`)}
|
|
|
|
|
action={() => vizality.api.routes.navigateTo(`${type}/${addonId}/settings`)}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
<ContextMenu.Item
|
|
|
|
|
id='reviews'
|
|
|
|
|
label='Reviews'
|
|
|
|
|
action={() => vizality.api.routes.navigateTo(`${type}/${addonId}/reviews`)}
|
|
|
|
|
disabled
|
|
|
|
|
/>
|
|
|
|
|
{hasChangelog && (
|
|
|
|
|
<ContextMenu.Item
|
|
|
|
|
id='changelog'
|
|
|
|
|
label='Changelog'
|
|
|
|
|
action={() => vizality.api.routes.navigateTo(`${type}/${addonId}/changelog`)}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
<ContextMenu.Separator />
|
|
|
|
@ -55,19 +61,12 @@ export default memo(({ addonId, type }) => {
|
|
|
|
|
? <ContextMenu.Item
|
|
|
|
|
id='disable'
|
|
|
|
|
label='Disable'
|
|
|
|
|
color={ContextMenu.Item.Colors.DANGER}
|
|
|
|
|
action={async () => {
|
|
|
|
|
await vizality.manager[toPlural(type)].disable(addonId);
|
|
|
|
|
setEnabled(false);
|
|
|
|
|
}}
|
|
|
|
|
action={async () => vizality.manager[toPlural(type)].disable(addonId)}
|
|
|
|
|
/>
|
|
|
|
|
: <ContextMenu.Item
|
|
|
|
|
id='enable'
|
|
|
|
|
label='Enable'
|
|
|
|
|
action={async () => {
|
|
|
|
|
await vizality.manager[toPlural(type)].enable(addonId);
|
|
|
|
|
setEnabled(true);
|
|
|
|
|
}}
|
|
|
|
|
action={async () => vizality.manager[toPlural(type)].enable(addonId)}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
{isInstalled
|
|
|
|
@ -75,19 +74,13 @@ export default memo(({ addonId, type }) => {
|
|
|
|
|
id='uninstall'
|
|
|
|
|
label='Uninstall'
|
|
|
|
|
color={ContextMenu.Item.Colors.DANGER}
|
|
|
|
|
action={async () => {
|
|
|
|
|
await vizality.manager[toPlural(type)].uninstall(addonId);
|
|
|
|
|
setInstalled(false);
|
|
|
|
|
}}
|
|
|
|
|
action={async () => vizality.manager[toPlural(type)].uninstall(addonId)}
|
|
|
|
|
/>
|
|
|
|
|
: <ContextMenu.Item
|
|
|
|
|
id='install'
|
|
|
|
|
label='Install'
|
|
|
|
|
color={ContextMenu.Item.Colors.GREEN}
|
|
|
|
|
action={async () => {
|
|
|
|
|
await vizality.manager[toPlural(type)].install(addonId);
|
|
|
|
|
setInstalled(true);
|
|
|
|
|
}}
|
|
|
|
|
action={async () => vizality.manager[toPlural(type)].install(addonId)}
|
|
|
|
|
/>
|
|
|
|
|
}
|
|
|
|
|
<ContextMenu.Separator />
|
|
|
|
|