* Finished optimistic effects * Fixed tests * Added unit test on useActivityConnectionUtils to prepare for refactor * Fixed console.log
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
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: 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,
|
|
loading,
|
|
};
|
|
};
|