d0ff1ffd5f
- create a serverless function when creating a new workflow code step - add code editor in workflow code step - move workflowVersion steps management from frontend to backend - add a custom resolver for workflow-version management - fix optimistic rendering on frontend - fix css - delete serverless function when deleting workflow code step TODO - Don't update serverlessFunction if no code change - Factorize what can be between crud trigger and crud step - Publish serverless version when activating workflow - delete serverless functions when deleting workflow or workflowVersion - fix optimistic rendering for code updates - Unify CRUD types <img width="1279" alt="image" src="https://github.com/user-attachments/assets/3d97ee9f-4b96-4abc-9d36-5c0280058be4">
72 lines
1.9 KiB
TypeScript
72 lines
1.9 KiB
TypeScript
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: records.filter((record) => isDefined(record.workflow)) };
|
|
};
|