Add the possibility to run workflows with manual trigger from the command K with no records selected (#8342)
https://github.com/user-attachments/assets/9f094439-8d19-4a6b-883b-456294f691d8
This commit is contained in:
@ -0,0 +1,71 @@
|
||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { generateDepthOneRecordGqlFields } from '@/object-record/graphql/utils/generateDepthOneRecordGqlFields';
|
||||
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
||||
import {
|
||||
Workflow,
|
||||
WorkflowTriggerType,
|
||||
WorkflowVersion,
|
||||
} from '@/workflow/types/Workflow';
|
||||
import { isDefined } from 'twenty-ui';
|
||||
|
||||
export const useAllActiveWorkflowVersions = ({
|
||||
objectMetadataItem,
|
||||
triggerType,
|
||||
}: {
|
||||
objectMetadataItem?: ObjectMetadataItem;
|
||||
triggerType: WorkflowTriggerType;
|
||||
}) => {
|
||||
const filters = [
|
||||
{
|
||||
status: {
|
||||
eq: 'ACTIVE',
|
||||
},
|
||||
},
|
||||
{
|
||||
trigger: {
|
||||
like: `%"type": "${triggerType}"%`,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
if (isDefined(objectMetadataItem)) {
|
||||
filters.push({
|
||||
trigger: {
|
||||
like: `%"objectType": "${objectMetadataItem.nameSingular}"%`,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
const { objectMetadataItem: workflowVersionObjectMetadataItem } =
|
||||
useObjectMetadataItem({
|
||||
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
|
||||
});
|
||||
|
||||
const { records } = useFindManyRecords<
|
||||
WorkflowVersion & { workflow: Workflow }
|
||||
>({
|
||||
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
|
||||
filter: {
|
||||
and: filters,
|
||||
},
|
||||
recordGqlFields: {
|
||||
...generateDepthOneRecordGqlFields({
|
||||
objectMetadataItem: workflowVersionObjectMetadataItem,
|
||||
}),
|
||||
workflow: true,
|
||||
},
|
||||
});
|
||||
|
||||
// TODO: refactor when we can use 'not like' in the RawJson filter
|
||||
if (!isDefined(objectMetadataItem)) {
|
||||
return {
|
||||
records: records.filter(
|
||||
(record) => !isDefined(record.trigger?.settings.objectType),
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
return { records };
|
||||
};
|
||||
@ -1,52 +0,0 @@
|
||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { generateDepthOneRecordGqlFields } from '@/object-record/graphql/utils/generateDepthOneRecordGqlFields';
|
||||
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
||||
import {
|
||||
Workflow,
|
||||
WorkflowTriggerType,
|
||||
WorkflowVersion,
|
||||
} from '@/workflow/types/Workflow';
|
||||
|
||||
export const useAllActiveWorkflowVersionsForObject = ({
|
||||
objectNameSingular,
|
||||
triggerType,
|
||||
}: {
|
||||
objectNameSingular: string;
|
||||
triggerType: WorkflowTriggerType;
|
||||
}) => {
|
||||
const { objectMetadataItem } = useObjectMetadataItem({
|
||||
objectNameSingular,
|
||||
});
|
||||
|
||||
const { records } = useFindManyRecords<
|
||||
WorkflowVersion & { workflow: Workflow }
|
||||
>({
|
||||
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
|
||||
filter: {
|
||||
and: [
|
||||
{
|
||||
status: {
|
||||
eq: 'ACTIVE',
|
||||
},
|
||||
},
|
||||
{
|
||||
trigger: {
|
||||
like: `%"type": "${triggerType}"%`,
|
||||
},
|
||||
},
|
||||
{
|
||||
trigger: {
|
||||
like: `%"objectType": "${objectNameSingular}"%`,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
recordGqlFields: {
|
||||
...generateDepthOneRecordGqlFields({ objectMetadataItem }),
|
||||
workflow: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { records };
|
||||
};
|
||||
@ -17,7 +17,7 @@ export const useRunWorkflowVersion = () => {
|
||||
|
||||
const runWorkflowVersion = async (
|
||||
workflowVersionId: string,
|
||||
payload: Record<string, any>,
|
||||
payload?: Record<string, any>,
|
||||
) => {
|
||||
await mutate({
|
||||
variables: { input: { workflowVersionId, payload } },
|
||||
|
||||
@ -65,6 +65,7 @@ export type WorkflowDatabaseEventTrigger = BaseTrigger & {
|
||||
eventName: string;
|
||||
input?: object;
|
||||
outputSchema: object;
|
||||
objectType?: string;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user