* wip * wip * Ok * Deleted unused code * Fixed lint * Minor fixes * Minor fixes * Minor Fixes * Minor merge fixes * Ok * Fix storybook tests * Removed console.log * Fix login * asd * Fixed storybook * Added await * Fixed await * Added sleep for failing test * Fix sleep * Fix test * Fix tests --------- Co-authored-by: Charles Bochet <charles@twenty.com>
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { useContext } from 'react';
|
|
import { useRecoilCallback, useRecoilState } from 'recoil';
|
|
|
|
import { isRowSelectedFamilyState } from '../states/isRowSelectedFamilyState';
|
|
import { RowIdContext } from '../states/RowIdContext';
|
|
|
|
export function useCurrentRowSelected() {
|
|
const currentRowId = useContext(RowIdContext);
|
|
|
|
const [isRowSelected] = useRecoilState(
|
|
isRowSelectedFamilyState(currentRowId ?? ''),
|
|
);
|
|
|
|
const setCurrentRowSelected = useRecoilCallback(
|
|
({ set, snapshot }) =>
|
|
(newSelectedState: boolean) => {
|
|
if (!currentRowId) return;
|
|
|
|
const isRowSelected = snapshot
|
|
.getLoadable(isRowSelectedFamilyState(currentRowId))
|
|
.valueOrThrow();
|
|
|
|
if (newSelectedState && !isRowSelected) {
|
|
set(isRowSelectedFamilyState(currentRowId), true);
|
|
} else if (!newSelectedState && isRowSelected) {
|
|
set(isRowSelectedFamilyState(currentRowId), false);
|
|
}
|
|
},
|
|
[currentRowId],
|
|
);
|
|
|
|
return {
|
|
currentRowSelected: isRowSelected,
|
|
setCurrentRowSelected,
|
|
};
|
|
}
|