Pass object name plural in props + remove unused state (#3401)

* Pass object name plural in props + remove unused state

* Fix test

---------

Co-authored-by: Thomas Trompette <thomast@twenty.com>
This commit is contained in:
Thomas Trompette
2024-01-12 14:30:36 +01:00
committed by GitHub
parent 3e8f4ec2c5
commit 52e0e385a4
12 changed files with 40 additions and 48 deletions

View File

@ -22,13 +22,8 @@ export const RecordTableEffect = ({
setAvailableTableColumns, setAvailableTableColumns,
setOnEntityCountChange, setOnEntityCountChange,
setObjectMetadataConfig, setObjectMetadataConfig,
setObjectNamePlural,
} = useRecordTable({ recordTableId }); } = useRecordTable({ recordTableId });
useEffect(() => {
setObjectNamePlural(objectNamePlural);
}, [setObjectNamePlural, objectNamePlural]);
const { objectNameSingular } = useObjectNameSingularFromPlural({ const { objectNameSingular } = useObjectNameSingularFromPlural({
objectNamePlural, objectNamePlural,
}); });

View File

@ -5,18 +5,15 @@ import { renderHook } from '@testing-library/react';
import { RecoilRoot } from 'recoil'; import { RecoilRoot } from 'recoil';
import { useObjectRecordTable } from '@/object-record/hooks/useObjectRecordTable'; import { useObjectRecordTable } from '@/object-record/hooks/useObjectRecordTable';
import { useRecordTable } from '@/object-record/record-table/hooks/useRecordTable';
import { RecordTableScope } from '@/object-record/record-table/scopes/RecordTableScope'; import { RecordTableScope } from '@/object-record/record-table/scopes/RecordTableScope';
import { SnackBarProviderScope } from '@/ui/feedback/snack-bar-manager/scopes/SnackBarProviderScope'; import { SnackBarProviderScope } from '@/ui/feedback/snack-bar-manager/scopes/SnackBarProviderScope';
import { getScopeIdFromComponentId } from '@/ui/utilities/recoil-scope/utils/getScopeIdFromComponentId'; import { getScopeIdFromComponentId } from '@/ui/utilities/recoil-scope/utils/getScopeIdFromComponentId';
const recordTableId = 'people'; const recordTableId = 'people';
const objectNamePlural = 'people';
const onColumnsChange = jest.fn(); const onColumnsChange = jest.fn();
const ObjectNamePluralSetter = ({ children }: { children: ReactNode }) => { const ObjectNamePluralSetter = ({ children }: { children: ReactNode }) => {
const { setObjectNamePlural } = useRecordTable({ recordTableId });
setObjectNamePlural('people');
return <>{children}</>; return <>{children}</>;
}; };
@ -39,9 +36,12 @@ const Wrapper = ({ children }: { children: ReactNode }) => {
describe('useObjectRecordTable', () => { describe('useObjectRecordTable', () => {
it('should skip fetch if currentWorkspace is undefined', async () => { it('should skip fetch if currentWorkspace is undefined', async () => {
const { result } = renderHook(() => useObjectRecordTable(), { const { result } = renderHook(
wrapper: Wrapper, () => useObjectRecordTable(objectNamePlural),
}); {
wrapper: Wrapper,
},
);
expect(result.current.loading).toBe(false); expect(result.current.loading).toBe(false);
expect(Array.isArray(result.current.records)).toBe(true); expect(Array.isArray(result.current.records)).toBe(true);

View File

@ -11,12 +11,9 @@ import { signInBackgroundMockCompanies } from '@/sign-in-background-mock/constan
import { useFindManyRecords } from './useFindManyRecords'; import { useFindManyRecords } from './useFindManyRecords';
export const useObjectRecordTable = () => { export const useObjectRecordTable = (objectNamePlural: string) => {
const { const { setRecordTableData, setIsRecordTableInitialLoading } =
objectNamePlural, useRecordTable();
setRecordTableData,
setIsRecordTableInitialLoading,
} = useRecordTable();
const currentWorkspace = useRecoilValue(currentWorkspaceState); const currentWorkspace = useRecoilValue(currentWorkspaceState);
const { objectNameSingular } = useObjectNameSingularFromPlural({ const { objectNameSingular } = useObjectNameSingularFromPlural({

View File

@ -1,6 +1,5 @@
import { useContext } from 'react'; import { useContext } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { useRecoilValue } from 'recoil';
import { RecordTableBody } from '@/object-record/record-table/components/RecordTableBody'; import { RecordTableBody } from '@/object-record/record-table/components/RecordTableBody';
import { RecordTableBodyEffect } from '@/object-record/record-table/components/RecordTableBodyEffect'; import { RecordTableBodyEffect } from '@/object-record/record-table/components/RecordTableBodyEffect';
@ -99,20 +98,19 @@ const StyledTable = styled.table`
type RecordTableProps = { type RecordTableProps = {
recordTableId: string; recordTableId: string;
objectNamePlural: string;
onColumnsChange: (columns: any) => void; onColumnsChange: (columns: any) => void;
createRecord: () => void; createRecord: () => void;
}; };
export const RecordTable = ({ export const RecordTable = ({
recordTableId, recordTableId,
objectNamePlural,
onColumnsChange, onColumnsChange,
createRecord, createRecord,
}: RecordTableProps) => { }: RecordTableProps) => {
const recordTableRef = useContext(RecordTableRefContext); const recordTableRef = useContext(RecordTableRefContext);
const { scopeId, objectNamePluralState } = const { scopeId } = useRecordTableStates(recordTableId);
useRecordTableStates(recordTableId);
const objectNamePlural = useRecoilValue(objectNamePluralState());
return ( return (
<RecordTableScope <RecordTableScope
@ -123,8 +121,8 @@ export const RecordTable = ({
{objectNamePlural ? ( {objectNamePlural ? (
<StyledTable ref={recordTableRef} className="entity-table-cell"> <StyledTable ref={recordTableRef} className="entity-table-cell">
<RecordTableHeader createRecord={createRecord} /> <RecordTableHeader createRecord={createRecord} />
<RecordTableBodyEffect /> <RecordTableBodyEffect objectNamePlural={objectNamePlural} />
<RecordTableBody /> <RecordTableBody objectNamePlural={objectNamePlural} />
</StyledTable> </StyledTable>
) : ( ) : (
<></> <></>

View File

@ -6,7 +6,11 @@ import { RowIdContext } from '@/object-record/record-table/contexts/RowIdContext
import { RowIndexContext } from '@/object-record/record-table/contexts/RowIndexContext'; import { RowIndexContext } from '@/object-record/record-table/contexts/RowIndexContext';
import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates'; import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates';
export const RecordTableBody = () => { type RecordTableBodyProps = {
objectNamePlural: string;
};
export const RecordTableBody = ({ objectNamePlural }: RecordTableBodyProps) => {
const { tableRowIdsState } = useRecordTableStates(); const { tableRowIdsState } = useRecordTableStates();
const tableRowIds = useRecoilValue(tableRowIdsState()); const tableRowIds = useRecoilValue(tableRowIdsState());
@ -22,7 +26,7 @@ export const RecordTableBody = () => {
</RowIdContext.Provider> </RowIdContext.Provider>
))} ))}
</tbody> </tbody>
<RecordTableBodyFetchMoreLoader /> <RecordTableBodyFetchMoreLoader objectNamePlural={objectNamePlural} />
</> </>
); );
}; };

View File

@ -5,14 +5,20 @@ import { useObjectRecordTable } from '@/object-record/hooks/useObjectRecordTable
import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates'; import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates';
import { isFetchingMoreRecordsFamilyState } from '@/object-record/states/isFetchingMoreRecordsFamilyState'; import { isFetchingMoreRecordsFamilyState } from '@/object-record/states/isFetchingMoreRecordsFamilyState';
export const RecordTableBodyEffect = () => { type RecordTableBodyEffectProps = {
objectNamePlural: string;
};
export const RecordTableBodyEffect = ({
objectNamePlural,
}: RecordTableBodyEffectProps) => {
const { const {
fetchMoreRecords: fetchMoreObjects, fetchMoreRecords: fetchMoreObjects,
records, records,
setRecordTableData, setRecordTableData,
queryStateIdentifier, queryStateIdentifier,
loading, loading,
} = useObjectRecordTable(); } = useObjectRecordTable(objectNamePlural);
const { tableLastRowVisibleState } = useRecordTableStates(); const { tableLastRowVisibleState } = useRecordTableStates();

View File

@ -8,8 +8,14 @@ import { useRecordTable } from '@/object-record/record-table/hooks/useRecordTabl
import { isFetchingMoreRecordsFamilyState } from '@/object-record/states/isFetchingMoreRecordsFamilyState'; import { isFetchingMoreRecordsFamilyState } from '@/object-record/states/isFetchingMoreRecordsFamilyState';
import { grayScale } from '@/ui/theme/constants/colors'; import { grayScale } from '@/ui/theme/constants/colors';
export const RecordTableBodyFetchMoreLoader = () => { type RecordTableBodyFetchMoreLoaderProps = {
const { queryStateIdentifier } = useObjectRecordTable(); objectNamePlural: string;
};
export const RecordTableBodyFetchMoreLoader = ({
objectNamePlural,
}: RecordTableBodyFetchMoreLoaderProps) => {
const { queryStateIdentifier } = useObjectRecordTable(objectNamePlural);
const { setRecordTableLastRowVisible } = useRecordTable(); const { setRecordTableLastRowVisible } = useRecordTable();
const isFetchingMoreObjects = useRecoilValue( const isFetchingMoreObjects = useRecoilValue(

View File

@ -120,6 +120,7 @@ export const RecordTableWithWrappers = ({
<div ref={tableBodyRef}> <div ref={tableBodyRef}>
<RecordTable <RecordTable
recordTableId={recordTableId} recordTableId={recordTableId}
objectNamePlural={objectNamePlural}
onColumnsChange={useRecoilCallback(() => (columns) => { onColumnsChange={useRecoilCallback(() => (columns) => {
persistViewFields( persistViewFields(
mapColumnDefinitionsToViewFields(columns), mapColumnDefinitionsToViewFields(columns),

View File

@ -8,7 +8,6 @@ import { isSoftFocusOnTableCellFamilyStateScopeMap } from '@/object-record/recor
import { isTableCellInEditModeFamilyStateScopeMap } from '@/object-record/record-table/states/isTableCellInEditModeFamilyStateScopeMap'; import { isTableCellInEditModeFamilyStateScopeMap } from '@/object-record/record-table/states/isTableCellInEditModeFamilyStateScopeMap';
import { numberOfTableRowsStateScopeMap } from '@/object-record/record-table/states/numberOfTableRowsStateScopeMap'; import { numberOfTableRowsStateScopeMap } from '@/object-record/record-table/states/numberOfTableRowsStateScopeMap';
import { objectMetadataConfigStateScopeMap } from '@/object-record/record-table/states/objectMetadataConfigStateScopeMap'; import { objectMetadataConfigStateScopeMap } from '@/object-record/record-table/states/objectMetadataConfigStateScopeMap';
import { objectNamePluralStateScopeMap } from '@/object-record/record-table/states/objectNamePluralStateScopeMap';
import { onColumnsChangeStateScopeMap } from '@/object-record/record-table/states/onColumnsChangeStateScopeMap'; import { onColumnsChangeStateScopeMap } from '@/object-record/record-table/states/onColumnsChangeStateScopeMap';
import { onEntityCountChangeStateScopeMap } from '@/object-record/record-table/states/onEntityCountChangeStateScopeMap'; import { onEntityCountChangeStateScopeMap } from '@/object-record/record-table/states/onEntityCountChangeStateScopeMap';
import { resizeFieldOffsetStateScopeMap } from '@/object-record/record-table/states/resizeFieldOffsetStateScopeMap'; import { resizeFieldOffsetStateScopeMap } from '@/object-record/record-table/states/resizeFieldOffsetStateScopeMap';
@ -49,7 +48,6 @@ export const useRecordTableStates = (recordTableId?: string) => {
objectMetadataConfigStateScopeMap, objectMetadataConfigStateScopeMap,
scopeId, scopeId,
), ),
objectNamePluralState: getState(objectNamePluralStateScopeMap, scopeId),
onColumnsChangeState: getState(onColumnsChangeStateScopeMap, scopeId), onColumnsChangeState: getState(onColumnsChangeStateScopeMap, scopeId),
onEntityCountChangeState: getState( onEntityCountChangeState: getState(
onEntityCountChangeStateScopeMap, onEntityCountChangeStateScopeMap,

View File

@ -1,4 +1,4 @@
import { useRecoilCallback, useRecoilState, useSetRecoilState } from 'recoil'; import { useRecoilCallback, useSetRecoilState } from 'recoil';
import { Key } from 'ts-key-enum'; import { Key } from 'ts-key-enum';
import { useGetIsSomeCellInEditMode } from '@/object-record/record-table/hooks/internal/useGetIsSomeCellInEditMode'; import { useGetIsSomeCellInEditMode } from '@/object-record/record-table/hooks/internal/useGetIsSomeCellInEditMode';
@ -42,7 +42,6 @@ export const useRecordTable = (props?: useRecordTableProps) => {
tableLastRowVisibleState, tableLastRowVisibleState,
numberOfTableColumnsSelector, numberOfTableColumnsSelector,
selectedRowIdsSelector, selectedRowIdsSelector,
objectNamePluralState,
} = useRecordTableStates(recordTableId); } = useRecordTableStates(recordTableId);
const setAvailableTableColumns = useSetRecoilState( const setAvailableTableColumns = useSetRecoilState(
@ -71,10 +70,6 @@ export const useRecordTable = (props?: useRecordTableProps) => {
tableLastRowVisibleState(), tableLastRowVisibleState(),
); );
const [objectNamePlural, setObjectNamePlural] = useRecoilState(
objectNamePluralState(),
);
const onColumnsChange = useRecoilCallback( const onColumnsChange = useRecoilCallback(
({ snapshot }) => ({ snapshot }) =>
(columns: ColumnDefinition<FieldMetadata>[]) => { (columns: ColumnDefinition<FieldMetadata>[]) => {
@ -351,7 +346,5 @@ export const useRecordTable = (props?: useRecordTableProps) => {
setSoftFocusPosition, setSoftFocusPosition,
getIsSomeCellInEditMode, getIsSomeCellInEditMode,
selectedRowIdsSelector, selectedRowIdsSelector,
objectNamePlural,
setObjectNamePlural,
}; };
}; };

View File

@ -1,6 +0,0 @@
import { createStateScopeMap } from '@/ui/utilities/recoil-scope/utils/createStateScopeMap';
export const objectNamePluralStateScopeMap = createStateScopeMap<string>({
key: 'objectNamePlural',
defaultValue: '',
});

View File

@ -15,7 +15,7 @@ const StyledContainer = styled.div`
export const SignInBackgroundMockContainer = () => { export const SignInBackgroundMockContainer = () => {
const objectNamePlural = 'companies'; const objectNamePlural = 'companies';
const recordTableId = 'Sign-up-mock-record-table-id'; const recordTableId = 'sign-up-mock-record-table-id';
const viewBarId = 'companies-mock'; const viewBarId = 'companies-mock';
return ( return (