From 0bec88cb2b23527a20fc7e49d256389f4f7f3026 Mon Sep 17 00:00:00 2001 From: Mathias Jakobsen Date: Wed, 27 Nov 2024 12:56:57 +0000 Subject: [PATCH] Merge pull request #22168 from overleaf/mj-rm-events [web] Add events when refreshing linked file and importing RM entry GitOrigin-RevId: b9efcd1893f0a78a33ec325b306eccbaa44a77fe --- .../components/file-view-refresh-button.tsx | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/services/web/frontend/js/features/file-view/components/file-view-refresh-button.tsx b/services/web/frontend/js/features/file-view/components/file-view-refresh-button.tsx index 46721c7520..d04bf803cc 100644 --- a/services/web/frontend/js/features/file-view/components/file-view-refresh-button.tsx +++ b/services/web/frontend/js/features/file-view/components/file-view-refresh-button.tsx @@ -9,11 +9,12 @@ import { useTranslation } from 'react-i18next' import Icon from '@/shared/components/icon' import { postJSON } from '@/infrastructure/fetch-json' import { useProjectContext } from '@/shared/context/project-context' -import useAbortController from '@/shared/hooks/use-abort-controller' import type { BinaryFile } from '../types/binary-file' import { Nullable } from '../../../../../types/utils' import importOverleafModules from '../../../../macros/import-overleaf-module.macro' import OLButton from '@/features/ui/components/ol/ol-button' +import { sendMB } from '@/infrastructure/event-tracking' +import useIsMounted from '@/shared/hooks/use-is-mounted' type FileViewRefreshButtonProps = { setRefreshError: Dispatch>> @@ -32,8 +33,8 @@ export default function FileViewRefreshButton({ file, }: FileViewRefreshButtonProps) { const { _id: projectId } = useProjectContext() - const { signal } = useAbortController() const [refreshing, setRefreshing] = useState(false) + const isMountedRef = useIsMounted() const refreshFile = useCallback( (isTPR: Nullable) => { @@ -44,18 +45,24 @@ export default function FileViewRefreshButton({ shouldReindexReferences: isTPR || /\.bib$/.test(file.name), } postJSON(`/project/${projectId}/linked_file/${file.id}/refresh`, { - signal, body, }) .then(() => { - setRefreshing(false) + if (isMountedRef.current) { + setRefreshing(false) + } + sendMB('refresh-linked-file', { + provider: file.linkedFileData?.provider, + }) }) .catch(err => { - setRefreshing(false) - setRefreshError(err.data?.message || err.message) + if (isMountedRef.current) { + setRefreshing(false) + setRefreshError(err.data?.message || err.message) + } }) }, - [file, projectId, signal, setRefreshError] + [file, projectId, setRefreshError, isMountedRef] ) if (tprFileViewRefreshButton.length > 0) {