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:
@ -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,
|
||||
|
||||
@ -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',
|
||||
});
|
||||
Reference in New Issue
Block a user