From bc7c0d655847122abaac20b8697c4cb618fb86d1 Mon Sep 17 00:00:00 2001 From: gabriellsh Date: Wed, 16 Apr 2025 18:10:47 -0300 Subject: [PATCH 1/3] Move useSafeRefCallback to ui-client --- apps/meteor/client/views/room/body/hooks/useListIsAtBottom.ts | 2 +- .../client/views/room/composer/messageBox/MessageBox.tsx | 2 +- apps/meteor/client/views/room/hooks/useIsVisible.ts | 3 +-- packages/ui-client/src/hooks/index.ts | 1 + packages/ui-client/src/hooks/useSafeRefCallback/index.ts | 1 + .../src/hooks/useSafeRefCallback}/useSafeRefCallback.spec.tsx | 0 .../src/hooks/useSafeRefCallback}/useSafeRefCallback.ts | 0 7 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 packages/ui-client/src/hooks/useSafeRefCallback/index.ts rename {apps/meteor/client/hooks => packages/ui-client/src/hooks/useSafeRefCallback}/useSafeRefCallback.spec.tsx (100%) rename {apps/meteor/client/hooks => packages/ui-client/src/hooks/useSafeRefCallback}/useSafeRefCallback.ts (100%) diff --git a/apps/meteor/client/views/room/body/hooks/useListIsAtBottom.ts b/apps/meteor/client/views/room/body/hooks/useListIsAtBottom.ts index 7425a43e53c42..77ce1b91d8989 100644 --- a/apps/meteor/client/views/room/body/hooks/useListIsAtBottom.ts +++ b/apps/meteor/client/views/room/body/hooks/useListIsAtBottom.ts @@ -1,10 +1,10 @@ import { useMergedRefs } from '@rocket.chat/fuselage-hooks'; +import { useSafeRefCallback } from '@rocket.chat/ui-client'; import type { MutableRefObject } from 'react'; import { useCallback, useRef } from 'react'; import { isAtBottom as isAtBottomLib } from '../../../../../app/ui/client/views/app/lib/scrolling'; import { withThrottling } from '../../../../../lib/utils/highOrderFunctions'; -import { useSafeRefCallback } from '../../../../hooks/useSafeRefCallback'; export const useListIsAtBottom = () => { const atBottomRef = useRef(true); diff --git a/apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx b/apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx index 017921f6b652d..b1eda9fe16a37 100644 --- a/apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx +++ b/apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx @@ -1,6 +1,7 @@ /* eslint-disable complexity */ import type { IMessage, ISubscription } from '@rocket.chat/core-typings'; import { useContentBoxSize, useEffectEvent } from '@rocket.chat/fuselage-hooks'; +import { useSafeRefCallback } from '@rocket.chat/ui-client'; import { MessageComposerAction, MessageComposerToolbarActions, @@ -43,7 +44,6 @@ import { useEnablePopupPreview } from '../hooks/useEnablePopupPreview'; import { useMessageComposerMergedRefs } from '../hooks/useMessageComposerMergedRefs'; import { useMessageBoxAutoFocus } from './hooks/useMessageBoxAutoFocus'; import { useMessageBoxPlaceholder } from './hooks/useMessageBoxPlaceholder'; -import { useSafeRefCallback } from '../../../../hooks/useSafeRefCallback'; const reducer = (_: unknown, event: FormEvent): boolean => { const target = event.target as HTMLInputElement; diff --git a/apps/meteor/client/views/room/hooks/useIsVisible.ts b/apps/meteor/client/views/room/hooks/useIsVisible.ts index f6afcfdce8987..48f535ec79210 100644 --- a/apps/meteor/client/views/room/hooks/useIsVisible.ts +++ b/apps/meteor/client/views/room/hooks/useIsVisible.ts @@ -1,8 +1,7 @@ import { useDebouncedState, useSafely } from '@rocket.chat/fuselage-hooks'; +import { useSafeRefCallback } from '@rocket.chat/ui-client'; import { useCallback } from 'react'; -import { useSafeRefCallback } from '../../../hooks/useSafeRefCallback'; - export const useIsVisible = () => { const [menuVisibility, setMenuVisibility] = useSafely(useDebouncedState(!!window.DISABLE_ANIMATION, 100)); diff --git a/packages/ui-client/src/hooks/index.ts b/packages/ui-client/src/hooks/index.ts index eff3cd8569d81..da1e5488f0334 100644 --- a/packages/ui-client/src/hooks/index.ts +++ b/packages/ui-client/src/hooks/index.ts @@ -5,3 +5,4 @@ export * from './usePreferenceFeaturePreviewList'; export * from './useDocumentTitle'; export * from './useUserDisplayName'; export * from './useValidatePassword'; +export * from './useSafeRefCallback'; diff --git a/packages/ui-client/src/hooks/useSafeRefCallback/index.ts b/packages/ui-client/src/hooks/useSafeRefCallback/index.ts new file mode 100644 index 0000000000000..920b7e7a17bec --- /dev/null +++ b/packages/ui-client/src/hooks/useSafeRefCallback/index.ts @@ -0,0 +1 @@ +export * from './useSafeRefCallback'; diff --git a/apps/meteor/client/hooks/useSafeRefCallback.spec.tsx b/packages/ui-client/src/hooks/useSafeRefCallback/useSafeRefCallback.spec.tsx similarity index 100% rename from apps/meteor/client/hooks/useSafeRefCallback.spec.tsx rename to packages/ui-client/src/hooks/useSafeRefCallback/useSafeRefCallback.spec.tsx diff --git a/apps/meteor/client/hooks/useSafeRefCallback.ts b/packages/ui-client/src/hooks/useSafeRefCallback/useSafeRefCallback.ts similarity index 100% rename from apps/meteor/client/hooks/useSafeRefCallback.ts rename to packages/ui-client/src/hooks/useSafeRefCallback/useSafeRefCallback.ts From 6f8fab9443111b88ef88d7f640f6044e660fabcd Mon Sep 17 00:00:00 2001 From: gabriellsh Date: Mon, 28 Apr 2025 18:22:22 -0300 Subject: [PATCH 2/3] fix import --- .../client/views/room/MessageList/hooks/useJumpToMessage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/client/views/room/MessageList/hooks/useJumpToMessage.ts b/apps/meteor/client/views/room/MessageList/hooks/useJumpToMessage.ts index 096a6cd4f7777..83f5c8230b25f 100644 --- a/apps/meteor/client/views/room/MessageList/hooks/useJumpToMessage.ts +++ b/apps/meteor/client/views/room/MessageList/hooks/useJumpToMessage.ts @@ -1,9 +1,9 @@ import type { IMessage } from '@rocket.chat/core-typings'; +import { useSafeRefCallback } from '@rocket.chat/ui-client'; import { useRouter } from '@rocket.chat/ui-contexts'; import { useCallback } from 'react'; import { useMessageListJumpToMessageParam, useMessageListRef } from '../../../../components/message/list/MessageListContext'; -import { useSafeRefCallback } from '../../../../hooks/useSafeRefCallback'; import { setHighlightMessage, clearHighlightMessage } from '../providers/messageHighlightSubscription'; // this is an arbitrary value so that there's a gap between the header and the message; From 4fd7a7826a49cdc6d4b6e9d4190bc0f5a039d5ea Mon Sep 17 00:00:00 2001 From: gabriellsh Date: Mon, 28 Apr 2025 18:23:42 -0300 Subject: [PATCH 3/3] remove comment --- .../hooks/useSafeRefCallback/useSafeRefCallback.spec.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/ui-client/src/hooks/useSafeRefCallback/useSafeRefCallback.spec.tsx b/packages/ui-client/src/hooks/useSafeRefCallback/useSafeRefCallback.spec.tsx index f90a1c37752ce..0d3b4fe503051 100644 --- a/packages/ui-client/src/hooks/useSafeRefCallback/useSafeRefCallback.spec.tsx +++ b/packages/ui-client/src/hooks/useSafeRefCallback/useSafeRefCallback.spec.tsx @@ -2,12 +2,6 @@ import { render } from '@testing-library/react'; import { useSafeRefCallback } from './useSafeRefCallback'; -// const TestComponent = (callback: () => () => void) => { -// const cbRef = useSafeRefCallback(callback); - -// return
; -// }; - const TestComponent = ({ callback, renderSpan }: { callback: any; renderSpan?: boolean }) => { const cbRef = useSafeRefCallback(callback);