import { useSelect } from '@wordpress/data';
import { __ } from '@wordpress/i18n';
import React from 'react';
import { useLocation } from 'react-router-dom';
import { PLUGINS } from '../constants';
import usePluginInstallActivate from '../hook/usePluginInstallActivate';
import { COLORMAG_DASHBOARD_STORE } from '../store';
import { colormagLocalized } from '../types';
type PluginStatus = 'active' | 'inactive' | 'not-installed';
type PluginSlug = keyof colormagLocalized['plugins'];
export const Plugin: React.FC<{
plugin: {
slug: PluginSlug; // This ensures slug matches the keys in pluginsStatus
label: string;
description: string;
image: string;
learn_more: string;
live_demo: string;
logo: React.ReactNode;
shortDescription: string;
};
index: number;
pluginsStatus: colormagLocalized['plugins'];
}> = ({ plugin, index, pluginsStatus }) => {
const { installPlugin, activatePlugin, performPluginAction } =
usePluginInstallActivate({
pluginsStatus,
});
const routelocation = useLocation();
return (
<>
{routelocation.pathname === '/products' ? (
{plugin.label}
{plugin.description}
) : (
{plugin.logo}
{plugin.label}
{plugin.shortDescription}
)}
>
);
};
interface Plugin {
slug: keyof colormagLocalized['plugins'];
label: string;
description: string;
type: string;
image: string;
learn_more: string;
live_demo: string;
website: string;
shortDescription: string;
logo: React.JSX.Element;
}
export const UsefulPlugins = () => {
const pluginsStatus = useSelect((select) => {
return (
select(COLORMAG_DASHBOARD_STORE) as any
).getPluginsStatus() as colormagLocalized['plugins'];
}, []);
return (
<>
{(PLUGINS as Plugin[]).map((plugin, i) => (
))}
>
);
};
export default UsefulPlugins;