diff --git a/api/core/app/apps/common/workflow_response_converter.py b/api/core/app/apps/common/workflow_response_converter.py index 8d7f1ef69d..8079c0f9f1 100644 --- a/api/core/app/apps/common/workflow_response_converter.py +++ b/api/core/app/apps/common/workflow_response_converter.py @@ -178,7 +178,9 @@ class WorkflowResponseConverter: self._application_generate_entity.app_config.tenant_id, event.provider_id, ) - response.data.extras["icon"] = provider_entity.declaration.identity.icon + response.data.extras["icon"] = provider_entity.declaration.identity.generate_datasource_icon_url( + self._application_generate_entity.app_config.tenant_id + ) return response diff --git a/api/core/datasource/entities/datasource_entities.py b/api/core/datasource/entities/datasource_entities.py index 65ce838b72..0c2011f841 100644 --- a/api/core/datasource/entities/datasource_entities.py +++ b/api/core/datasource/entities/datasource_entities.py @@ -3,7 +3,9 @@ from enum import Enum from typing import Any, Optional from pydantic import BaseModel, Field, ValidationInfo, field_validator +from yarl import URL +from configs import dify_config from core.entities.provider_entities import ProviderConfig from core.plugin.entities.oauth import OAuthSchema from core.plugin.entities.parameters import ( @@ -144,6 +146,21 @@ class DatasourceProviderIdentity(BaseModel): description="The tags of the tool", ) + def generate_datasource_icon_url(self, tenant_id: str) -> str: + HARD_CODED_DATASOURCE_ICONS = ["https://assets.dify.ai/images/File%20Upload.svg"] + if self.icon in HARD_CODED_DATASOURCE_ICONS: + return self.icon + return str( + URL(dify_config.CONSOLE_API_URL or "/") + / "console" + / "api" + / "workspaces" + / "current" + / "plugin" + / "icon" + % {"tenant_id": tenant_id, "filename": self.icon} + ) + class DatasourceProviderEntity(BaseModel): """