Merge pull request #1487 from automatisch/AUT-513
feat(google-tasks): add create task action
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import defineAction from '../../../../helpers/define-action.js';
|
||||
|
||||
export default defineAction({
|
||||
name: 'Create task list',
|
||||
key: 'createTaskList',
|
||||
description: 'Creates a new task list.',
|
||||
arguments: [
|
||||
{
|
||||
label: 'List Title',
|
||||
key: 'listTitle',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: '',
|
||||
variables: true,
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
const listTitle = $.step.parameters.listTitle;
|
||||
|
||||
const body = {
|
||||
title: listTitle,
|
||||
};
|
||||
|
||||
const { data } = await $.http.post('/tasks/v1/users/@me/lists', body);
|
||||
|
||||
$.setActionItem({
|
||||
raw: data,
|
||||
});
|
||||
},
|
||||
});
|
@@ -0,0 +1,70 @@
|
||||
import defineAction from '../../../../helpers/define-action.js';
|
||||
|
||||
export default defineAction({
|
||||
name: 'Create task',
|
||||
key: 'createTask',
|
||||
description: 'Creates a new task.',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Task List',
|
||||
key: 'taskListId',
|
||||
type: 'dropdown',
|
||||
required: true,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listTaskLists',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Title',
|
||||
key: 'title',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: '',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Notes',
|
||||
key: 'notes',
|
||||
type: 'string',
|
||||
required: false,
|
||||
description: '',
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Due Date',
|
||||
key: 'due',
|
||||
type: 'string',
|
||||
required: false,
|
||||
description: 'RFC 3339 timestamp.',
|
||||
variables: true,
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
const { taskListId, title, notes, due } = $.step.parameters;
|
||||
|
||||
const body = {
|
||||
title,
|
||||
notes,
|
||||
due,
|
||||
};
|
||||
|
||||
const { data } = await $.http.post(
|
||||
`/tasks/v1/lists/${taskListId}/tasks`,
|
||||
body
|
||||
);
|
||||
|
||||
$.setActionItem({
|
||||
raw: data,
|
||||
});
|
||||
},
|
||||
});
|
@@ -1,4 +1,6 @@
|
||||
import createTask from './create-task/index.js';
|
||||
import createTaskList from './create-task-list/index.js';
|
||||
import findTask from './find-task/index.js';
|
||||
import updateTask from './update-task/index.js';
|
||||
|
||||
export default [findTask, updateTask];
|
||||
export default [createTask, createTaskList, findTask, updateTask];
|
||||
|
5
packages/backend/src/apps/google-tasks/triggers/index.js
Normal file
5
packages/backend/src/apps/google-tasks/triggers/index.js
Normal file
@@ -0,0 +1,5 @@
|
||||
import newCompletedTasks from './new-completed-tasks/index.js';
|
||||
import newTaskLists from './new-task-lists/index.js';
|
||||
import newTasks from './new-tasks/index.js';
|
||||
|
||||
export default [newCompletedTasks, newTaskLists, newTasks];
|
@@ -0,0 +1,59 @@
|
||||
import defineTrigger from '../../../../helpers/define-trigger.js';
|
||||
|
||||
export default defineTrigger({
|
||||
name: 'New completed tasks',
|
||||
key: 'newTasks',
|
||||
pollInterval: 15,
|
||||
description: 'Triggers when a task is finished within a specified task list.',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Task List',
|
||||
key: 'taskListId',
|
||||
type: 'dropdown',
|
||||
required: true,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listTaskLists',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
const taskListId = $.step.parameters.taskListId;
|
||||
|
||||
const params = {
|
||||
maxResults: 100,
|
||||
showCompleted: true,
|
||||
showHidden: true,
|
||||
pageToken: undefined,
|
||||
};
|
||||
|
||||
do {
|
||||
const { data } = await $.http.get(`/tasks/v1/lists/${taskListId}/tasks`, {
|
||||
params,
|
||||
});
|
||||
params.pageToken = data.nextPageToken;
|
||||
|
||||
if (data.items?.length) {
|
||||
for (const task of data.items) {
|
||||
if (task.status === 'completed') {
|
||||
$.pushTriggerItem({
|
||||
raw: task,
|
||||
meta: {
|
||||
internalId: task.etag,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (params.pageToken);
|
||||
},
|
||||
});
|
@@ -0,0 +1,31 @@
|
||||
import defineTrigger from '../../../../helpers/define-trigger.js';
|
||||
|
||||
export default defineTrigger({
|
||||
name: 'New task lists',
|
||||
key: 'newTaskLists',
|
||||
pollInterval: 15,
|
||||
description: 'Triggers when a new task list is created.',
|
||||
|
||||
async run($) {
|
||||
const params = {
|
||||
maxResults: 100,
|
||||
pageToken: undefined,
|
||||
};
|
||||
|
||||
do {
|
||||
const { data } = await $.http.get('/tasks/v1/users/@me/lists');
|
||||
params.pageToken = data.nextPageToken;
|
||||
|
||||
if (data.items?.length) {
|
||||
for (const taskList of data.items.reverse()) {
|
||||
$.pushTriggerItem({
|
||||
raw: taskList,
|
||||
meta: {
|
||||
internalId: taskList.etag,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
} while (params.pageToken);
|
||||
},
|
||||
});
|
@@ -0,0 +1,53 @@
|
||||
import defineTrigger from '../../../../helpers/define-trigger.js';
|
||||
|
||||
export default defineTrigger({
|
||||
name: 'New tasks',
|
||||
key: 'newTasks',
|
||||
pollInterval: 15,
|
||||
description: 'Triggers when a new task is created.',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Task List',
|
||||
key: 'taskListId',
|
||||
type: 'dropdown',
|
||||
required: true,
|
||||
description: '',
|
||||
variables: true,
|
||||
source: {
|
||||
type: 'query',
|
||||
name: 'getDynamicData',
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listTaskLists',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
const taskListId = $.step.parameters.taskListId;
|
||||
|
||||
const params = {
|
||||
maxResults: 100,
|
||||
pageToken: undefined,
|
||||
};
|
||||
|
||||
do {
|
||||
const { data } = await $.http.get(`/tasks/v1/lists/${taskListId}/tasks`);
|
||||
params.pageToken = data.nextPageToken;
|
||||
|
||||
if (data.items?.length) {
|
||||
for (const task of data.items) {
|
||||
$.pushTriggerItem({
|
||||
raw: task,
|
||||
meta: {
|
||||
internalId: task.etag,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
} while (params.pageToken);
|
||||
},
|
||||
});
|
@@ -174,6 +174,7 @@ export default defineConfig({
|
||||
collapsible: true,
|
||||
collapsed: true,
|
||||
items: [
|
||||
{ text: 'Triggers', link: '/apps/google-tasks/triggers' },
|
||||
{ text: 'Actions', link: '/apps/google-tasks/actions' },
|
||||
{ text: 'Connection', link: '/apps/google-tasks/connection' },
|
||||
],
|
||||
|
@@ -1,6 +1,10 @@
|
||||
---
|
||||
favicon: /favicons/google-tasks.svg
|
||||
items:
|
||||
- name: Create task
|
||||
desc: Creates a new task.
|
||||
- name: Create task list
|
||||
desc: Creates a new task list.
|
||||
- name: Find task
|
||||
desc: Looking for an incomplete task.
|
||||
- name: Update task
|
||||
|
16
packages/docs/pages/apps/google-tasks/triggers.md
Normal file
16
packages/docs/pages/apps/google-tasks/triggers.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
favicon: /favicons/google-tasks.svg
|
||||
items:
|
||||
- name: New completed tasks
|
||||
desc: Triggers when a task is finished within a specified task list.
|
||||
- name: New task lists
|
||||
desc: Triggers when a new task list is created.
|
||||
- name: New tasks
|
||||
desc: Triggers when a new task is created.
|
||||
---
|
||||
|
||||
<script setup>
|
||||
import CustomListing from '../../components/CustomListing.vue'
|
||||
</script>
|
||||
|
||||
<CustomListing />
|
Reference in New Issue
Block a user