import { addActivityMutationOptions } from "@/shared/plugin-activity/mutation-options" import { getSitePluginsQueryOptions } from "@/shared/site-plugins/query-options" import { extractChildrenFromTag } from "@/shared/utils/html" import usePluginSelectedStore from "@/stores/pluginSelectedStore" import { useMutation, useQuery } from "@tanstack/react-query" import { decodeEntities } from "@wordpress/html-entities" import { useEffect, useMemo } from "@wordpress/element" import usePluginsViewStore from "@/stores/pluginsViewStore" import { getPluginStatus } from "@/shared/site-plugins/utils/index." import { Icon, Spinner } from "@wordpress/components" import { check, download } from "@wordpress/icons" import { __ } from "@wordpress/i18n" const PluginList = () => { const { data: plugins_data, isPending, setIsOpen } = usePluginsViewStore() const { data: sitePlugins } = useQuery(getSitePluginsQueryOptions()) const { plugin: selectedPlugin, setPlugin } = usePluginSelectedStore() const addActivityMutation = useMutation(addActivityMutationOptions()) useEffect(() => { if (selectedPlugin) { addActivityMutation.mutate({ plugin_slug: selectedPlugin.slug, activity_type: 'view', }) } }, [selectedPlugin]) useEffect(() => { if (plugins_data.length > 0 && window.innerWidth > 768) { setPlugin(plugins_data[0]) } else { setPlugin(null) } }, [plugins_data]) const handleClick = (plugin: WordPressPlugin) => { setPlugin(plugin) setIsOpen(true) } const pluginList = useMemo(() => { return plugins_data.map((pluginData) => { const { isActive, isInstalled } = getPluginStatus(sitePlugins ?? [], pluginData.slug); return { ...pluginData, isActive, isInstalled, }; }); }, [plugins_data, sitePlugins]) return (