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:
Charles Bochet
2024-03-09 11:31:00 +01:00
committed by GitHub
parent 17511be0cf
commit 86c0f311f5
451 changed files with 1718 additions and 2557 deletions

View File

@ -33,7 +33,7 @@ export const Timeline = ({
targetableObject: ActivityTargetableObject;
}) => {
const { initialized, noActivities } = useRecoilValue(
timelineActivitiesNetworkingState,
timelineActivitiesNetworkingState(),
);
const showEmptyState = noActivities;

View File

@ -26,7 +26,7 @@ const StyledScrollWrapper = styled(ScrollWrapper)``;
export const TimelineItemsContainer = () => {
const timelineActivitiesForGroup = useRecoilValue(
timelineActivitiesForGroupState,
timelineActivitiesForGroupState(),
);
const groupedActivities = groupActivitiesByMonth(timelineActivitiesForGroup);

View File

@ -35,10 +35,10 @@ export const TimelineQueryEffect = ({
});
const [timelineActivitiesNetworking, setTimelineActivitiesNetworking] =
useRecoilState(timelineActivitiesNetworkingState);
useRecoilState(timelineActivitiesNetworkingState());
const [timelineActivitiesForGroup, setTimelineActivitiesForGroup] =
useRecoilState(timelineActivitiesForGroupState);
useRecoilState(timelineActivitiesForGroupState());
useEffect(() => {
if (!isNonNullable(targetableObject)) {

View File

@ -1,11 +1,10 @@
import { atomFamily } from 'recoil';
import { Activity } from '@/activities/types/Activity';
import { createFamilyState } from '@/ui/utilities/state/utils/createFamilyState';
export const timelineActivitiesFammilyState = atomFamily<
export const timelineActivitiesFammilyState = createFamilyState<
Activity | null,
string
>({
key: 'timelineActivitiesFammilyState',
default: null,
defaultValue: null,
});

View File

@ -1,10 +1,9 @@
import { atom } from 'recoil';
import { ActivityForActivityGroup } from '@/activities/timeline/utils/groupActivitiesByMonth';
import { createState } from '@/ui/utilities/state/utils/createState';
export const timelineActivitiesForGroupState = atom<ActivityForActivityGroup[]>(
{
key: 'timelineActivitiesForGroupState',
default: [],
},
);
export const timelineActivitiesForGroupState = createState<
ActivityForActivityGroup[]
>({
key: 'timelineActivitiesForGroupState',
defaultValue: [],
});

View File

@ -1,11 +1,11 @@
import { atom } from 'recoil';
import { createState } from '@/ui/utilities/state/utils/createState';
export const timelineActivitiesNetworkingState = atom<{
export const timelineActivitiesNetworkingState = createState<{
initialized: boolean;
noActivities: boolean;
}>({
key: 'timelineActivitiesNetworkingState',
default: {
defaultValue: {
initialized: false,
noActivities: false,
},

View File

@ -1,11 +1,10 @@
import { atomFamily } from 'recoil';
import { Activity } from '@/activities/types/Activity';
import { createFamilyState } from '@/ui/utilities/state/utils/createFamilyState';
export const timelineActivityWithoutTargetsFamilyState = atomFamily<
export const timelineActivityWithoutTargetsFamilyState = createFamilyState<
Pick<Activity, 'id' | 'title' | 'createdAt' | 'author' | 'type'> | null,
string
>({
key: 'timelineActivityFirstLevelFamilySelector',
default: null,
defaultValue: null,
});