annotations: removeDuplicatesById()

in web/src/connectors/task-annotator-connector/task-annotator-context.tsx [1113:1157]


            annotations: removeDuplicatesById(result),
            annotationsChanges,
            availableRenderedPagesRange,
            allPageNumbers: pageNumbers
        });

        setAllAnnotations(annotationsWithChanges);

        const annDataAttrsResult = mapAnnotationDataAttrsFromApi(latestAnnotationsResultData.pages);
        setAnnDataAttrs(annDataAttrsResult);

        if (
            latestAnnotationsResultData.pages.length === 0 ||
            !latestAnnotationsResultData.pages[0].size ||
            latestAnnotationsResultData.pages[0].size.width === 0 ||
            latestAnnotationsResultData.pages[0].size.height === 0
        )
            return;
        setPageSize(latestAnnotationsResultData.pages[0].size);
    }, [
        latestAnnotationsResultData,
        categories,
        mapAnnotationPagesFromApi,
        annotationsChanges,
        latestAnnotationsResult.isLoading,
        pageNumbers
    ]);

    const onClearModifiedPages = useCallback(async () => {
        setModifiedPages([]);
    }, []);

    const clearAnnotationsChanges = useCallback(async () => {
        setAnnotationsChanges({});
    }, []);

    const { SyncedContainer } = useSyncScroll();

    const linksFromApi = latestAnnotationsResultData?.links_json;
    const documentLinksValues = useDocumentLinks(setSelectedRelatedDoc, linksFromApi);

    const areLatestAnnotationsFetching = latestAnnotationsResult.isFetching;

    const value = useMemo<TTaskAnnotatorContext>(() => {
        return {