Introduce ComponentState (#4386)
* Proof of concept ComponentState * Migrate to createState and createFamilyState * Refactor * Fix * Fix tests * Fix lint * Fix tests * Re-enable coverage
This commit is contained in:
@ -13,7 +13,7 @@ export const ApolloMetadataClientProvider = ({
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) => {
|
||||
const [tokenPair] = useRecoilState(tokenPairState);
|
||||
const [tokenPair] = useRecoilState(tokenPairState());
|
||||
const apolloMetadataClient = useMemo(() => {
|
||||
if (isNonEmptyString(tokenPair?.accessToken.token)) {
|
||||
return new ApolloClient({
|
||||
|
||||
@ -10,7 +10,7 @@ export const ObjectMetadataItemsLoadEffect = () => {
|
||||
useFindManyObjectMetadataItems();
|
||||
|
||||
const [objectMetadataItems, setObjectMetadataItems] = useRecoilState(
|
||||
objectMetadataItemsState,
|
||||
objectMetadataItemsState(),
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@ -9,8 +9,8 @@ import { RelationPickerScope } from '@/object-record/relation-picker/scopes/Rela
|
||||
export const ObjectMetadataItemsProvider = ({
|
||||
children,
|
||||
}: React.PropsWithChildren) => {
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
|
||||
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState());
|
||||
const shouldDisplayChildren = () => {
|
||||
if (objectMetadataItems.length > 0) {
|
||||
return true;
|
||||
|
||||
@ -12,7 +12,7 @@ describe('useFilterOutUnexistingObjectMetadataItems', () => {
|
||||
it('should work as expected', async () => {
|
||||
const { result } = renderHook(
|
||||
() => {
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState);
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState());
|
||||
|
||||
setMetadataItems(mockObjectMetadataItems.slice(1));
|
||||
return useFilterOutUnexistingObjectMetadataItems();
|
||||
|
||||
@ -17,7 +17,7 @@ describe('useGetObjectRecordIdentifierByNameSingular', () => {
|
||||
record: any;
|
||||
objectNameSingular: string;
|
||||
}) => {
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState);
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState());
|
||||
|
||||
setMetadataItems(mockObjectMetadataItems);
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ describe('useGetRelationMetadata', () => {
|
||||
|
||||
const { result } = renderHook(
|
||||
() => {
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState);
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState());
|
||||
|
||||
useEffect(() => {
|
||||
setMetadataItems(objectMetadataItems);
|
||||
|
||||
@ -127,7 +127,7 @@ describe('useMapFieldMetadataToGraphQLQuery', () => {
|
||||
it('should work as expected', async () => {
|
||||
const { result } = renderHook(
|
||||
() => {
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState);
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState());
|
||||
setMetadataItems(mockObjectMetadataItems);
|
||||
|
||||
return {
|
||||
|
||||
@ -44,7 +44,7 @@ describe('useObjectMetadataItemForSettings', () => {
|
||||
it('should findActiveObjectMetadataItemBySlug', async () => {
|
||||
const { result } = renderHook(
|
||||
() => {
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState);
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState());
|
||||
setMetadataItems(mockObjectMetadataItems);
|
||||
|
||||
return useObjectMetadataItemForSettings();
|
||||
@ -64,7 +64,7 @@ describe('useObjectMetadataItemForSettings', () => {
|
||||
it('should findObjectMetadataItemById', async () => {
|
||||
const { result } = renderHook(
|
||||
() => {
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState);
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState());
|
||||
setMetadataItems(mockObjectMetadataItems);
|
||||
|
||||
return useObjectMetadataItemForSettings();
|
||||
@ -86,7 +86,7 @@ describe('useObjectMetadataItemForSettings', () => {
|
||||
it('should findObjectMetadataItemByNamePlural', async () => {
|
||||
const { result } = renderHook(
|
||||
() => {
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState);
|
||||
const setMetadataItems = useSetRecoilState(objectMetadataItemsState());
|
||||
setMetadataItems(mockObjectMetadataItems);
|
||||
|
||||
return useObjectMetadataItemForSettings();
|
||||
|
||||
@ -5,7 +5,7 @@ import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectReco
|
||||
import { ObjectRecordIdentifier } from '@/object-record/types/ObjectRecordIdentifier';
|
||||
|
||||
export const useGetObjectRecordIdentifierByNameSingular = () => {
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
|
||||
|
||||
return (record: any, objectNameSingular: string): ObjectRecordIdentifier => {
|
||||
const objectMetadataItem = objectMetadataItems.find(
|
||||
|
||||
@ -6,7 +6,7 @@ import { FieldType } from '@/object-record/record-field/types/FieldType';
|
||||
import { FieldMetadataItem } from '../types/FieldMetadataItem';
|
||||
|
||||
export const useMapFieldMetadataToGraphQLQuery = () => {
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
|
||||
|
||||
const mapFieldMetadataToGraphQLQuery = ({
|
||||
field,
|
||||
|
||||
@ -41,7 +41,7 @@ export const useObjectMetadataItem = (
|
||||
{ objectNameSingular }: ObjectMetadataItemIdentifier,
|
||||
depth?: number,
|
||||
) => {
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState());
|
||||
|
||||
const mockObjectMetadataItems = getObjectMetadataItemsMock();
|
||||
|
||||
@ -52,7 +52,7 @@ export const useObjectMetadataItem = (
|
||||
}),
|
||||
);
|
||||
|
||||
let objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
let objectMetadataItems = useRecoilValue(objectMetadataItemsState());
|
||||
|
||||
if (currentWorkspace?.activationStatus !== 'active') {
|
||||
objectMetadataItem =
|
||||
|
||||
@ -5,7 +5,7 @@ import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadat
|
||||
import { getObjectSlug } from '../utils/getObjectSlug';
|
||||
|
||||
export const useObjectMetadataItemForSettings = () => {
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
|
||||
|
||||
const activeObjectMetadataItems = objectMetadataItems.filter(
|
||||
({ isActive, isSystem }) => isActive && !isSystem,
|
||||
|
||||
@ -12,7 +12,7 @@ import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentif
|
||||
export const useObjectMetadataItemOnly = ({
|
||||
objectNameSingular,
|
||||
}: ObjectMetadataItemIdentifier) => {
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState());
|
||||
|
||||
const mockObjectMetadataItems = getObjectMetadataItemsMock();
|
||||
|
||||
@ -23,7 +23,7 @@ export const useObjectMetadataItemOnly = ({
|
||||
}),
|
||||
);
|
||||
|
||||
let objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
let objectMetadataItems = useRecoilValue(objectMetadataItemsState());
|
||||
|
||||
if (currentWorkspace?.activationStatus !== 'active') {
|
||||
objectMetadataItem =
|
||||
|
||||
@ -3,7 +3,7 @@ import { useRecoilValue } from 'recoil';
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
|
||||
export const useObjectMetadataItems = () => {
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
|
||||
|
||||
return {
|
||||
objectMetadataItems,
|
||||
|
||||
@ -10,7 +10,7 @@ export const useObjectNamePluralFromSingular = ({
|
||||
}: {
|
||||
objectNameSingular: string;
|
||||
}) => {
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState());
|
||||
const mockObjectMetadataItems = getObjectMetadataItemsMock();
|
||||
|
||||
let objectMetadataItem = useRecoilValue(
|
||||
|
||||
@ -10,7 +10,7 @@ export const useObjectNameSingularFromPlural = ({
|
||||
}: {
|
||||
objectNamePlural: string;
|
||||
}) => {
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState());
|
||||
|
||||
const mockObjectMetadataItems = getObjectMetadataItemsMock();
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ export const objectMetadataItemFamilySelector = selectorFamily<
|
||||
get:
|
||||
({ objectNameType, objectName }: ObjectMetadataItemSelector) =>
|
||||
({ get }) => {
|
||||
const objectMetadataItems = get(objectMetadataItemsState);
|
||||
const objectMetadataItems = get(objectMetadataItemsState());
|
||||
|
||||
if (objectNameType === 'singular') {
|
||||
return (
|
||||
|
||||
@ -8,7 +8,7 @@ export const objectMetadataItemsByNamePluralMapSelector = selector<
|
||||
>({
|
||||
key: 'objectMetadataItemsByNamePluralMapSelector',
|
||||
get: ({ get }) => {
|
||||
const objectMetadataItems = get(objectMetadataItemsState);
|
||||
const objectMetadataItems = get(objectMetadataItemsState());
|
||||
|
||||
return new Map(
|
||||
objectMetadataItems.map((objectMetadataItem) => [
|
||||
|
||||
@ -8,7 +8,7 @@ export const objectMetadataItemsByNameSingularMapSelector = selector<
|
||||
>({
|
||||
key: 'objectMetadataItemsByNameSingularMapSelector',
|
||||
get: ({ get }) => {
|
||||
const objectMetadataItems = get(objectMetadataItemsState);
|
||||
const objectMetadataItems = get(objectMetadataItemsState());
|
||||
|
||||
return new Map(
|
||||
objectMetadataItems.map((objectMetadataItem) => [
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
import { atom } from 'recoil';
|
||||
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const objectMetadataItemsState = atom<ObjectMetadataItem[]>({
|
||||
export const objectMetadataItemsState = createState<ObjectMetadataItem[]>({
|
||||
key: 'objectMetadataItemsState',
|
||||
default: [],
|
||||
defaultValue: [],
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user