diff --git a/app/api/endpoints/plugin.py b/app/api/endpoints/plugin.py index d8a10b9a..7cbde366 100644 --- a/app/api/endpoints/plugin.py +++ b/app/api/endpoints/plugin.py @@ -25,9 +25,9 @@ def all_plugins(_: schemas.TokenPayload = Depends(verify_token)) -> Any: if not online_plugins: return local_plugins # 已安装插件IDS - installed_ids = SystemConfigOper().get(SystemConfigKey.UserInstalledPlugins) or [] + installed_ids = [plugin["id"] for plugin in local_plugins] # 已经安装的本地 - plugins.extend([plugin for plugin in local_plugins if plugin["id"] in installed_ids]) + plugins.extend([plugin for plugin in local_plugins if plugin.get("installed")]) # 未安装的线上插件或者有更新的插件 for plugin in online_plugins: if plugin["id"] not in installed_ids: diff --git a/app/core/plugin.py b/app/core/plugin.py index 0c3dfcc9..8182660a 100644 --- a/app/core/plugin.py +++ b/app/core/plugin.py @@ -192,7 +192,7 @@ class PluginManager(metaclass=Singleton): """ return list(self._plugins.keys()) - def get_online_plugins(self) -> List[Dict[str, dict]]: + def get_online_plugins(self) -> List[dict]: """ 获取所有在线插件信息 """ @@ -271,7 +271,7 @@ class PluginManager(metaclass=Singleton): all_confs = list({v["id"]: v for v in all_confs}.values()) return all_confs - def get_local_plugins(self) -> List[Dict[str, dict]]: + def get_local_plugins(self) -> List[dict]: """ 获取所有本地已下载的插件信息 """ diff --git a/app/helper/module.py b/app/helper/module.py index b1da6ab6..42af3825 100644 --- a/app/helper/module.py +++ b/app/helper/module.py @@ -20,6 +20,7 @@ class ModuleHelper: submodules: list = [] importlib.invalidate_caches() packages = importlib.import_module(package_path) + importlib.reload(packages) for importer, package_name, _ in pkgutil.iter_modules(packages.__path__): try: if package_name.startswith('_'):