diff --git a/webapp/channels/src/components/common/hooks/useTooltip.tsx b/webapp/channels/src/components/common/hooks/useTooltip.tsx index b9cbb78c3f..a90ede3197 100644 --- a/webapp/channels/src/components/common/hooks/useTooltip.tsx +++ b/webapp/channels/src/components/common/hooks/useTooltip.tsx @@ -1,16 +1,17 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {useHover, useInteractions, useFloating, arrow, offset, autoPlacement} from '@floating-ui/react-dom-interactions'; -import type {Strategy, Placement} from '@floating-ui/react-dom-interactions'; +import {useHover, useInteractions, useFloating, arrow, offset, autoPlacement} from '@floating-ui/react'; +import type {Strategy, Placement, ReferenceType} from '@floating-ui/react'; import classNames from 'classnames'; +import type {ReactNode, HTMLProps} from 'react'; import React, {useState, useRef} from 'react'; import ReactDOM from 'react-dom'; import {Constants} from 'utils/constants'; interface TooltipOptions { - message: React.ReactNode | React.ReactNodeArray; + message: ReactNode; strategy?: Strategy; placement: Placement; allowedPlacements?: Placement[]; @@ -31,7 +32,13 @@ const defaultOptions: Required void; + getReferenceProps: (userProps?: HTMLProps) => Record; + tooltip: ReactNode; +} + +export default function useTooltip(options: TooltipOptions): TooltipReturn { const [open, setOpen] = useState(false); const [visible, setVisible] = useState(false); const transition = useRef(null); @@ -42,10 +49,12 @@ export default function useTooltip(options: TooltipOptions) { const { x, y, - reference, - floating, strategy, placement, + refs: { + setReference, + setFloating, + }, middlewareData: { arrow: { x: arrowX, @@ -96,7 +105,7 @@ export default function useTooltip(options: TooltipOptions) { const content = (
); - let tooltip: React.ReactNode | React.ReactNodeArray = false; + let tooltip: ReactNode = false; if (open) { if (effectiveStrategy === 'fixed') { @@ -132,7 +141,7 @@ export default function useTooltip(options: TooltipOptions) { } return { - reference, + setReference, getReferenceProps, tooltip, }; diff --git a/webapp/channels/src/components/file_attachment/file_attachment.tsx b/webapp/channels/src/components/file_attachment/file_attachment.tsx index 323029ba28..faf90c1824 100644 --- a/webapp/channels/src/components/file_attachment/file_attachment.tsx +++ b/webapp/channels/src/components/file_attachment/file_attachment.tsx @@ -23,7 +23,6 @@ import { fileSizeToString, getFileType, loadImage, - localizeMessage, } from 'utils/utils'; import ArchivedTooltip from './archived_tooltip'; @@ -58,14 +57,16 @@ interface Props extends PropsFromRedux { export default function FileAttachment(props: Props) { const mounted = useRef(true); - const intl = useIntl(); + + const {formatMessage} = useIntl(); + const [loaded, setLoaded] = useState(getFileType(props.fileInfo.extension) !== FileTypes.IMAGE); const [loadFilesCalled, setLoadFilesCalled] = useState(false); const [keepOpen, setKeepOpen] = useState(false); const [openUp, setOpenUp] = useState(false); const { - reference, + setReference, getReferenceProps, tooltip: archivedTooltip, } = useTooltip({ @@ -190,8 +191,8 @@ export default function FileAttachment(props: Props) { , ); } @@ -225,7 +226,7 @@ export default function FileAttachment(props: Props) { const tooltip = ( - {localizeMessage('file_search_result_item.more_actions', 'More Actions')} + {formatMessage({id: 'file_search_result_item.more_actions', defaultMessage: 'More Actions'})} ); @@ -243,7 +244,7 @@ export default function FileAttachment(props: Props) {