diff --git a/surfsense_web/contracts/enums/connector.ts b/surfsense_web/contracts/enums/connector.ts index 36d39f4fc..501f5d9a3 100644 --- a/surfsense_web/contracts/enums/connector.ts +++ b/surfsense_web/contracts/enums/connector.ts @@ -25,6 +25,7 @@ export enum EnumConnectorName { YOUTUBE_CONNECTOR = "YOUTUBE_CONNECTOR", CIRCLEBACK_CONNECTOR = "CIRCLEBACK_CONNECTOR", OBSIDIAN_CONNECTOR = "OBSIDIAN_CONNECTOR", + DROPBOX_CONNECTOR = "DROPBOX_CONNECTOR", MCP_CONNECTOR = "MCP_CONNECTOR", COMPOSIO_GOOGLE_DRIVE_CONNECTOR = "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", COMPOSIO_GMAIL_CONNECTOR = "COMPOSIO_GMAIL_CONNECTOR", diff --git a/surfsense_web/contracts/enums/connectorIcons.tsx b/surfsense_web/contracts/enums/connectorIcons.tsx index 19b24cd59..2e609b060 100644 --- a/surfsense_web/contracts/enums/connectorIcons.tsx +++ b/surfsense_web/contracts/enums/connectorIcons.tsx @@ -43,6 +43,8 @@ export const getConnectorIcon = (connectorType: EnumConnectorName | string, clas return OneDrive; case EnumConnectorName.NOTION_CONNECTOR: return Notion; + case EnumConnectorName.DROPBOX_CONNECTOR: + return Dropbox; case EnumConnectorName.DISCORD_CONNECTOR: return Discord; case EnumConnectorName.JIRA_CONNECTOR: @@ -100,6 +102,9 @@ export const getConnectorIcon = (connectorType: EnumConnectorName | string, clas return ; case "GOOGLE_DRIVE_FILE": return Google Drive; + case "DROPBOX_FILE": + case "DROPBOX_CONNECTOR": + return Dropbox; case "ONEDRIVE_FILE": case "ONEDRIVE_CONNECTOR": return OneDrive; diff --git a/surfsense_web/contracts/enums/toolIcons.tsx b/surfsense_web/contracts/enums/toolIcons.tsx index b90adf780..8e5d1e452 100644 --- a/surfsense_web/contracts/enums/toolIcons.tsx +++ b/surfsense_web/contracts/enums/toolIcons.tsx @@ -31,6 +31,7 @@ export const CONNECTOR_TOOL_ICON_PATHS: Record = { gmail: ["GOOGLE_GMAIL_CONNECTOR", "COMPOSIO_GMAIL_CONNECTOR"], google_calendar: ["GOOGLE_CALENDAR_CONNECTOR", "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR"], google_drive: ["GOOGLE_DRIVE_CONNECTOR", "COMPOSIO_GOOGLE_DRIVE_CONNECTOR"], + dropbox: ["DROPBOX_CONNECTOR"], onedrive: ["ONEDRIVE_CONNECTOR"], notion: ["NOTION_CONNECTOR"], linear: ["LINEAR_CONNECTOR"], diff --git a/surfsense_web/contracts/types/connector.types.ts b/surfsense_web/contracts/types/connector.types.ts index ef089f1f5..b83e05dcc 100644 --- a/surfsense_web/contracts/types/connector.types.ts +++ b/surfsense_web/contracts/types/connector.types.ts @@ -27,6 +27,7 @@ export const searchSourceConnectorTypeEnum = z.enum([ "YOUTUBE_CONNECTOR", "BOOKSTACK_CONNECTOR", "CIRCLEBACK_CONNECTOR", + "DROPBOX_CONNECTOR", "MCP_CONNECTOR", "OBSIDIAN_CONNECTOR", "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", diff --git a/surfsense_web/lib/apis/connectors-api.service.ts b/surfsense_web/lib/apis/connectors-api.service.ts index 062d3b780..abd16c7a7 100644 --- a/surfsense_web/lib/apis/connectors-api.service.ts +++ b/surfsense_web/lib/apis/connectors-api.service.ts @@ -290,6 +290,19 @@ class ConnectorsApiService { ); }; + /** + * List Dropbox folders and files + */ + listDropboxFolders = async (request: { connector_id: number; parent_path?: string }) => { + const queryParams = request.parent_path + ? `?parent_path=${encodeURIComponent(request.parent_path)}` + : ""; + return baseApiService.get( + `/api/v1/connectors/${request.connector_id}/dropbox/folders${queryParams}`, + listGoogleDriveFoldersResponse + ); + }; + // ============================================================================= // MCP Connector Methods // ============================================================================= diff --git a/surfsense_web/public/connectors/dropbox.svg b/surfsense_web/public/connectors/dropbox.svg new file mode 100644 index 000000000..84ac86026 --- /dev/null +++ b/surfsense_web/public/connectors/dropbox.svg @@ -0,0 +1,4 @@ + + + +