diff --git a/packages/backend/src/apps/dropbox/index.js b/packages/backend/src/apps/dropbox/index.js
index 6a0e4729..ff5b8cee 100644
--- a/packages/backend/src/apps/dropbox/index.js
+++ b/packages/backend/src/apps/dropbox/index.js
@@ -2,6 +2,7 @@ import defineApp from '../../helpers/define-app.js';
import addAuthHeader from './common/add-auth-header.js';
import auth from './auth/index.js';
import actions from './actions/index.js';
+import triggers from './triggers/index.js';
export default defineApp({
name: 'Dropbox',
@@ -15,4 +16,5 @@ export default defineApp({
beforeRequest: [addAuthHeader],
auth,
actions,
+ triggers,
});
diff --git a/packages/backend/src/apps/dropbox/triggers/index.js b/packages/backend/src/apps/dropbox/triggers/index.js
new file mode 100644
index 00000000..dbc26ac7
--- /dev/null
+++ b/packages/backend/src/apps/dropbox/triggers/index.js
@@ -0,0 +1,3 @@
+import newFolders from './new-folders/index.js';
+
+export default [newFolders];
diff --git a/packages/backend/src/apps/dropbox/triggers/new-folders/index.js b/packages/backend/src/apps/dropbox/triggers/new-folders/index.js
new file mode 100644
index 00000000..4c90d49a
--- /dev/null
+++ b/packages/backend/src/apps/dropbox/triggers/new-folders/index.js
@@ -0,0 +1,61 @@
+import defineTrigger from '../../../../helpers/define-trigger.js';
+
+export default defineTrigger({
+ name: 'New folders',
+ key: 'newFolders',
+ pollInterval: 15,
+ description:
+ 'Triggers when any new folder is added. Ensure that the number of files/folders within the monitored directory remains below 4000.',
+ arguments: [
+ {
+ label: 'Folder',
+ key: 'folderPath',
+ type: 'string',
+ required: true,
+ description:
+ 'Enter the folder path that you want to follow, like /TextFiles or /Documents/Taxes.',
+ variables: true,
+ },
+ ],
+
+ async run($) {
+ const folderPath = $.step.parameters.folderPath;
+ let endpoint = '/2/files/list_folder';
+ let next = false;
+
+ const params = {
+ path: folderPath,
+ recursive: false,
+ include_deleted: false,
+ include_has_explicit_shared_members: false,
+ include_mounted_folders: true,
+ limit: 2000,
+ include_non_downloadable_files: true,
+ };
+
+ do {
+ const { data } = await $.http.post(endpoint, params);
+
+ if (data.has_more) {
+ endpoint += '/continue';
+ params.cursor = data.cursor;
+ next = data.has_more;
+ } else {
+ next = false;
+ }
+
+ if (data.entries?.length) {
+ for (const entry of data.entries.reverse()) {
+ if (entry['.tag'] === 'folder') {
+ $.pushTriggerItem({
+ raw: entry,
+ meta: {
+ internalId: entry.id,
+ },
+ });
+ }
+ }
+ }
+ } while (next);
+ },
+});
diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js
index 04d3fdcf..ed676e21 100644
--- a/packages/docs/pages/.vitepress/config.js
+++ b/packages/docs/pages/.vitepress/config.js
@@ -73,6 +73,7 @@ export default defineConfig({
collapsible: true,
collapsed: true,
items: [
+ { text: 'Triggers', link: '/apps/dropbox/triggers' },
{ text: 'Actions', link: '/apps/dropbox/actions' },
{ text: 'Connection', link: '/apps/dropbox/connection' },
],
@@ -305,7 +306,7 @@ export default defineConfig({
collapsed: true,
items: [
{ text: 'Actions', link: '/apps/removebg/actions' },
- { text: 'Connection', link: '/apps/removebg/connection' }
+ { text: 'Connection', link: '/apps/removebg/connection' },
],
},
{
diff --git a/packages/docs/pages/apps/dropbox/triggers.md b/packages/docs/pages/apps/dropbox/triggers.md
new file mode 100644
index 00000000..e50dd632
--- /dev/null
+++ b/packages/docs/pages/apps/dropbox/triggers.md
@@ -0,0 +1,12 @@
+---
+favicon: /favicons/dropbox.svg
+items:
+ - name: New folders
+ desc: Triggers when any new folder is added. Ensure that the number of files/folders within the monitored directory remains below 4000.
+---
+
+
+
+