'use client' import type { ReactNode } from 'react' import type { PluginInstallPermissionStore } from '../hooks/use-plugin-install-permission' import { use, useEffect, useRef } from 'react' import { createPluginInstallPermissionStore, PluginInstallPermissionContext, } from '../hooks/use-plugin-install-permission' type PluginInstallPermissionProviderProps = { canInstallPlugin: boolean canUpdatePlugin?: boolean currentDifyVersion?: string children: ReactNode } export const PluginInstallPermissionProvider = ({ canInstallPlugin, canUpdatePlugin, currentDifyVersion, children, }: PluginInstallPermissionProviderProps) => { const storeRef = useRef(null) if (!storeRef.current) { storeRef.current = createPluginInstallPermissionStore({ canInstallPlugin, canUpdatePlugin, currentDifyVersion, }) } useEffect(() => { storeRef.current?.getState().setPluginInstallPermission({ canInstallPlugin, canUpdatePlugin: canUpdatePlugin ?? canInstallPlugin, currentDifyVersion, }) }, [canInstallPlugin, canUpdatePlugin, currentDifyVersion]) return ( {children} ) } export const PluginInstallPermissionProviderGuard = ({ canInstallPlugin, canUpdatePlugin, currentDifyVersion, children, }: PluginInstallPermissionProviderProps) => { const store = use(PluginInstallPermissionContext) if (store) return children return ( {children} ) }