* Change to using arrow functions Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> * Add lint rule --------- Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> Co-authored-by: Charles Bochet <charles@twenty.com>
30 lines
978 B
TypeScript
30 lines
978 B
TypeScript
import { useRecoilCallback, useSetRecoilState } from 'recoil';
|
|
|
|
import { actionBarOpenState } from '@/ui/action-bar/states/actionBarIsOpenState';
|
|
|
|
import { activeCardIdsState } from '../states/activeCardIdsState';
|
|
import { isCardSelectedFamilyState } from '../states/isCardSelectedFamilyState';
|
|
|
|
export const useSetCardSelected = () => {
|
|
const setActionBarOpenState = useSetRecoilState(actionBarOpenState);
|
|
|
|
return useRecoilCallback(
|
|
({ set, snapshot }) =>
|
|
(cardId: string, selected: boolean) => {
|
|
const activeCardIds = snapshot.getLoadable(activeCardIdsState).contents;
|
|
|
|
set(isCardSelectedFamilyState(cardId), selected);
|
|
setActionBarOpenState(selected || activeCardIds.length > 0);
|
|
|
|
if (selected) {
|
|
set(activeCardIdsState, [...activeCardIds, cardId]);
|
|
} else {
|
|
set(
|
|
activeCardIdsState,
|
|
activeCardIds.filter((id: string) => id !== cardId),
|
|
);
|
|
}
|
|
},
|
|
);
|
|
};
|