diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts index 1ad8af448..935897ab3 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts @@ -9,9 +9,12 @@ import { import { CREATE_ONE_OBJECT_METADATA_ITEM } from '../graphql/mutations'; import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem'; +import { useRefreshCachedViews } from '@/views/hooks/useRefreshViews'; import { useApolloMetadataClient } from './useApolloMetadataClient'; export const useCreateOneObjectMetadataItem = () => { + const { refreshCachedViews } = useRefreshCachedViews(); + const apolloMetadataClient = useApolloMetadataClient(); const { refreshObjectMetadataItems } = useRefreshObjectMetadataItems('network-only'); @@ -31,7 +34,7 @@ export const useCreateOneObjectMetadataItem = () => { }); await refreshObjectMetadataItems(); - + refreshCachedViews(); return createdObjectMetadata; }; diff --git a/packages/twenty-front/src/modules/views/hooks/useRefreshViews.ts b/packages/twenty-front/src/modules/views/hooks/useRefreshViews.ts new file mode 100644 index 000000000..0f2b04750 --- /dev/null +++ b/packages/twenty-front/src/modules/views/hooks/useRefreshViews.ts @@ -0,0 +1,25 @@ +import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; +import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; +import { useLazyFindManyRecords } from '@/object-record/hooks/useLazyFindManyRecords'; +import { findAllViewsOperationSignatureFactory } from '@/prefetch/graphql/operation-signatures/factories/findAllViewsOperationSignatureFactory'; + +export const useRefreshCachedViews = () => { + const { objectMetadataItems } = useObjectMetadataItems(); + + const findAllViewsOperationSignature = findAllViewsOperationSignatureFactory({ + objectMetadataItem: objectMetadataItems.find( + (item) => item.nameSingular === CoreObjectNameSingular.View, + ), + }); + + const { findManyRecords: refreshCachedViews } = useLazyFindManyRecords({ + objectNameSingular: CoreObjectNameSingular.View, + filter: findAllViewsOperationSignature.variables.filter, + recordGqlFields: findAllViewsOperationSignature.fields, + fetchPolicy: 'network-only', + }); + + return { + refreshCachedViews, + }; +};