Refactored useFindOneObjectMetadataItem and useFindManyObjectMetadataItems (#2600)
* Refactored useFindOneObjectMetadataItem and useFindManyObjectMetadataItems to rely on a recoil family selector * Removed console.log * Cleaned * Removed unused hook * Fixed seeds
This commit is contained in:
@ -9,8 +9,8 @@ import { useRecoilCallback } from 'recoil';
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
EMPTY_QUERY,
|
EMPTY_QUERY,
|
||||||
useFindOneObjectMetadataItem,
|
useObjectMetadataItem,
|
||||||
} from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
} from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
|
|
||||||
import { optimisticEffectState } from '../states/optimisticEffectState';
|
import { optimisticEffectState } from '../states/optimisticEffectState';
|
||||||
@ -23,7 +23,7 @@ export const useOptimisticEffect = ({
|
|||||||
objectNameSingular: string | undefined;
|
objectNameSingular: string | undefined;
|
||||||
}) => {
|
}) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloClient = useApolloClient();
|
||||||
const { findManyQuery } = useFindOneObjectMetadataItem({
|
const { findManyQuery } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -33,15 +33,13 @@ export const HooksCompanyBoardEffect = () => {
|
|||||||
setViewType,
|
setViewType,
|
||||||
} = useView();
|
} = useView();
|
||||||
|
|
||||||
const { currentViewFiltersState, currentViewFieldsState } =
|
const { currentViewFieldsState } = useViewScopedStates();
|
||||||
useViewScopedStates();
|
|
||||||
|
|
||||||
const [pipelineSteps, setPipelineSteps] = useState<PipelineStep[]>([]);
|
const [pipelineSteps, setPipelineSteps] = useState<PipelineStep[]>([]);
|
||||||
const [opportunities, setOpportunities] = useState<Opportunity[]>([]);
|
const [opportunities, setOpportunities] = useState<Opportunity[]>([]);
|
||||||
const [companies, setCompanies] = useState<Company[]>([]);
|
const [companies, setCompanies] = useState<Company[]>([]);
|
||||||
|
|
||||||
const currentViewFields = useRecoilValue(currentViewFieldsState);
|
const currentViewFields = useRecoilValue(currentViewFieldsState);
|
||||||
const currentViewFilters = useRecoilValue(currentViewFiltersState);
|
|
||||||
|
|
||||||
const [, setIsBoardLoaded] = useRecoilState(isBoardLoadedState);
|
const [, setIsBoardLoaded] = useRecoilState(isBoardLoadedState);
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMembe
|
|||||||
import { Company } from '@/companies/types/Company';
|
import { Company } from '@/companies/types/Company';
|
||||||
import { Favorite } from '@/favorites/types/Favorite';
|
import { Favorite } from '@/favorites/types/Favorite';
|
||||||
import { mapFavorites } from '@/favorites/utils/mapFavorites';
|
import { mapFavorites } from '@/favorites/utils/mapFavorites';
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useFindManyObjectRecords } from '@/object-record/hooks/useFindManyObjectRecords';
|
import { useFindManyObjectRecords } from '@/object-record/hooks/useFindManyObjectRecords';
|
||||||
import { PaginatedObjectTypeResults } from '@/object-record/types/PaginatedObjectTypeResults';
|
import { PaginatedObjectTypeResults } from '@/object-record/types/PaginatedObjectTypeResults';
|
||||||
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
||||||
@ -24,12 +24,12 @@ export const useFavorites = ({
|
|||||||
const [favorites, setFavorites] = useRecoilState(favoritesState);
|
const [favorites, setFavorites] = useRecoilState(favoritesState);
|
||||||
|
|
||||||
const { updateOneMutation, createOneMutation, deleteOneMutation } =
|
const { updateOneMutation, createOneMutation, deleteOneMutation } =
|
||||||
useFindOneObjectMetadataItem({
|
useObjectMetadataItem({
|
||||||
objectNamePlural: 'favorites',
|
objectNamePlural: 'favorites',
|
||||||
});
|
});
|
||||||
|
|
||||||
const { foundObjectMetadataItem: favoriteTargetObjectMetadataItem } =
|
const { objectMetadataItem: favoriteTargetObjectMetadataItem } =
|
||||||
useFindOneObjectMetadataItem({
|
useObjectMetadataItem({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,14 @@
|
|||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { FieldMetadata } from '@/ui/object/field/types/FieldMetadata';
|
import { FieldMetadata } from '@/ui/object/field/types/FieldMetadata';
|
||||||
import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinition';
|
import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinition';
|
||||||
|
import { Nullable } from '~/types/Nullable';
|
||||||
|
|
||||||
import { formatFieldMetadataItemAsColumnDefinition } from '../utils/formatFieldMetadataItemAsColumnDefinition';
|
import { formatFieldMetadataItemAsColumnDefinition } from '../utils/formatFieldMetadataItemAsColumnDefinition';
|
||||||
import { formatFieldMetadataItemsAsFilterDefinitions } from '../utils/formatFieldMetadataItemsAsFilterDefinitions';
|
import { formatFieldMetadataItemsAsFilterDefinitions } from '../utils/formatFieldMetadataItemsAsFilterDefinitions';
|
||||||
import { formatFieldMetadataItemsAsSortDefinitions } from '../utils/formatFieldMetadataItemsAsSortDefinitions';
|
import { formatFieldMetadataItemsAsSortDefinitions } from '../utils/formatFieldMetadataItemsAsSortDefinitions';
|
||||||
|
|
||||||
export const useComputeDefinitionsFromFieldMetadata = (
|
export const useComputeDefinitionsFromFieldMetadata = (
|
||||||
objectMetadataItem?: ObjectMetadataItem,
|
objectMetadataItem?: Nullable<ObjectMetadataItem>,
|
||||||
) => {
|
) => {
|
||||||
if (!objectMetadataItem) {
|
if (!objectMetadataItem) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { useQuery } from '@apollo/client';
|
import { useQuery } from '@apollo/client';
|
||||||
|
import { useRecoilCallback } from 'recoil';
|
||||||
|
|
||||||
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
import { useSnackBar } from '@/ui/feedback/snack-bar/hooks/useSnackBar';
|
import { useSnackBar } from '@/ui/feedback/snack-bar/hooks/useSnackBar';
|
||||||
import {
|
import {
|
||||||
FieldFilter,
|
FieldFilter,
|
||||||
@ -8,6 +10,7 @@ import {
|
|||||||
ObjectMetadataItemsQuery,
|
ObjectMetadataItemsQuery,
|
||||||
ObjectMetadataItemsQueryVariables,
|
ObjectMetadataItemsQueryVariables,
|
||||||
} from '~/generated-metadata/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
|
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
||||||
import { logError } from '~/utils/logError';
|
import { logError } from '~/utils/logError';
|
||||||
|
|
||||||
import { FIND_MANY_METADATA_OBJECTS } from '../graphql/queries';
|
import { FIND_MANY_METADATA_OBJECTS } from '../graphql/queries';
|
||||||
@ -15,7 +18,6 @@ import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '../utils/m
|
|||||||
|
|
||||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
||||||
|
|
||||||
// TODO: test fetchMore
|
|
||||||
export const useFindManyObjectMetadataItems = ({
|
export const useFindManyObjectMetadataItems = ({
|
||||||
skip,
|
skip,
|
||||||
objectFilter,
|
objectFilter,
|
||||||
@ -29,41 +31,44 @@ export const useFindManyObjectMetadataItems = ({
|
|||||||
|
|
||||||
const { enqueueSnackBar } = useSnackBar();
|
const { enqueueSnackBar } = useSnackBar();
|
||||||
|
|
||||||
const {
|
const { data, loading, error } = useQuery<
|
||||||
data,
|
ObjectMetadataItemsQuery,
|
||||||
fetchMore: fetchMoreInternal,
|
ObjectMetadataItemsQueryVariables
|
||||||
loading,
|
>(FIND_MANY_METADATA_OBJECTS, {
|
||||||
error,
|
variables: {
|
||||||
} = useQuery<ObjectMetadataItemsQuery, ObjectMetadataItemsQueryVariables>(
|
objectFilter,
|
||||||
FIND_MANY_METADATA_OBJECTS,
|
fieldFilter,
|
||||||
{
|
|
||||||
variables: {
|
|
||||||
objectFilter,
|
|
||||||
fieldFilter,
|
|
||||||
},
|
|
||||||
client: apolloMetadataClient ?? undefined,
|
|
||||||
skip: skip || !apolloMetadataClient,
|
|
||||||
onError: (error) => {
|
|
||||||
logError('useFindManyObjectMetadataItems error : ' + error);
|
|
||||||
enqueueSnackBar(
|
|
||||||
`Error during useFindManyObjectMetadataItems, ${error.message}`,
|
|
||||||
{
|
|
||||||
variant: 'error',
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
onCompleted: () => {},
|
|
||||||
},
|
},
|
||||||
);
|
client: apolloMetadataClient ?? undefined,
|
||||||
|
skip: skip || !apolloMetadataClient,
|
||||||
|
onError: (error) => {
|
||||||
|
logError('useFindManyObjectMetadataItems error : ' + error);
|
||||||
|
enqueueSnackBar(
|
||||||
|
`Error during useFindManyObjectMetadataItems, ${error.message}`,
|
||||||
|
{
|
||||||
|
variant: 'error',
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
onCompleted: useRecoilCallback(
|
||||||
|
({ snapshot, set }) =>
|
||||||
|
(data) => {
|
||||||
|
const objectMetadataItems =
|
||||||
|
mapPaginatedObjectMetadataItemsToObjectMetadataItems({
|
||||||
|
pagedObjectMetadataItems: data,
|
||||||
|
});
|
||||||
|
|
||||||
const hasMore = data?.objects?.pageInfo?.hasNextPage;
|
const actualObjectMetadataItems = snapshot
|
||||||
|
.getLoadable(objectMetadataItemsState)
|
||||||
|
.getValue();
|
||||||
|
|
||||||
const fetchMore = () =>
|
if (!isDeeplyEqual(objectMetadataItems, actualObjectMetadataItems)) {
|
||||||
fetchMoreInternal({
|
set(objectMetadataItemsState, objectMetadataItems);
|
||||||
variables: {
|
}
|
||||||
afterCursor: data?.objects?.pageInfo?.endCursor,
|
},
|
||||||
},
|
[],
|
||||||
});
|
),
|
||||||
|
});
|
||||||
|
|
||||||
const objectMetadataItems = useMemo(() => {
|
const objectMetadataItems = useMemo(() => {
|
||||||
return mapPaginatedObjectMetadataItemsToObjectMetadataItems({
|
return mapPaginatedObjectMetadataItemsToObjectMetadataItems({
|
||||||
@ -73,8 +78,6 @@ export const useFindManyObjectMetadataItems = ({
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
hasMore,
|
|
||||||
fetchMore,
|
|
||||||
loading,
|
loading,
|
||||||
error,
|
error,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,74 +0,0 @@
|
|||||||
import { useMemo } from 'react';
|
|
||||||
import { useQuery } from '@apollo/client';
|
|
||||||
|
|
||||||
import { useSnackBar } from '@/ui/feedback/snack-bar/hooks/useSnackBar';
|
|
||||||
import {
|
|
||||||
ObjectFilter,
|
|
||||||
ObjectMetadataItemsQuery,
|
|
||||||
ObjectMetadataItemsQueryVariables,
|
|
||||||
} from '~/generated-metadata/graphql';
|
|
||||||
import { logError } from '~/utils/logError';
|
|
||||||
|
|
||||||
import { FIND_MANY_METADATA_OBJECTS } from '../graphql/queries';
|
|
||||||
import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '../utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems';
|
|
||||||
|
|
||||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
|
||||||
|
|
||||||
// TODO: test fetchMore
|
|
||||||
export const useFindManyObjectMetadataItems = ({
|
|
||||||
skip,
|
|
||||||
filter,
|
|
||||||
}: { skip?: boolean; filter?: ObjectFilter } = {}) => {
|
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
|
||||||
|
|
||||||
const { enqueueSnackBar } = useSnackBar();
|
|
||||||
|
|
||||||
const {
|
|
||||||
data,
|
|
||||||
fetchMore: fetchMoreInternal,
|
|
||||||
loading,
|
|
||||||
error,
|
|
||||||
} = useQuery<ObjectMetadataItemsQuery, ObjectMetadataItemsQueryVariables>(
|
|
||||||
FIND_MANY_METADATA_OBJECTS,
|
|
||||||
{
|
|
||||||
variables: {
|
|
||||||
objectFilter: filter,
|
|
||||||
},
|
|
||||||
client: apolloMetadataClient ?? undefined,
|
|
||||||
skip: skip || !apolloMetadataClient,
|
|
||||||
onError: (error) => {
|
|
||||||
logError('useFindManyObjectMetadataItems error : ' + error);
|
|
||||||
enqueueSnackBar(
|
|
||||||
`Error during useFindManyObjectMetadataItems, ${error.message}`,
|
|
||||||
{
|
|
||||||
variant: 'error',
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
onCompleted: () => {},
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
const hasMore = data?.objects?.pageInfo?.hasNextPage;
|
|
||||||
|
|
||||||
const fetchMore = () =>
|
|
||||||
fetchMoreInternal({
|
|
||||||
variables: {
|
|
||||||
afterCursor: data?.objects?.pageInfo?.endCursor,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const objectMetadataItems = useMemo(() => {
|
|
||||||
return mapPaginatedObjectMetadataItemsToObjectMetadataItems({
|
|
||||||
pagedObjectMetadataItems: data,
|
|
||||||
});
|
|
||||||
}, [data]);
|
|
||||||
|
|
||||||
return {
|
|
||||||
objectMetadataItems,
|
|
||||||
hasMore,
|
|
||||||
fetchMore,
|
|
||||||
loading,
|
|
||||||
error,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@ -1,10 +1,12 @@
|
|||||||
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
import { FieldType } from '@/ui/object/field/types/FieldType';
|
import { FieldType } from '@/ui/object/field/types/FieldType';
|
||||||
|
|
||||||
import { FieldMetadataItem } from '../types/FieldMetadataItem';
|
import { FieldMetadataItem } from '../types/FieldMetadataItem';
|
||||||
|
|
||||||
export const useMapFieldMetadataToGraphQLQuery = () => {
|
export const useMapFieldMetadataToGraphQLQuery = () => {
|
||||||
const { objectMetadataItems } = useFindManyObjectMetadataItems();
|
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||||
|
|
||||||
const mapFieldMetadataToGraphQLQuery = (
|
const mapFieldMetadataToGraphQLQuery = (
|
||||||
field: FieldMetadataItem,
|
field: FieldMetadataItem,
|
||||||
@ -19,6 +21,7 @@ export const useMapFieldMetadataToGraphQLQuery = () => {
|
|||||||
|
|
||||||
const fieldIsSimpleValue = (
|
const fieldIsSimpleValue = (
|
||||||
[
|
[
|
||||||
|
'UUID',
|
||||||
'TEXT',
|
'TEXT',
|
||||||
'PHONE',
|
'PHONE',
|
||||||
'DATE',
|
'DATE',
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { MainIdentifierMapper } from '@/ui/object/field/types/MainIdentifierMapper';
|
import { MainIdentifierMapper } from '@/ui/object/field/types/MainIdentifierMapper';
|
||||||
|
import { Nullable } from '~/types/Nullable';
|
||||||
|
|
||||||
export const useObjectMainIdentifier = (
|
export const useObjectMainIdentifier = (
|
||||||
objectMetadataItem?: ObjectMetadataItem,
|
objectMetadataItem?: Nullable<ObjectMetadataItem>,
|
||||||
) => {
|
) => {
|
||||||
if (!objectMetadataItem) {
|
if (!objectMetadataItem) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -1,15 +1,16 @@
|
|||||||
import { gql } from '@apollo/client';
|
import { gql } from '@apollo/client';
|
||||||
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
|
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
|
||||||
import { useGenerateCreateOneObjectMutation } from '@/object-record/utils/generateCreateOneObjectMutation';
|
import { useGenerateCreateOneObjectMutation } from '@/object-record/utils/generateCreateOneObjectMutation';
|
||||||
import { useGenerateDeleteOneObjectMutation } from '@/object-record/utils/useGenerateDeleteOneObjectMutation';
|
import { useGenerateDeleteOneObjectMutation } from '@/object-record/utils/useGenerateDeleteOneObjectMutation';
|
||||||
import { useGenerateFindManyCustomObjectsQuery } from '@/object-record/utils/useGenerateFindManyCustomObjectsQuery';
|
import { useGenerateFindManyCustomObjectsQuery } from '@/object-record/utils/useGenerateFindManyCustomObjectsQuery';
|
||||||
import { useGenerateFindOneCustomObjectQuery } from '@/object-record/utils/useGenerateFindOneCustomObjectQuery';
|
import { useGenerateFindOneCustomObjectQuery } from '@/object-record/utils/useGenerateFindOneCustomObjectQuery';
|
||||||
import { useGenerateUpdateOneObjectMutation } from '@/object-record/utils/useGenerateUpdateOneObjectMutation';
|
import { useGenerateUpdateOneObjectMutation } from '@/object-record/utils/useGenerateUpdateOneObjectMutation';
|
||||||
|
import { isDefined } from '~/utils/isDefined';
|
||||||
|
|
||||||
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
|
||||||
|
|
||||||
import { useFindManyObjectMetadataItems } from './useFindManyObjectMetadataItems';
|
|
||||||
|
|
||||||
export const EMPTY_QUERY = gql`
|
export const EMPTY_QUERY = gql`
|
||||||
query EmptyQuery {
|
query EmptyQuery {
|
||||||
empty
|
empty
|
||||||
@ -22,53 +23,46 @@ export const EMPTY_MUTATION = gql`
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const useFindOneObjectMetadataItem = ({
|
export const useObjectMetadataItem = ({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
skip,
|
|
||||||
}: ObjectMetadataItemIdentifier & { skip?: boolean }) => {
|
}: ObjectMetadataItemIdentifier & { skip?: boolean }) => {
|
||||||
const { objectMetadataItems, loading } = useFindManyObjectMetadataItems({
|
const objectMetadataItem = useRecoilValue(
|
||||||
skip,
|
objectMetadataItemFamilySelector({
|
||||||
});
|
objectNamePlural,
|
||||||
|
objectNameSingular,
|
||||||
const foundObjectMetadataItem = objectMetadataItems.find(
|
}),
|
||||||
(object) =>
|
|
||||||
object.namePlural === objectNamePlural ||
|
|
||||||
object.nameSingular === objectNameSingular,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const objectNotFoundInMetadata =
|
const objectNotFoundInMetadata = !isDefined(objectMetadataItem);
|
||||||
objectMetadataItems.length === 0 ||
|
|
||||||
(objectMetadataItems.length > 0 && !foundObjectMetadataItem);
|
|
||||||
|
|
||||||
const findManyQuery = useGenerateFindManyCustomObjectsQuery({
|
const findManyQuery = useGenerateFindManyCustomObjectsQuery({
|
||||||
objectMetadataItem: foundObjectMetadataItem,
|
objectMetadataItem,
|
||||||
});
|
});
|
||||||
|
|
||||||
const findOneQuery = useGenerateFindOneCustomObjectQuery({
|
const findOneQuery = useGenerateFindOneCustomObjectQuery({
|
||||||
objectMetadataItem: foundObjectMetadataItem,
|
objectMetadataItem,
|
||||||
});
|
});
|
||||||
|
|
||||||
const createOneMutation = useGenerateCreateOneObjectMutation({
|
const createOneMutation = useGenerateCreateOneObjectMutation({
|
||||||
objectMetadataItem: foundObjectMetadataItem,
|
objectMetadataItem,
|
||||||
});
|
});
|
||||||
|
|
||||||
const updateOneMutation = useGenerateUpdateOneObjectMutation({
|
const updateOneMutation = useGenerateUpdateOneObjectMutation({
|
||||||
objectMetadataItem: foundObjectMetadataItem,
|
objectMetadataItem,
|
||||||
});
|
});
|
||||||
|
|
||||||
const deleteOneMutation = useGenerateDeleteOneObjectMutation({
|
const deleteOneMutation = useGenerateDeleteOneObjectMutation({
|
||||||
objectMetadataItem: foundObjectMetadataItem,
|
objectMetadataItem,
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
foundObjectMetadataItem,
|
objectMetadataItem,
|
||||||
objectNotFoundInMetadata,
|
objectNotFoundInMetadata,
|
||||||
findManyQuery,
|
findManyQuery,
|
||||||
findOneQuery,
|
findOneQuery,
|
||||||
createOneMutation,
|
createOneMutation,
|
||||||
updateOneMutation,
|
updateOneMutation,
|
||||||
deleteOneMutation,
|
deleteOneMutation,
|
||||||
loading,
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -1,14 +1,17 @@
|
|||||||
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
|
|
||||||
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
|
||||||
import { formatObjectMetadataItemInput } from '../utils/formatObjectMetadataItemInput';
|
import { formatObjectMetadataItemInput } from '../utils/formatObjectMetadataItemInput';
|
||||||
import { getObjectSlug } from '../utils/getObjectSlug';
|
import { getObjectSlug } from '../utils/getObjectSlug';
|
||||||
|
|
||||||
import { useCreateOneObjectRecordMetadataItem } from './useCreateOneObjectMetadataItem';
|
import { useCreateOneObjectRecordMetadataItem } from './useCreateOneObjectMetadataItem';
|
||||||
import { useDeleteOneObjectMetadataItem } from './useDeleteOneObjectMetadataItem';
|
import { useDeleteOneObjectMetadataItem } from './useDeleteOneObjectMetadataItem';
|
||||||
import { useFindManyObjectMetadataItems } from './useFindManyObjectMetadataItems';
|
|
||||||
import { useUpdateOneObjectMetadataItem } from './useUpdateOneObjectMetadataItem';
|
import { useUpdateOneObjectMetadataItem } from './useUpdateOneObjectMetadataItem';
|
||||||
|
|
||||||
export const useObjectMetadataItemForSettings = () => {
|
export const useObjectMetadataItemForSettings = () => {
|
||||||
const { objectMetadataItems, loading } = useFindManyObjectMetadataItems();
|
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||||
|
|
||||||
const activeObjectMetadataItems = objectMetadataItems.filter(
|
const activeObjectMetadataItems = objectMetadataItems.filter(
|
||||||
({ isActive, isSystem }) => isActive && !isSystem,
|
({ isActive, isSystem }) => isActive && !isSystem,
|
||||||
@ -87,7 +90,6 @@ export const useObjectMetadataItemForSettings = () => {
|
|||||||
findActiveObjectMetadataItemBySlug,
|
findActiveObjectMetadataItemBySlug,
|
||||||
findObjectMetadataItemById,
|
findObjectMetadataItemById,
|
||||||
findObjectMetadataItemByNamePlural,
|
findObjectMetadataItemByNamePlural,
|
||||||
loading,
|
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -0,0 +1,30 @@
|
|||||||
|
import { selectorFamily } from 'recoil';
|
||||||
|
|
||||||
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
|
|
||||||
|
export const objectMetadataItemFamilySelector = selectorFamily<
|
||||||
|
ObjectMetadataItem | null,
|
||||||
|
{ objectNameSingular?: string; objectNamePlural?: string }
|
||||||
|
>({
|
||||||
|
key: 'objectMetadataItemFamilySelector',
|
||||||
|
get:
|
||||||
|
({
|
||||||
|
objectNameSingular,
|
||||||
|
objectNamePlural,
|
||||||
|
}: {
|
||||||
|
objectNameSingular?: string;
|
||||||
|
objectNamePlural?: string;
|
||||||
|
}) =>
|
||||||
|
({ get }) => {
|
||||||
|
const objectMetadataItems = get(objectMetadataItemsState);
|
||||||
|
|
||||||
|
return (
|
||||||
|
objectMetadataItems.find(
|
||||||
|
(objectMetadataItem) =>
|
||||||
|
objectMetadataItem.nameSingular === objectNameSingular ||
|
||||||
|
objectMetadataItem.namePlural === objectNamePlural,
|
||||||
|
) ?? null
|
||||||
|
);
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
import { atom } from 'recoil';
|
||||||
|
|
||||||
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
|
|
||||||
|
export const objectMetadataItemsState = atom<ObjectMetadataItem[]>({
|
||||||
|
key: 'objectMetadataItemsState',
|
||||||
|
default: [],
|
||||||
|
});
|
||||||
@ -3,7 +3,7 @@ import { DateTime } from 'luxon';
|
|||||||
import { useRecoilState } from 'recoil';
|
import { useRecoilState } from 'recoil';
|
||||||
|
|
||||||
import { useFavorites } from '@/favorites/hooks/useFavorites';
|
import { useFavorites } from '@/favorites/hooks/useFavorites';
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition';
|
import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition';
|
||||||
import { filterAvailableFieldMetadataItem } from '@/object-record/utils/filterAvailableFieldMetadataItem';
|
import { filterAvailableFieldMetadataItem } from '@/object-record/utils/filterAvailableFieldMetadataItem';
|
||||||
import { IconBuildingSkyscraper } from '@/ui/display/icon';
|
import { IconBuildingSkyscraper } from '@/ui/display/icon';
|
||||||
@ -35,7 +35,7 @@ export const RecordShowPage = () => {
|
|||||||
objectMetadataId: string;
|
objectMetadataId: string;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const { foundObjectMetadataItem } = useFindOneObjectMetadataItem({
|
const { objectMetadataItem: foundObjectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import styled from '@emotion/styled';
|
|||||||
import { useRecoilCallback } from 'recoil';
|
import { useRecoilCallback } from 'recoil';
|
||||||
|
|
||||||
import { useComputeDefinitionsFromFieldMetadata } from '@/object-metadata/hooks/useComputeDefinitionsFromFieldMetadata';
|
import { useComputeDefinitionsFromFieldMetadata } from '@/object-metadata/hooks/useComputeDefinitionsFromFieldMetadata';
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { RecordTable } from '@/ui/object/record-table/components/RecordTable';
|
import { RecordTable } from '@/ui/object/record-table/components/RecordTable';
|
||||||
import { TableOptionsDropdownId } from '@/ui/object/record-table/constants/TableOptionsDropdownId';
|
import { TableOptionsDropdownId } from '@/ui/object/record-table/constants/TableOptionsDropdownId';
|
||||||
import { useRecordTable } from '@/ui/object/record-table/hooks/useRecordTable';
|
import { useRecordTable } from '@/ui/object/record-table/hooks/useRecordTable';
|
||||||
@ -32,7 +32,7 @@ export const RecordTableContainer = ({
|
|||||||
}: {
|
}: {
|
||||||
objectNamePlural: string;
|
objectNamePlural: string;
|
||||||
}) => {
|
}) => {
|
||||||
const { foundObjectMetadataItem } = useFindOneObjectMetadataItem({
|
const { objectMetadataItem: foundObjectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
const { columnDefinitions } = useComputeDefinitionsFromFieldMetadata(
|
const { columnDefinitions } = useComputeDefinitionsFromFieldMetadata(
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
|
||||||
import { useComputeDefinitionsFromFieldMetadata } from '@/object-metadata/hooks/useComputeDefinitionsFromFieldMetadata';
|
import { useComputeDefinitionsFromFieldMetadata } from '@/object-metadata/hooks/useComputeDefinitionsFromFieldMetadata';
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
|
||||||
import { useObjectMainIdentifier } from '@/object-metadata/hooks/useObjectMainIdentifier';
|
import { useObjectMainIdentifier } from '@/object-metadata/hooks/useObjectMainIdentifier';
|
||||||
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useRecordTableContextMenuEntries } from '@/object-record/hooks/useRecordTableContextMenuEntries';
|
import { useRecordTableContextMenuEntries } from '@/object-record/hooks/useRecordTableContextMenuEntries';
|
||||||
import { filterAvailableTableColumns } from '@/object-record/utils/filterAvailableTableColumns';
|
import { filterAvailableTableColumns } from '@/object-record/utils/filterAvailableTableColumns';
|
||||||
import { useRecordTable } from '@/ui/object/record-table/hooks/useRecordTable';
|
import { useRecordTable } from '@/ui/object/record-table/hooks/useRecordTable';
|
||||||
@ -17,7 +17,7 @@ export const RecordTableEffect = () => {
|
|||||||
setObjectMetadataConfig,
|
setObjectMetadataConfig,
|
||||||
} = useRecordTable();
|
} = useRecordTable();
|
||||||
|
|
||||||
const { foundObjectMetadataItem } = useFindOneObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -25,10 +25,10 @@ export const RecordTableEffect = () => {
|
|||||||
mainIdentifierMapper,
|
mainIdentifierMapper,
|
||||||
basePathToShowPage,
|
basePathToShowPage,
|
||||||
mainIdentifierFieldMetadataId,
|
mainIdentifierFieldMetadataId,
|
||||||
} = useObjectMainIdentifier(foundObjectMetadataItem);
|
} = useObjectMainIdentifier(objectMetadataItem);
|
||||||
|
|
||||||
const { columnDefinitions, filterDefinitions, sortDefinitions } =
|
const { columnDefinitions, filterDefinitions, sortDefinitions } =
|
||||||
useComputeDefinitionsFromFieldMetadata(foundObjectMetadataItem);
|
useComputeDefinitionsFromFieldMetadata(objectMetadataItem);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
setAvailableSortDefinitions,
|
setAvailableSortDefinitions,
|
||||||
@ -53,17 +53,17 @@ export const RecordTableEffect = () => {
|
|||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
basePathToShowPage,
|
basePathToShowPage,
|
||||||
foundObjectMetadataItem,
|
objectMetadataItem,
|
||||||
mainIdentifierFieldMetadataId,
|
mainIdentifierFieldMetadataId,
|
||||||
mainIdentifierMapper,
|
mainIdentifierMapper,
|
||||||
setObjectMetadataConfig,
|
setObjectMetadataConfig,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!foundObjectMetadataItem) {
|
if (!objectMetadataItem) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setViewObjectMetadataId?.(foundObjectMetadataItem.id);
|
setViewObjectMetadataId?.(objectMetadataItem.id);
|
||||||
setViewType?.(ViewType.Table);
|
setViewType?.(ViewType.Table);
|
||||||
|
|
||||||
setAvailableSortDefinitions?.(sortDefinitions);
|
setAvailableSortDefinitions?.(sortDefinitions);
|
||||||
@ -82,7 +82,7 @@ export const RecordTableEffect = () => {
|
|||||||
setAvailableSortDefinitions,
|
setAvailableSortDefinitions,
|
||||||
setAvailableFilterDefinitions,
|
setAvailableFilterDefinitions,
|
||||||
setAvailableFieldDefinitions,
|
setAvailableFieldDefinitions,
|
||||||
foundObjectMetadataItem,
|
objectMetadataItem,
|
||||||
sortDefinitions,
|
sortDefinitions,
|
||||||
filterDefinitions,
|
filterDefinitions,
|
||||||
setAvailableTableColumns,
|
setAvailableTableColumns,
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useEffect } from 'react';
|
|||||||
import { useNavigate, useParams } from 'react-router-dom';
|
import { useNavigate, useParams } from 'react-router-dom';
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { IconBuildingSkyscraper } from '@/ui/display/icon';
|
import { IconBuildingSkyscraper } from '@/ui/display/icon';
|
||||||
import { PageAddButton } from '@/ui/layout/page/PageAddButton';
|
import { PageAddButton } from '@/ui/layout/page/PageAddButton';
|
||||||
@ -31,26 +31,25 @@ export type RecordTablePageProps = Pick<
|
|||||||
export const RecordTablePage = () => {
|
export const RecordTablePage = () => {
|
||||||
const objectNamePlural = useParams().objectNamePlural ?? '';
|
const objectNamePlural = useParams().objectNamePlural ?? '';
|
||||||
|
|
||||||
const { objectNotFoundInMetadata, loading, foundObjectMetadataItem } =
|
const { objectNotFoundInMetadata, objectMetadataItem } =
|
||||||
useFindOneObjectMetadataItem({
|
useObjectMetadataItem({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!loading && objectNotFoundInMetadata) {
|
if (objectNotFoundInMetadata) {
|
||||||
navigate('/');
|
navigate('/');
|
||||||
}
|
}
|
||||||
}, [objectNotFoundInMetadata, loading, navigate]);
|
}, [objectNotFoundInMetadata, navigate]);
|
||||||
|
|
||||||
const { createOneObject } = useCreateOneObjectRecord({
|
const { createOneObject } = useCreateOneObjectRecord({
|
||||||
objectNameSingular: foundObjectMetadataItem?.nameSingular,
|
objectNameSingular: objectMetadataItem?.nameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
const handleAddButtonClick = async () => {
|
const handleAddButtonClick = async () => {
|
||||||
const createdObject = await createOneObject?.({});
|
await createOneObject?.({});
|
||||||
console.log(createdObject);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useMutation } from '@apollo/client';
|
|||||||
import { v4 } from 'uuid';
|
import { v4 } from 'uuid';
|
||||||
|
|
||||||
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
|
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { capitalize } from '~/utils/string/capitalize';
|
import { capitalize } from '~/utils/string/capitalize';
|
||||||
|
|
||||||
@ -14,10 +14,10 @@ export const useCreateOneObjectRecord = <T>({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const {
|
const {
|
||||||
foundObjectMetadataItem,
|
objectMetadataItem: foundObjectMetadataItem,
|
||||||
objectNotFoundInMetadata,
|
objectNotFoundInMetadata,
|
||||||
createOneMutation,
|
createOneMutation,
|
||||||
} = useFindOneObjectMetadataItem({
|
} = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useMutation } from '@apollo/client';
|
import { useMutation } from '@apollo/client';
|
||||||
import { getOperationName } from '@apollo/client/utilities';
|
import { getOperationName } from '@apollo/client/utilities';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { capitalize } from '~/utils/string/capitalize';
|
import { capitalize } from '~/utils/string/capitalize';
|
||||||
|
|
||||||
@ -9,11 +9,11 @@ export const useDeleteOneObjectRecord = <T>({
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
}: Pick<ObjectMetadataItemIdentifier, 'objectNameSingular'>) => {
|
}: Pick<ObjectMetadataItemIdentifier, 'objectNameSingular'>) => {
|
||||||
const {
|
const {
|
||||||
foundObjectMetadataItem,
|
objectMetadataItem: foundObjectMetadataItem,
|
||||||
objectNotFoundInMetadata,
|
objectNotFoundInMetadata,
|
||||||
findManyQuery,
|
findManyQuery,
|
||||||
deleteOneMutation,
|
deleteOneMutation,
|
||||||
} = useFindOneObjectMetadataItem({
|
} = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { isNonEmptyArray } from '@apollo/client/utilities';
|
|||||||
import { isNonEmptyString } from '@sniptt/guards';
|
import { isNonEmptyString } from '@sniptt/guards';
|
||||||
import { useRecoilState } from 'recoil';
|
import { useRecoilState } from 'recoil';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { useSnackBar } from '@/ui/feedback/snack-bar/hooks/useSnackBar';
|
import { useSnackBar } from '@/ui/feedback/snack-bar/hooks/useSnackBar';
|
||||||
import { logError } from '~/utils/logError';
|
import { logError } from '~/utils/logError';
|
||||||
@ -48,8 +48,8 @@ export const useFindManyObjectRecords = <
|
|||||||
isFetchingMoreObjectsFamilyState(objectNamePlural),
|
isFetchingMoreObjectsFamilyState(objectNamePlural),
|
||||||
);
|
);
|
||||||
|
|
||||||
const { foundObjectMetadataItem, objectNotFoundInMetadata, findManyQuery } =
|
const { objectMetadataItem: foundObjectMetadataItem, objectNotFoundInMetadata, findManyQuery } =
|
||||||
useFindOneObjectMetadataItem({
|
useObjectMetadataItem({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
skip,
|
skip,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { useQuery } from '@apollo/client';
|
import { useQuery } from '@apollo/client';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
|
|
||||||
export const useFindOneObjectRecord = <
|
export const useFindOneObjectRecord = <
|
||||||
@ -15,8 +15,8 @@ export const useFindOneObjectRecord = <
|
|||||||
onCompleted?: (data: ObjectType) => void;
|
onCompleted?: (data: ObjectType) => void;
|
||||||
skip?: boolean;
|
skip?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
const { foundObjectMetadataItem, objectNotFoundInMetadata, findOneQuery } =
|
const { objectMetadataItem: foundObjectMetadataItem, objectNotFoundInMetadata, findOneQuery } =
|
||||||
useFindOneObjectMetadataItem({
|
useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useRecoilValue } from 'recoil';
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
|
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { turnFiltersIntoWhereClauseV2 } from '@/ui/object/object-filter-dropdown/utils/turnFiltersIntoWhereClauseV2';
|
import { turnFiltersIntoWhereClauseV2 } from '@/ui/object/object-filter-dropdown/utils/turnFiltersIntoWhereClauseV2';
|
||||||
import { turnSortsIntoOrderByV2 } from '@/ui/object/object-sort-dropdown/utils/turnSortsIntoOrderByV2';
|
import { turnSortsIntoOrderByV2 } from '@/ui/object/object-sort-dropdown/utils/turnSortsIntoOrderByV2';
|
||||||
import { useRecordTableScopedStates } from '@/ui/object/record-table/hooks/internal/useRecordTableScopedStates';
|
import { useRecordTableScopedStates } from '@/ui/object/record-table/hooks/internal/useRecordTableScopedStates';
|
||||||
@ -14,7 +14,7 @@ import { useFindManyObjectRecords } from './useFindManyObjectRecords';
|
|||||||
export const useObjectRecordTable = () => {
|
export const useObjectRecordTable = () => {
|
||||||
const { scopeId: objectNamePlural } = useRecordTable();
|
const { scopeId: objectNamePlural } = useRecordTable();
|
||||||
|
|
||||||
const { foundObjectMetadataItem } = useFindOneObjectMetadataItem({
|
const { objectMetadataItem: foundObjectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { isNonEmptyString } from '@sniptt/guards';
|
|||||||
import { useRecoilCallback, useRecoilValue, useSetRecoilState } from 'recoil';
|
import { useRecoilCallback, useRecoilValue, useSetRecoilState } from 'recoil';
|
||||||
|
|
||||||
import { useFavorites } from '@/favorites/hooks/useFavorites';
|
import { useFavorites } from '@/favorites/hooks/useFavorites';
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useDeleteOneObjectRecord } from '@/object-record/hooks/useDeleteOneObjectRecord';
|
import { useDeleteOneObjectRecord } from '@/object-record/hooks/useDeleteOneObjectRecord';
|
||||||
import {
|
import {
|
||||||
IconCheckbox,
|
IconCheckbox,
|
||||||
@ -29,7 +29,7 @@ export const useRecordTableContextMenuEntries = () => {
|
|||||||
const { scopeId: objectNamePlural, resetTableRowSelection } =
|
const { scopeId: objectNamePlural, resetTableRowSelection } =
|
||||||
useRecordTable();
|
useRecordTable();
|
||||||
|
|
||||||
const { foundObjectMetadataItem } = useFindOneObjectMetadataItem({
|
const { objectMetadataItem: foundObjectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { useMutation } from '@apollo/client';
|
import { useMutation } from '@apollo/client';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { capitalize } from '~/utils/string/capitalize';
|
import { capitalize } from '~/utils/string/capitalize';
|
||||||
|
|
||||||
@ -8,10 +8,10 @@ export const useUpdateOneObjectRecord = <T>({
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
}: Pick<ObjectMetadataItemIdentifier, 'objectNameSingular'>) => {
|
}: Pick<ObjectMetadataItemIdentifier, 'objectNameSingular'>) => {
|
||||||
const {
|
const {
|
||||||
foundObjectMetadataItem,
|
objectMetadataItem: foundObjectMetadataItem,
|
||||||
objectNotFoundInMetadata,
|
objectNotFoundInMetadata,
|
||||||
updateOneMutation,
|
updateOneMutation,
|
||||||
} = useFindOneObjectMetadataItem({
|
} = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { gql } from '@apollo/client';
|
import { gql } from '@apollo/client';
|
||||||
|
|
||||||
import { EMPTY_MUTATION } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
|
||||||
import { useMapFieldMetadataToGraphQLQuery } from '@/object-metadata/hooks/useMapFieldMetadataToGraphQLQuery';
|
import { useMapFieldMetadataToGraphQLQuery } from '@/object-metadata/hooks/useMapFieldMetadataToGraphQLQuery';
|
||||||
|
import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { capitalize } from '~/utils/string/capitalize';
|
import { capitalize } from '~/utils/string/capitalize';
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ export const useGenerateCreateOneObjectMutation = ({
|
|||||||
create${capitalizedObjectName}(data: $input) {
|
create${capitalizedObjectName}(data: $input) {
|
||||||
id
|
id
|
||||||
${objectMetadataItem.fields
|
${objectMetadataItem.fields
|
||||||
.map(mapFieldMetadataToGraphQLQuery)
|
.map((field) => mapFieldMetadataToGraphQLQuery(field))
|
||||||
.join('\n')}
|
.join('\n')}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { gql } from '@apollo/client';
|
import { gql } from '@apollo/client';
|
||||||
|
|
||||||
import { EMPTY_MUTATION } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { capitalize } from '~/utils/string/capitalize';
|
import { capitalize } from '~/utils/string/capitalize';
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { gql } from '@apollo/client';
|
import { gql } from '@apollo/client';
|
||||||
|
|
||||||
import { EMPTY_QUERY } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
|
||||||
import { useMapFieldMetadataToGraphQLQuery } from '@/object-metadata/hooks/useMapFieldMetadataToGraphQLQuery';
|
import { useMapFieldMetadataToGraphQLQuery } from '@/object-metadata/hooks/useMapFieldMetadataToGraphQLQuery';
|
||||||
|
import { EMPTY_QUERY } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { capitalize } from '~/utils/string/capitalize';
|
import { capitalize } from '~/utils/string/capitalize';
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { gql } from '@apollo/client';
|
import { gql } from '@apollo/client';
|
||||||
|
|
||||||
import { EMPTY_QUERY } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
|
||||||
import { useMapFieldMetadataToGraphQLQuery } from '@/object-metadata/hooks/useMapFieldMetadataToGraphQLQuery';
|
import { useMapFieldMetadataToGraphQLQuery } from '@/object-metadata/hooks/useMapFieldMetadataToGraphQLQuery';
|
||||||
|
import { EMPTY_QUERY } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
|
|
||||||
export const useGenerateFindOneCustomObjectQuery = ({
|
export const useGenerateFindOneCustomObjectQuery = ({
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { gql } from '@apollo/client';
|
import { gql } from '@apollo/client';
|
||||||
|
|
||||||
import { EMPTY_MUTATION } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
|
||||||
import { useMapFieldMetadataToGraphQLQuery } from '@/object-metadata/hooks/useMapFieldMetadataToGraphQLQuery';
|
import { useMapFieldMetadataToGraphQLQuery } from '@/object-metadata/hooks/useMapFieldMetadataToGraphQLQuery';
|
||||||
|
import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { capitalize } from '~/utils/string/capitalize';
|
import { capitalize } from '~/utils/string/capitalize';
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ export const useGenerateUpdateOneObjectMutation = ({
|
|||||||
${graphQLFieldForUpdateOneObjectMutation}(id: $idToUpdate, data: $input) {
|
${graphQLFieldForUpdateOneObjectMutation}(id: $idToUpdate, data: $input) {
|
||||||
id
|
id
|
||||||
${objectMetadataItem.fields
|
${objectMetadataItem.fields
|
||||||
.map(mapFieldMetadataToGraphQLQuery)
|
.map((field) => mapFieldMetadataToGraphQLQuery(field))
|
||||||
.join('\n')}
|
.join('\n')}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { useQuery } from '@apollo/client';
|
import { useQuery } from '@apollo/client';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useFilteredSearchEntityQuery } from '@/search/hooks/useFilteredSearchEntityQuery';
|
import { useFilteredSearchEntityQuery } from '@/search/hooks/useFilteredSearchEntityQuery';
|
||||||
import { IconUserCircle } from '@/ui/display/icon';
|
import { IconUserCircle } from '@/ui/display/icon';
|
||||||
import { SingleEntitySelect } from '@/ui/input/relation-picker/components/SingleEntitySelect';
|
import { SingleEntitySelect } from '@/ui/input/relation-picker/components/SingleEntitySelect';
|
||||||
@ -35,7 +35,7 @@ export const RelationPicker = ({
|
|||||||
setRelationPickerSearchFilter(initialSearchFilter ?? '');
|
setRelationPickerSearchFilter(initialSearchFilter ?? '');
|
||||||
}, [initialSearchFilter, setRelationPickerSearchFilter]);
|
}, [initialSearchFilter, setRelationPickerSearchFilter]);
|
||||||
|
|
||||||
const { findManyQuery } = useFindOneObjectMetadataItem({
|
const { findManyQuery } = useObjectMetadataItem({
|
||||||
objectNameSingular: fieldDefinition.metadata.objectMetadataNameSingular,
|
objectNameSingular: fieldDefinition.metadata.objectMetadataNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useEffect } from 'react';
|
|||||||
import { useInView } from 'react-intersection-observer';
|
import { useInView } from 'react-intersection-observer';
|
||||||
import { useRecoilState, useRecoilValue } from 'recoil';
|
import { useRecoilState, useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectRecordTable } from '@/object-record/hooks/useObjectRecordTable';
|
import { useObjectRecordTable } from '@/object-record/hooks/useObjectRecordTable';
|
||||||
import { isFetchingMoreObjectsFamilyState } from '@/object-record/states/isFetchingMoreObjectsFamilyState';
|
import { isFetchingMoreObjectsFamilyState } from '@/object-record/states/isFetchingMoreObjectsFamilyState';
|
||||||
import { isDefined } from '~/utils/isDefined';
|
import { isDefined } from '~/utils/isDefined';
|
||||||
@ -22,7 +22,7 @@ export const RecordTableBody = () => {
|
|||||||
|
|
||||||
const { scopeId: objectNamePlural } = useRecordTable();
|
const { scopeId: objectNamePlural } = useRecordTable();
|
||||||
|
|
||||||
const { foundObjectMetadataItem } = useFindOneObjectMetadataItem({
|
const { objectMetadataItem: foundObjectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { useQuery } from '@apollo/client';
|
import { useQuery } from '@apollo/client';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useFilteredSearchEntityQuery } from '@/search/hooks/useFilteredSearchEntityQuery';
|
import { useFilteredSearchEntityQuery } from '@/search/hooks/useFilteredSearchEntityQuery';
|
||||||
import { ObjectFilterDropdownEntitySearchSelect } from '@/ui/object/object-filter-dropdown/components/ObjectFilterDropdownEntitySearchSelect';
|
import { ObjectFilterDropdownEntitySearchSelect } from '@/ui/object/object-filter-dropdown/components/ObjectFilterDropdownEntitySearchSelect';
|
||||||
import { useFilter } from '@/ui/object/object-filter-dropdown/hooks/useFilter';
|
import { useFilter } from '@/ui/object/object-filter-dropdown/hooks/useFilter';
|
||||||
@ -11,7 +11,7 @@ export const FilterDropdownUserSearchSelect = () => {
|
|||||||
objectFilterDropdownSelectedEntityId,
|
objectFilterDropdownSelectedEntityId,
|
||||||
} = useFilter();
|
} = useFilter();
|
||||||
|
|
||||||
const { findManyQuery } = useFindOneObjectMetadataItem({
|
const { findManyQuery } = useObjectMetadataItem({
|
||||||
objectNameSingular: 'workspaceMember',
|
objectNameSingular: 'workspaceMember',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
import { useApolloClient } from '@apollo/client';
|
||||||
import { useRecoilCallback } from 'recoil';
|
import { useRecoilCallback } from 'recoil';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ViewField } from '@/views/types/ViewField';
|
import { ViewField } from '@/views/types/ViewField';
|
||||||
import { getViewScopedStateValuesFromSnapshot } from '@/views/utils/getViewScopedStateValuesFromSnapshot';
|
import { getViewScopedStateValuesFromSnapshot } from '@/views/utils/getViewScopedStateValuesFromSnapshot';
|
||||||
|
|
||||||
export const useViewFields = (viewScopeId: string) => {
|
export const useViewFields = (viewScopeId: string) => {
|
||||||
const { updateOneMutation, createOneMutation, findManyQuery } =
|
const { updateOneMutation, createOneMutation, findManyQuery } =
|
||||||
useFindOneObjectMetadataItem({
|
useObjectMetadataItem({
|
||||||
objectNameSingular: 'viewField',
|
objectNameSingular: 'viewField',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useApolloClient } from '@apollo/client';
|
|||||||
import { produce } from 'immer';
|
import { produce } from 'immer';
|
||||||
import { useRecoilCallback } from 'recoil';
|
import { useRecoilCallback } from 'recoil';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { Filter } from '@/ui/object/object-filter-dropdown/types/Filter';
|
import { Filter } from '@/ui/object/object-filter-dropdown/types/Filter';
|
||||||
import { savedViewFiltersScopedFamilyState } from '@/views/states/savedViewFiltersScopedFamilyState';
|
import { savedViewFiltersScopedFamilyState } from '@/views/states/savedViewFiltersScopedFamilyState';
|
||||||
import { ViewFilter } from '@/views/types/ViewFilter';
|
import { ViewFilter } from '@/views/types/ViewFilter';
|
||||||
@ -16,7 +16,7 @@ export const useViewFilters = (viewScopeId: string) => {
|
|||||||
createOneMutation,
|
createOneMutation,
|
||||||
deleteOneMutation,
|
deleteOneMutation,
|
||||||
findManyQuery,
|
findManyQuery,
|
||||||
} = useFindOneObjectMetadataItem({
|
} = useObjectMetadataItem({
|
||||||
objectNameSingular: 'viewFilter',
|
objectNameSingular: 'viewFilter',
|
||||||
});
|
});
|
||||||
const apolloClient = useApolloClient();
|
const apolloClient = useApolloClient();
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useApolloClient } from '@apollo/client';
|
|||||||
import { produce } from 'immer';
|
import { produce } from 'immer';
|
||||||
import { useRecoilCallback } from 'recoil';
|
import { useRecoilCallback } from 'recoil';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { Sort } from '@/ui/object/object-sort-dropdown/types/Sort';
|
import { Sort } from '@/ui/object/object-sort-dropdown/types/Sort';
|
||||||
import { savedViewSortsScopedFamilyState } from '@/views/states/savedViewSortsScopedFamilyState';
|
import { savedViewSortsScopedFamilyState } from '@/views/states/savedViewSortsScopedFamilyState';
|
||||||
import { ViewSort } from '@/views/types/ViewSort';
|
import { ViewSort } from '@/views/types/ViewSort';
|
||||||
@ -16,7 +16,7 @@ export const useViewSorts = (viewScopeId: string) => {
|
|||||||
createOneMutation,
|
createOneMutation,
|
||||||
deleteOneMutation,
|
deleteOneMutation,
|
||||||
findManyQuery,
|
findManyQuery,
|
||||||
} = useFindOneObjectMetadataItem({
|
} = useObjectMetadataItem({
|
||||||
objectNameSingular: 'viewSort',
|
objectNameSingular: 'viewSort',
|
||||||
});
|
});
|
||||||
const apolloClient = useApolloClient();
|
const apolloClient = useApolloClient();
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
import { useApolloClient } from '@apollo/client';
|
||||||
import { useRecoilCallback } from 'recoil';
|
import { useRecoilCallback } from 'recoil';
|
||||||
|
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { View } from '@/views/types/View';
|
import { View } from '@/views/types/View';
|
||||||
import { getViewScopedStateValuesFromSnapshot } from '@/views/utils/getViewScopedStateValuesFromSnapshot';
|
import { getViewScopedStateValuesFromSnapshot } from '@/views/utils/getViewScopedStateValuesFromSnapshot';
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ export const useViews = (scopeId: string) => {
|
|||||||
createOneMutation,
|
createOneMutation,
|
||||||
deleteOneMutation,
|
deleteOneMutation,
|
||||||
findManyQuery,
|
findManyQuery,
|
||||||
} = useFindOneObjectMetadataItem({
|
} = useObjectMetadataItem({
|
||||||
objectNameSingular: 'view',
|
objectNameSingular: 'view',
|
||||||
});
|
});
|
||||||
const apolloClient = useApolloClient();
|
const apolloClient = useApolloClient();
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import styled from '@emotion/styled';
|
|||||||
|
|
||||||
import { CompanyBoard } from '@/companies/board/components/CompanyBoard';
|
import { CompanyBoard } from '@/companies/board/components/CompanyBoard';
|
||||||
import { CompanyBoardRecoilScopeContext } from '@/companies/states/recoil-scope-contexts/CompanyBoardRecoilScopeContext';
|
import { CompanyBoardRecoilScopeContext } from '@/companies/states/recoil-scope-contexts/CompanyBoardRecoilScopeContext';
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useUpdateOneObjectRecord } from '@/object-record/hooks/useUpdateOneObjectRecord';
|
import { useUpdateOneObjectRecord } from '@/object-record/hooks/useUpdateOneObjectRecord';
|
||||||
import { PipelineAddButton } from '@/pipeline/components/PipelineAddButton';
|
import { PipelineAddButton } from '@/pipeline/components/PipelineAddButton';
|
||||||
import { usePipelineStages } from '@/pipeline/hooks/usePipelineStages';
|
import { usePipelineStages } from '@/pipeline/hooks/usePipelineStages';
|
||||||
@ -45,9 +45,9 @@ export const Opportunities = () => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const opportunitiesV2MetadataId = useFindOneObjectMetadataItem({
|
const opportunitiesV2MetadataId = useObjectMetadataItem({
|
||||||
objectNameSingular: 'opportunity',
|
objectNameSingular: 'opportunity',
|
||||||
}).foundObjectMetadataItem?.id;
|
}).objectMetadataItem?.id;
|
||||||
|
|
||||||
const { setViewObjectMetadataId } = useView({
|
const { setViewObjectMetadataId } = useView({
|
||||||
viewScopeId: 'company-board-view',
|
viewScopeId: 'company-board-view',
|
||||||
|
|||||||
@ -34,19 +34,15 @@ export const SettingsObjectDetail = () => {
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const { objectSlug = '' } = useParams();
|
const { objectSlug = '' } = useParams();
|
||||||
const {
|
const { disableObjectMetadataItem, findActiveObjectMetadataItemBySlug } =
|
||||||
disableObjectMetadataItem,
|
useObjectMetadataItemForSettings();
|
||||||
findActiveObjectMetadataItemBySlug,
|
|
||||||
loading,
|
|
||||||
} = useObjectMetadataItemForSettings();
|
|
||||||
|
|
||||||
const activeObjectMetadataItem =
|
const activeObjectMetadataItem =
|
||||||
findActiveObjectMetadataItemBySlug(objectSlug);
|
findActiveObjectMetadataItemBySlug(objectSlug);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (loading) return;
|
|
||||||
if (!activeObjectMetadataItem) navigate(AppPath.NotFound);
|
if (!activeObjectMetadataItem) navigate(AppPath.NotFound);
|
||||||
}, [activeObjectMetadataItem, loading, navigate]);
|
}, [activeObjectMetadataItem, navigate]);
|
||||||
|
|
||||||
const { activateMetadataField, disableMetadataField, eraseMetadataField } =
|
const { activateMetadataField, disableMetadataField, eraseMetadataField } =
|
||||||
useFieldMetadataItem();
|
useFieldMetadataItem();
|
||||||
|
|||||||
@ -24,7 +24,6 @@ export const SettingsObjectEdit = () => {
|
|||||||
disableObjectMetadataItem,
|
disableObjectMetadataItem,
|
||||||
editObjectMetadataItem,
|
editObjectMetadataItem,
|
||||||
findActiveObjectMetadataItemBySlug,
|
findActiveObjectMetadataItemBySlug,
|
||||||
loading,
|
|
||||||
} = useObjectMetadataItemForSettings();
|
} = useObjectMetadataItemForSettings();
|
||||||
|
|
||||||
const activeObjectMetadataItem =
|
const activeObjectMetadataItem =
|
||||||
@ -40,8 +39,6 @@ export const SettingsObjectEdit = () => {
|
|||||||
>({});
|
>({});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (loading) return;
|
|
||||||
|
|
||||||
if (!activeObjectMetadataItem) {
|
if (!activeObjectMetadataItem) {
|
||||||
navigate(AppPath.NotFound);
|
navigate(AppPath.NotFound);
|
||||||
return;
|
return;
|
||||||
@ -55,7 +52,7 @@ export const SettingsObjectEdit = () => {
|
|||||||
description: activeObjectMetadataItem.description ?? undefined,
|
description: activeObjectMetadataItem.description ?? undefined,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, [activeObjectMetadataItem, formValues, loading, navigate]);
|
}, [activeObjectMetadataItem, formValues, navigate]);
|
||||||
|
|
||||||
if (!activeObjectMetadataItem) return null;
|
if (!activeObjectMetadataItem) return null;
|
||||||
|
|
||||||
|
|||||||
@ -24,7 +24,7 @@ export const SettingsObjectFieldEdit = () => {
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const { objectSlug = '', fieldSlug = '' } = useParams();
|
const { objectSlug = '', fieldSlug = '' } = useParams();
|
||||||
const { findActiveObjectMetadataItemBySlug, loading } =
|
const { findActiveObjectMetadataItemBySlug } =
|
||||||
useObjectMetadataItemForSettings();
|
useObjectMetadataItemForSettings();
|
||||||
|
|
||||||
const activeObjectMetadataItem =
|
const activeObjectMetadataItem =
|
||||||
@ -54,8 +54,6 @@ export const SettingsObjectFieldEdit = () => {
|
|||||||
} = useFieldMetadataForm();
|
} = useFieldMetadataForm();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (loading) return;
|
|
||||||
|
|
||||||
if (!activeObjectMetadataItem || !activeMetadataField) {
|
if (!activeObjectMetadataItem || !activeMetadataField) {
|
||||||
navigate(AppPath.NotFound);
|
navigate(AppPath.NotFound);
|
||||||
return;
|
return;
|
||||||
@ -79,7 +77,6 @@ export const SettingsObjectFieldEdit = () => {
|
|||||||
activeMetadataField,
|
activeMetadataField,
|
||||||
activeObjectMetadataItem,
|
activeObjectMetadataItem,
|
||||||
initForm,
|
initForm,
|
||||||
loading,
|
|
||||||
navigate,
|
navigate,
|
||||||
relationFieldMetadataItem?.icon,
|
relationFieldMetadataItem?.icon,
|
||||||
relationFieldMetadataItem?.label,
|
relationFieldMetadataItem?.label,
|
||||||
|
|||||||
@ -37,7 +37,7 @@ export const SettingsObjectNewFieldStep1 = () => {
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const { objectSlug = '' } = useParams();
|
const { objectSlug = '' } = useParams();
|
||||||
const { findActiveObjectMetadataItemBySlug, loading } =
|
const { findActiveObjectMetadataItemBySlug } =
|
||||||
useObjectMetadataItemForSettings();
|
useObjectMetadataItemForSettings();
|
||||||
|
|
||||||
const activeObjectMetadataItem =
|
const activeObjectMetadataItem =
|
||||||
@ -60,8 +60,6 @@ export const SettingsObjectNewFieldStep1 = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (loading) return;
|
|
||||||
|
|
||||||
if (!activeObjectMetadataItem) {
|
if (!activeObjectMetadataItem) {
|
||||||
navigate(AppPath.NotFound);
|
navigate(AppPath.NotFound);
|
||||||
return;
|
return;
|
||||||
@ -69,7 +67,7 @@ export const SettingsObjectNewFieldStep1 = () => {
|
|||||||
|
|
||||||
if (!metadataFields.length)
|
if (!metadataFields.length)
|
||||||
setMetadataFields(activeObjectMetadataItem.fields);
|
setMetadataFields(activeObjectMetadataItem.fields);
|
||||||
}, [activeObjectMetadataItem, metadataFields.length, loading, navigate]);
|
}, [activeObjectMetadataItem, metadataFields.length, navigate]);
|
||||||
|
|
||||||
if (!activeObjectMetadataItem) return null;
|
if (!activeObjectMetadataItem) return null;
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,6 @@ export const SettingsObjectNewFieldStep2 = () => {
|
|||||||
findActiveObjectMetadataItemBySlug,
|
findActiveObjectMetadataItemBySlug,
|
||||||
findObjectMetadataItemById,
|
findObjectMetadataItemById,
|
||||||
findObjectMetadataItemByNamePlural,
|
findObjectMetadataItemByNamePlural,
|
||||||
loading,
|
|
||||||
} = useObjectMetadataItemForSettings();
|
} = useObjectMetadataItemForSettings();
|
||||||
|
|
||||||
const activeObjectMetadataItem =
|
const activeObjectMetadataItem =
|
||||||
@ -45,7 +44,6 @@ export const SettingsObjectNewFieldStep2 = () => {
|
|||||||
} = useFieldMetadataForm();
|
} = useFieldMetadataForm();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (loading) return;
|
|
||||||
if (!activeObjectMetadataItem) {
|
if (!activeObjectMetadataItem) {
|
||||||
navigate(AppPath.NotFound);
|
navigate(AppPath.NotFound);
|
||||||
return;
|
return;
|
||||||
@ -61,7 +59,7 @@ export const SettingsObjectNewFieldStep2 = () => {
|
|||||||
activeObjectMetadataItem,
|
activeObjectMetadataItem,
|
||||||
findObjectMetadataItemByNamePlural,
|
findObjectMetadataItemByNamePlural,
|
||||||
initForm,
|
initForm,
|
||||||
loading,
|
|
||||||
navigate,
|
navigate,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useNavigate } from 'react-router-dom';
|
|||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
|
|
||||||
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
|
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
|
||||||
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { getRecordOptimisticEffectDefinition } from '@/object-record/graphql/optimistic-effect-definition/getRecordOptimisticEffectDefinition';
|
import { getRecordOptimisticEffectDefinition } from '@/object-record/graphql/optimistic-effect-definition/getRecordOptimisticEffectDefinition';
|
||||||
import { useFindManyObjectRecords } from '@/object-record/hooks/useFindManyObjectRecords';
|
import { useFindManyObjectRecords } from '@/object-record/hooks/useFindManyObjectRecords';
|
||||||
import { objectSettingsWidth } from '@/settings/data-model/constants/objectSettings';
|
import { objectSettingsWidth } from '@/settings/data-model/constants/objectSettings';
|
||||||
@ -47,7 +47,7 @@ export const SettingsDevelopersApiKeys = () => {
|
|||||||
const { registerOptimisticEffect } = useOptimisticEffect({
|
const { registerOptimisticEffect } = useOptimisticEffect({
|
||||||
objectNameSingular: 'apiKey',
|
objectNameSingular: 'apiKey',
|
||||||
});
|
});
|
||||||
const { foundObjectMetadataItem } = useFindOneObjectMetadataItem({
|
const { objectMetadataItem: foundObjectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular: 'apiKey',
|
objectNameSingular: 'apiKey',
|
||||||
});
|
});
|
||||||
const filter = { revokedAt: { is: 'NULL' } };
|
const filter = { revokedAt: { is: 'NULL' } };
|
||||||
|
|||||||
@ -274,7 +274,7 @@ export const seedPersonFieldMetadata = async (
|
|||||||
targetColumnMap: {},
|
targetColumnMap: {},
|
||||||
description: 'Contact’s company',
|
description: 'Contact’s company',
|
||||||
icon: 'IconBuildingSkyscraper',
|
icon: 'IconBuildingSkyscraper',
|
||||||
isNullable: false,
|
isNullable: true,
|
||||||
isSystem: false,
|
isSystem: false,
|
||||||
defaultValue: undefined,
|
defaultValue: undefined,
|
||||||
},
|
},
|
||||||
@ -290,7 +290,7 @@ export const seedPersonFieldMetadata = async (
|
|||||||
targetColumnMap: {},
|
targetColumnMap: {},
|
||||||
description: 'Foreign key for company',
|
description: 'Foreign key for company',
|
||||||
icon: undefined,
|
icon: undefined,
|
||||||
isNullable: false,
|
isNullable: true,
|
||||||
isSystem: true,
|
isSystem: true,
|
||||||
defaultValue: undefined,
|
defaultValue: undefined,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -128,7 +128,7 @@ const personMetadata = {
|
|||||||
targetColumnMap: {},
|
targetColumnMap: {},
|
||||||
description: 'Contact’s company',
|
description: 'Contact’s company',
|
||||||
icon: 'IconBuildingSkyscraper',
|
icon: 'IconBuildingSkyscraper',
|
||||||
isNullable: false,
|
isNullable: true,
|
||||||
isSystem: false,
|
isSystem: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -140,7 +140,7 @@ const personMetadata = {
|
|||||||
targetColumnMap: {},
|
targetColumnMap: {},
|
||||||
description: 'Foreign key for company',
|
description: 'Foreign key for company',
|
||||||
icon: undefined,
|
icon: undefined,
|
||||||
isNullable: false,
|
isNullable: true,
|
||||||
isSystem: true,
|
isSystem: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user