Refactor/finish activities optimistic (#4106)

* Finished optimistic effects

* Fixed tests

* Added unit test on useActivityConnectionUtils to prepare for refactor

* Fixed console.log
This commit is contained in:
Lucas Bordeau
2024-02-21 18:54:14 +01:00
committed by GitHub
parent 02e9846282
commit 140d3460eb
26 changed files with 832 additions and 382 deletions

View File

@ -1,18 +1,47 @@
import { useEffect, useMemo } from 'react';
import { useRecoilState } from 'recoil';
import { useActivities } from '@/activities/hooks/useActivities';
import { currentNotesQueryVariablesState } from '@/activities/notes/states/currentNotesQueryVariablesState';
import { FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY } from '@/activities/timeline/constants/FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY';
import { Note } from '@/activities/types/Note';
import { ObjectRecordQueryVariables } from '@/object-record/types/ObjectRecordQueryVariables';
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
import { ActivityTargetableObject } from '../../types/ActivityTargetableEntity';
export const useNotes = (targetableObject: ActivityTargetableObject) => {
const notesQueryVariables = useMemo(
() =>
({
filter: {
type: { eq: 'Note' },
},
orderBy: FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY,
}) as ObjectRecordQueryVariables,
[],
);
const { activities, initialized, loading } = useActivities({
activitiesFilters: {
type: { eq: 'Note' },
},
activitiesOrderByVariables: FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY,
activitiesFilters: notesQueryVariables.filter ?? {},
activitiesOrderByVariables: notesQueryVariables.orderBy ?? {},
targetableObjects: [targetableObject],
});
const [currentNotesQueryVariables, setCurrentNotesQueryVariables] =
useRecoilState(currentNotesQueryVariablesState);
// TODO: fix useEffect, remove with better pattern
useEffect(() => {
if (!isDeeplyEqual(notesQueryVariables, currentNotesQueryVariables)) {
setCurrentNotesQueryVariables(notesQueryVariables);
}
}, [
notesQueryVariables,
currentNotesQueryVariables,
setCurrentNotesQueryVariables,
]);
return {
notes: activities as Note[],
initialized,

View File

@ -0,0 +1,9 @@
import { atom } from 'recoil';
import { ObjectRecordQueryVariables } from '@/object-record/types/ObjectRecordQueryVariables';
export const currentNotesQueryVariablesState =
atom<ObjectRecordQueryVariables | null>({
default: null,
key: 'currentNotesQueryVariablesState',
});