[Refactoring] usePrevious2 → usePrevious, usePrevious → usePreviousDeprecated

This commit is contained in:
Alexander Zinchuk 2024-09-06 15:43:03 +02:00
parent 45b81c104a
commit 2136302d52
60 changed files with 163 additions and 160 deletions

View File

@ -20,7 +20,7 @@ import { updateSizes } from '../util/windowSize';
import useAppLayout from '../hooks/useAppLayout';
import useFlag from '../hooks/useFlag';
import usePrevious from '../hooks/usePrevious';
import usePreviousDeprecated from '../hooks/usePreviousDeprecated';
// import Test from './test/TestLocale';
import Auth from './auth/Auth';
@ -180,7 +180,7 @@ const App: FC<StateProps> = ({
}
}, [isInactiveAuth, markInactive, unmarkInactive]);
const prevActiveKey = usePrevious(activeKey);
const prevActiveKey = usePreviousDeprecated(activeKey);
// eslint-disable-next-line consistent-return
function renderContent() {

View File

@ -12,7 +12,7 @@ import { vibrateShort } from '../../../util/vibrate';
import { LOCAL_TGS_URLS } from '../../common/helpers/animatedAssets';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import AnimatedIcon from '../../common/AnimatedIcon';
import Button from '../../ui/Button';
@ -57,7 +57,7 @@ const MicrophoneButton: FC<OwnProps & StateProps> = ({
const [isRequestingToSpeak, setIsRequestingToSpeak] = useState(false);
const isConnecting = connectionState !== 'connected';
const shouldRaiseHand = !canSelfUnmute && isMuted;
const prevShouldRaiseHand = usePrevious(shouldRaiseHand);
const prevShouldRaiseHand = usePreviousDeprecated(shouldRaiseHand);
useEffect(() => {
if (prevShouldRaiseHand && !shouldRaiseHand) {

View File

@ -6,7 +6,7 @@ import type { GroupCallParticipant } from '../../../lib/secret-sauce';
import { THRESHOLD } from '../../../lib/secret-sauce';
import { LOCAL_TGS_URLS } from '../../common/helpers/animatedAssets';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import AnimatedIcon from '../../common/AnimatedIcon';
@ -24,10 +24,10 @@ const OutlinedMicrophoneIcon: FC<OwnProps> = ({
const { isMuted, isMutedByMe } = participant;
const isSpeaking = (participant.amplitude || 0) > THRESHOLD;
const isRaiseHand = Boolean(participant.raiseHandRating);
const prevIsRaiseHand = usePrevious(isRaiseHand);
const prevIsRaiseHand = usePreviousDeprecated(isRaiseHand);
const canSelfUnmute = Boolean(participant?.canSelfUnmute);
const shouldRaiseHand = !canSelfUnmute && isMuted;
const prevIsMuted = usePrevious(isMuted);
const prevIsMuted = usePreviousDeprecated(isMuted);
const playSegment: [number, number] = useMemo(() => {
if (isMuted && !prevIsMuted) {

View File

@ -4,7 +4,7 @@ import {
} from '../../../../lib/teact/teact';
import useLastCallback from '../../../../hooks/useLastCallback';
import usePrevious from '../../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../../hooks/usePreviousDeprecated';
import useResizeObserver from '../../../../hooks/useResizeObserver';
const PADDING_HORIZONTAL = 10;
@ -46,8 +46,8 @@ export default function useGroupCallVideoLayout({
const [videoLayout, setVideoLayout] = useState<VideoLayout[]>([]);
const [panelOffset, setPanelOffset] = useState(0);
const videosCount = videoParticipants.length;
const prevVideosCount = usePrevious(videosCount);
const prevVideoParticipants = usePrevious(videoParticipants);
const prevVideosCount = usePreviousDeprecated(videosCount);
const prevVideoParticipants = usePreviousDeprecated(videoParticipants);
const removedVideoParticipants = useMemo(() => {
return prevVideoParticipants?.filter(
({ id, type }) => !videoParticipants.some((p) => p.id === id && p.type === type),

View File

@ -8,7 +8,7 @@ import { throttleWithTickEnd } from '../../util/schedulers';
import useForceUpdate from '../../hooks/useForceUpdate';
import useLang from '../../hooks/useLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import styles from './AnimatedCounter.module.scss';
@ -34,7 +34,7 @@ const AnimatedCounter: FC<OwnProps> = ({
}) => {
const { isRtl } = useLang();
const prevText = usePrevious(text);
const prevText = usePreviousDeprecated(text);
const forceUpdate = useForceUpdate();
const shouldAnimate = scheduleAnimation(

View File

@ -11,7 +11,7 @@ import { formatDateToString, formatTime, getDayStart } from '../../util/dates/da
import useFlag from '../../hooks/useFlag';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import Button from '../ui/Button';
import Modal from '../ui/Modal';
@ -73,7 +73,7 @@ const CalendarModal: FC<OwnProps> = ({
}, [isPastMode, maxAt]);
const passedSelectedDate = useMemo(() => (selectedAt ? new Date(selectedAt) : new Date()), [selectedAt]);
const prevIsOpen = usePrevious(isOpen);
const prevIsOpen = usePreviousDeprecated(isOpen);
const [isTimeInputFocused, markTimeInputAsFocused] = useFlag(false);
const [selectedDate, setSelectedDate] = useState<Date>(passedSelectedDate);

View File

@ -121,7 +121,7 @@ import useFlag from '../../hooks/useFlag';
import useGetSelectionRange from '../../hooks/useGetSelectionRange';
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import useSchedule from '../../hooks/useSchedule';
import useSendMessageAction from '../../hooks/useSendMessageAction';
import useShowTransition from '../../hooks/useShowTransition';
@ -418,7 +418,7 @@ const Composer: FC<OwnProps & StateProps> = ({
const [isMounted, setIsMounted] = useState(false);
const getSelectionRange = useGetSelectionRange(editableInputCssSelector);
const lastMessageSendTimeSeconds = useRef<number>();
const prevDropAreaState = usePrevious(dropAreaState);
const prevDropAreaState = usePreviousDeprecated(dropAreaState);
const { width: windowWidth } = windowSize.get();
const isInMessageList = type === 'messageList';

View File

@ -10,7 +10,7 @@ import buildClassName from '../../util/buildClassName';
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import Button from '../ui/Button';
import Modal from '../ui/Modal';
@ -39,7 +39,7 @@ const CountryPickerModal: FC<OwnProps> = ({
const lang = useOldLang();
const [selectedCountryIds, setSelectedCountryIds] = useState<string[]>([]);
const prevSelectedCountryIds = usePrevious(selectedCountryIds);
const prevSelectedCountryIds = usePreviousDeprecated(selectedCountryIds);
const noPickerScrollRestore = prevSelectedCountryIds === selectedCountryIds;
const displayedIds = useMemo(() => {

View File

@ -15,7 +15,7 @@ import buildClassName from '../../util/buildClassName';
import { useIntersectionObserver } from '../../hooks/useIntersectionObserver';
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import Modal from '../ui/Modal';
import StickerSetCard from './StickerSetCard';
@ -49,7 +49,7 @@ const CustomEmojiSetsModal: FC<OwnProps & StateProps> = ({
rootRef: customEmojiModalRef, isDisabled: !customEmojiSets,
});
const prevCustomEmojiSets = usePrevious(customEmojiSets);
const prevCustomEmojiSets = usePreviousDeprecated(customEmojiSets);
const renderingCustomEmojiSets = customEmojiSets || prevCustomEmojiSets;
const handleSetClick = useLastCallback((sticker: ApiSticker) => {

View File

@ -33,7 +33,7 @@ import renderText from './helpers/renderText';
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import useManagePermissions from '../right/hooks/useManagePermissions';
import PermissionCheckboxList from '../main/PermissionCheckboxList';
@ -101,7 +101,7 @@ const DeleteMessageModal: FC<OwnProps & StateProps> = ({
closeDeleteMessageModal,
} = getActions();
const prevIsOpen = usePrevious(isOpen);
const prevIsOpen = usePreviousDeprecated(isOpen);
const lang = useOldLang();

View File

@ -11,7 +11,7 @@ import { copyTextToClipboard } from '../../util/clipboard';
import { isBetween } from '../../util/math';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import ConfirmDialog from '../ui/ConfirmDialog';
import Draggable from '../ui/Draggable';
@ -49,7 +49,7 @@ const ManageUsernames: FC<OwnProps> = ({
const [usernameForConfirm, setUsernameForConfirm] = useState<ApiUsername | undefined>();
const usernameList = useMemo(() => usernames.map(({ username }) => username), [usernames]);
const prevUsernameList = usePrevious(usernameList);
const prevUsernameList = usePreviousDeprecated(usernameList);
const [state, setState] = useState<SortState>({
orderedUsernames: usernameList,

View File

@ -26,7 +26,7 @@ import renderText from './helpers/renderText';
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import usePhotosPreload from './hooks/usePhotosPreload';
import Transition from '../ui/Transition';
@ -87,8 +87,8 @@ const ProfileInfo: FC<OwnProps & StateProps> = ({
const userProfilePhotos = user?.profilePhotos;
const chatProfilePhotos = chat?.profilePhotos;
const photos = userProfilePhotos?.photos || chatProfilePhotos?.photos || MEMO_EMPTY_ARRAY;
const prevMediaIndex = usePrevious(mediaIndex);
const prevAvatarOwnerId = usePrevious(avatarOwnerId);
const prevMediaIndex = usePreviousDeprecated(mediaIndex);
const prevAvatarOwnerId = usePreviousDeprecated(avatarOwnerId);
const [hasSlideAnimation, setHasSlideAnimation] = useState(true);
// slideOptimized doesn't work well when animation is dynamically disabled
const slideAnimation = hasSlideAnimation ? (lang.isRtl ? 'slideRtl' : 'slide') : 'none';

View File

@ -27,7 +27,7 @@ import renderText from './helpers/renderText';
import useAppLayout from '../../hooks/useAppLayout';
import { useIntersectionObserver } from '../../hooks/useIntersectionObserver';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import useSchedule from '../../hooks/useSchedule';
import useScrolledState from '../../hooks/useScrolledState';
@ -90,7 +90,7 @@ const StickerSetModal: FC<OwnProps & StateProps> = ({
const { isMobile } = useAppLayout();
const prevStickerSet = usePrevious(stickerSet);
const prevStickerSet = usePreviousDeprecated(stickerSet);
const renderingStickerSet = stickerSet || prevStickerSet;
const isAdded = Boolean(!renderingStickerSet?.isArchived && renderingStickerSet?.installedDate);

View File

@ -11,7 +11,7 @@ import {
} from '../../util/username';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import InputText from '../ui/InputText';
@ -43,7 +43,7 @@ const UsernameInput: FC<OwnProps> = ({
const langPrefix = asLink ? 'SetUrl' : 'Username';
const label = asLink ? lang('SetUrlPlaceholder') : lang('Username');
const previousIsUsernameAvailable = usePrevious(isUsernameAvailable);
const previousIsUsernameAvailable = usePreviousDeprecated(isUsernameAvailable);
const renderingIsUsernameAvailable = currentUsername !== username
? (isUsernameAvailable ?? previousIsUsernameAvailable) : undefined;
const isChecking = username && currentUsername !== username && checkedUsername !== username;

View File

@ -17,7 +17,7 @@ import {
import useFoldersReducer from '../../hooks/reducers/useFoldersReducer';
import { useHotkeys } from '../../hooks/useHotkeys';
import useLastCallback from '../../hooks/useLastCallback';
import usePrevious2 from '../../hooks/usePrevious2';
import usePrevious from '../../hooks/usePrevious';
import { useStateRef } from '../../hooks/useStateRef';
import useSyncEffect from '../../hooks/useSyncEffect';
@ -448,7 +448,7 @@ function LeftColumn({
setSettingsScreen(screen);
});
const prevSettingsScreenRef = useStateRef(usePrevious2(contentType === ContentType.Settings ? settingsScreen : -1));
const prevSettingsScreenRef = useStateRef(usePrevious(contentType === ContentType.Settings ? settingsScreen : -1));
useEffect(() => {
if (!IS_TOUCH_ENV) {

View File

@ -28,7 +28,7 @@ import useInfiniteScroll from '../../../hooks/useInfiniteScroll';
import { useIntersectionObserver, useOnIntersect } from '../../../hooks/useIntersectionObserver';
import useLastCallback from '../../../hooks/useLastCallback';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useOrderDiff from './hooks/useOrderDiff';
import GroupCallTopPane from '../../calls/group/GroupCallTopPane';
@ -129,7 +129,7 @@ const ForumPanel: FC<OwnProps & StateProps> = ({
const shouldRenderRef = useRef(false);
const isVisible = isOpen && !isHidden;
const prevIsVisible = usePrevious(isVisible);
const prevIsVisible = usePreviousDeprecated(isVisible);
if (prevIsVisible !== isVisible) {
shouldRenderRef.current = false;

View File

@ -1,12 +1,12 @@
import { useRef } from '../../../../lib/teact/teact';
import useForceUpdate from '../../../../hooks/useForceUpdate';
import usePrevious from '../../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../../hooks/usePreviousDeprecated';
export default function useLeftHeaderButtonRtlForumTransition(shouldHideSearch?: boolean) {
const forceUpdate = useForceUpdate();
const shouldDisableDropdownMenuTransitionRef = useRef(shouldHideSearch);
const prevShouldHideSearch = usePrevious(shouldHideSearch);
const prevShouldHideSearch = usePreviousDeprecated(shouldHideSearch);
function handleDropdownMenuTransitionEnd() {
shouldDisableDropdownMenuTransitionRef.current = Boolean(shouldHideSearch);

View File

@ -3,7 +3,7 @@ import { useMemo } from '../../../../lib/teact/teact';
import { mapValues } from '../../../../util/iteratees';
import { useChatAnimationType } from './useChatAnimationType';
import usePrevious from '../../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../../hooks/usePreviousDeprecated';
export default function useOrderDiff(orderedIds: (string | number)[] | undefined, key?: string) {
const orderById = useMemo(() => {
@ -17,8 +17,8 @@ export default function useOrderDiff(orderedIds: (string | number)[] | undefined
}, {} as Record<string, number>);
}, [orderedIds]);
const prevOrderById = usePrevious(orderById);
const prevChatId = usePrevious(key);
const prevOrderById = usePreviousDeprecated(orderById);
const prevChatId = usePreviousDeprecated(key);
const orderDiffById = useMemo(() => {
if (!orderById || !prevOrderById || key !== prevChatId) {

View File

@ -20,7 +20,7 @@ import renderText from '../../common/helpers/renderText';
import useHistoryBack from '../../../hooks/useHistoryBack';
import useMedia from '../../../hooks/useMedia';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import ManageUsernames from '../../common/ManageUsernames';
import SafeLink from '../../common/SafeLink';
@ -91,7 +91,7 @@ const SettingsEditProfile: FC<OwnProps & StateProps> = ({
const isLoading = progress === ProfileEditProgress.InProgress;
const isUsernameError = editableUsername === false;
const previousIsUsernameAvailable = usePrevious(isUsernameAvailable);
const previousIsUsernameAvailable = usePreviousDeprecated(isUsernameAvailable);
const renderingIsUsernameAvailable = isUsernameAvailable ?? previousIsUsernameAvailable;
const shouldRenderUsernamesManage = usernames && usernames.length > 1;

View File

@ -16,7 +16,7 @@ import { fetchBlob } from '../../../util/files';
import useCanvasBlur from '../../../hooks/useCanvasBlur';
import useMedia from '../../../hooks/useMedia';
import useMediaWithLoadProgress from '../../../hooks/useMediaWithLoadProgress';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useShowTransition from '../../../hooks/useShowTransition';
import ProgressSpinner from '../../ui/ProgressSpinner';
@ -52,7 +52,7 @@ const WallpaperTile: FC<OwnProps> = ({
const {
mediaData: fullMedia, loadProgress,
} = useMediaWithLoadProgress(localMediaHash, !isLoadAllowed);
const wasLoadDisabled = usePrevious(isLoadAllowed) === false;
const wasLoadDisabled = usePreviousDeprecated(isLoadAllowed) === false;
const { shouldRender: shouldRenderSpinner, transitionClassNames: spinnerClassNames } = useShowTransition(
(isLoadAllowed && !fullMedia) || slug === UPLOADING_WALLPAPER_SLUG,
undefined,

View File

@ -19,7 +19,7 @@ import renderText from '../../../common/helpers/renderText';
import { useFolderManagerForChatsCount } from '../../../../hooks/useFolderManager';
import useHistoryBack from '../../../../hooks/useHistoryBack';
import useOldLang from '../../../../hooks/useOldLang';
import usePrevious from '../../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../../hooks/usePreviousDeprecated';
import AnimatedIcon from '../../../common/AnimatedIcon';
import Button from '../../../ui/Button';
@ -76,7 +76,7 @@ const SettingsFoldersMain: FC<OwnProps & StateProps> = ({
draggedIndex: undefined,
});
const prevFolderIds = usePrevious(folderIds);
const prevFolderIds = usePreviousDeprecated(folderIds);
// Sync folders state after changing folders in other clients
useEffect(() => {

View File

@ -5,7 +5,7 @@ import { getActions } from '../../global';
import type { ApiChatFolder } from '../../api/types';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import ConfirmDialog from '../ui/ConfirmDialog';
@ -21,7 +21,7 @@ const DeleteFolderDialog: FC<OwnProps> = ({
const isOpen = Boolean(folder);
const renderingFolder = usePrevious(folder) || folder;
const renderingFolder = usePreviousDeprecated(folder) || folder;
const isMyChatlist = renderingFolder?.hasMyInvites;
const handleDeleteFolderMessage = useCallback(() => {

View File

@ -15,7 +15,7 @@ import {
import useFlag from '../../hooks/useFlag';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import RecipientPicker from '../common/RecipientPicker';
@ -48,7 +48,7 @@ const ForwardRecipientPicker: FC<OwnProps & StateProps> = ({
const lang = useOldLang();
const renderingIsStory = usePrevious(isStory, true);
const renderingIsStory = usePreviousDeprecated(isStory, true);
const [isShown, markIsShown, unmarkIsShown] = useFlag();
useEffect(() => {
if (isOpen) {

View File

@ -17,7 +17,7 @@ import renderText from '../../common/helpers/renderText';
import useFlag from '../../../hooks/useFlag';
import useLastCallback from '../../../hooks/useLastCallback';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import SliderDots from '../../common/SliderDots';
import Button from '../../ui/Button';
@ -129,7 +129,7 @@ const PremiumFeatureModal: FC<OwnProps> = ({
const [isScrolledToTop, setIsScrolledToTop] = useState(true);
const [isScrolledToBottom, setIsScrolledToBottom] = useState(false);
const prevInitialSection = usePrevious(initialSection);
const prevInitialSection = usePreviousDeprecated(initialSection);
const filteredSections = useMemo(() => {
if (!premiumPromoOrder) return PREMIUM_FEATURE_SECTIONS;

View File

@ -44,7 +44,7 @@ import { dispatchHeavyAnimationEvent } from '../../hooks/useHeavyAnimationCheck'
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import { exitPictureInPictureIfNeeded, usePictureInPictureSignal } from '../../hooks/usePictureInPicture';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import { dispatchPriorityPlaybackEvent } from '../../hooks/usePriorityPlaybackCheck';
import { useMediaProps } from './hooks/useMediaProps';
@ -120,7 +120,7 @@ const MediaViewer = ({
/* Animation */
const animationKey = useRef<number>();
const senderId = message?.senderId || avatarOwner?.id;
const prevSenderId = usePrevious<string | undefined>(senderId);
const prevSenderId = usePreviousDeprecated<string | undefined>(senderId);
const headerAnimation = withAnimation ? 'slideFade' : 'none';
const isGhostAnimation = Boolean(withAnimation && !shouldSkipHistoryAnimations);
@ -201,11 +201,11 @@ const MediaViewer = ({
};
}, [forceUpdate]);
const prevMessage = usePrevious<ApiMessage | undefined>(message);
const prevIsHidden = usePrevious<boolean | undefined>(isHidden);
const prevOrigin = usePrevious(origin);
const prevItem = usePrevious(currentItem);
const prevBestImageData = usePrevious(bestImageData);
const prevMessage = usePreviousDeprecated<ApiMessage | undefined>(message);
const prevIsHidden = usePreviousDeprecated<boolean | undefined>(isHidden);
const prevOrigin = usePreviousDeprecated(origin);
const prevItem = usePreviousDeprecated(currentItem);
const prevBestImageData = usePreviousDeprecated(bestImageData);
const textParts = message ? renderMessageText({ message, forcePlayback: true, isForMediaViewer: true }) : undefined;
const hasFooter = Boolean(textParts);
const shouldAnimateOpening = prevIsHidden && prevItem !== currentItem;

View File

@ -37,7 +37,7 @@ import renderText from '../common/helpers/renderText';
import useLang from '../../hooks/useLang';
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import useManagePermissions from '../right/hooks/useManagePermissions';
import Avatar from '../common/Avatar';
@ -100,7 +100,7 @@ const DeleteSelectedMessageModal: FC<OwnProps & StateProps> = ({
updateChatMemberBannedRights,
} = getActions();
const prevIsOpen = usePrevious(isOpen);
const prevIsOpen = usePreviousDeprecated(isOpen);
const oldLang = useOldLang();
const lang = useLang();

View File

@ -27,7 +27,7 @@ import { preventMessageInputBlur } from './helpers/preventMessageInputBlur';
import useDerivedSignal from '../../hooks/useDerivedSignal';
import { getIsHeavyAnimating } from '../../hooks/useHeavyAnimationCheck';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import useMessageObservers from './hooks/useMessageObservers';
import useScrollHooks from './hooks/useScrollHooks';
@ -139,7 +139,7 @@ const MessageListContent: FC<OwnProps> = ({
}, 0);
let appearanceIndex = 0;
const prevMessageIds = usePrevious(messageIds);
const prevMessageIds = usePreviousDeprecated(messageIds);
const isNewMessage = Boolean(
messageIds && prevMessageIds && messageIds[messageIds.length - 2] === prevMessageIds[prevMessageIds.length - 1],
);

View File

@ -20,7 +20,7 @@ import captureKeyboardListeners from '../../util/captureKeyboardListeners';
import useFlag from '../../hooks/useFlag';
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import useCopySelectedMessages from './hooks/useCopySelectedMessages';
import ReportModal from '../common/ReportModal';
@ -105,7 +105,7 @@ const MessageSelectToolbar: FC<OwnProps & StateProps> = ({
exitMessageSelectMode();
});
const prevSelectedMessagesCount = usePrevious(selectedMessagesCount || undefined, true);
const prevSelectedMessagesCount = usePreviousDeprecated(selectedMessagesCount || undefined, true);
const renderingSelectedMessagesCount = isActive ? selectedMessagesCount : prevSelectedMessagesCount;
const formattedMessagesCount = lang('VoiceOver.Chat.MessagesSelected', renderingSelectedMessagesCount, 'i');

View File

@ -72,7 +72,7 @@ import useHistoryBack from '../../hooks/useHistoryBack';
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import usePrevDuringAnimation from '../../hooks/usePrevDuringAnimation';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import { useResize } from '../../hooks/useResize';
import useSyncEffect from '../../hooks/useSyncEffect';
import useWindowSize from '../../hooks/window/useWindowSize';
@ -286,7 +286,7 @@ function MiddleColumn({
closeAnimationDuration,
);
const prevTransitionKey = usePrevious(currentTransitionKey);
const prevTransitionKey = usePreviousDeprecated(currentTransitionKey);
const cleanupExceptionKey = (
prevTransitionKey !== undefined && prevTransitionKey < currentTransitionKey ? prevTransitionKey : undefined

View File

@ -62,7 +62,7 @@ import useEnsureMessage from '../../hooks/useEnsureMessage';
import useLastCallback from '../../hooks/useLastCallback';
import useLongPress from '../../hooks/useLongPress';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import useShowTransition from '../../hooks/useShowTransition';
import useWindowSize from '../../hooks/window/useWindowSize';
@ -330,7 +330,7 @@ const MiddleHeader: FC<OwnProps & StateProps> = ({
const renderingCanUnpin = useCurrentOrPrev(canUnpin, true);
const renderingPinnedMessageTitle = useCurrentOrPrev(topMessageTitle);
const prevTransitionKey = usePrevious(currentTransitionKey);
const prevTransitionKey = usePreviousDeprecated(currentTransitionKey);
const cleanupExceptionKey = (
prevTransitionKey !== undefined && prevTransitionKey < currentTransitionKey ? prevTransitionKey : undefined
);

View File

@ -37,7 +37,7 @@ import useFlag from '../../../hooks/useFlag';
import useGetSelectionRange from '../../../hooks/useGetSelectionRange';
import useLastCallback from '../../../hooks/useLastCallback';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useScrolledState from '../../../hooks/useScrolledState';
import useCustomEmojiTooltip from './hooks/useCustomEmojiTooltip';
import useEmojiTooltip from './hooks/useEmojiTooltip';
@ -149,7 +149,7 @@ const AttachmentModal: FC<OwnProps & StateProps> = ({
const inputRef = useRef<HTMLDivElement>(null);
const hideTimeoutRef = useRef<number>();
const prevAttachments = usePrevious(attachments);
const prevAttachments = usePreviousDeprecated(attachments);
const renderingAttachments = attachments.length ? attachments : prevAttachments;
const { isMobile } = useAppLayout();

View File

@ -13,7 +13,7 @@ import captureEscKeyListener from '../../../util/captureEscKeyListener';
import useHorizontalScroll from '../../../hooks/useHorizontalScroll';
import { useIntersectionObserver } from '../../../hooks/useIntersectionObserver';
import useLastCallback from '../../../hooks/useLastCallback';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useShowTransition from '../../../hooks/useShowTransition';
import StickerButton from '../../common/StickerButton';
@ -53,7 +53,7 @@ const CustomEmojiTooltip: FC<OwnProps & StateProps> = ({
// eslint-disable-next-line no-null/no-null
const containerRef = useRef<HTMLDivElement>(null);
const { shouldRender, transitionClassNames } = useShowTransition(isOpen, undefined, undefined, false);
const prevStickers = usePrevious(customEmoji, true);
const prevStickers = usePreviousDeprecated(customEmoji, true);
const displayedStickers = customEmoji || prevStickers;
useHorizontalScroll(containerRef);

View File

@ -12,7 +12,7 @@ import getFilesFromDataTransferItems from './helpers/getFilesFromDataTransferIte
import useLastCallback from '../../../hooks/useLastCallback';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useShowTransition from '../../../hooks/useShowTransition';
import Portal from '../../ui/Portal';
@ -43,7 +43,7 @@ const DropArea: FC<OwnProps> = ({
const { showNotification } = getActions();
// eslint-disable-next-line no-null/no-null
const hideTimeoutRef = useRef<number>(null);
const prevWithQuick = usePrevious(withQuick);
const prevWithQuick = usePreviousDeprecated(withQuick);
const { shouldRender, transitionClassNames } = useShowTransition(isOpen);
const isInAlbum = editingMessage && editingMessage?.groupedId;

View File

@ -16,7 +16,7 @@ import { IS_TOUCH_ENV } from '../../../util/windowEnvironment';
import useCurrentOrPrev from '../../../hooks/useCurrentOrPrev';
import { useIntersectionObserver } from '../../../hooks/useIntersectionObserver';
import useLastCallback from '../../../hooks/useLastCallback';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useShowTransition from '../../../hooks/useShowTransition';
import { useKeyboardNavigation } from './hooks/useKeyboardNavigation';
@ -117,7 +117,7 @@ const InlineBotTooltip: FC<OwnProps> = ({
});
});
const prevInlineBotResults = usePrevious(
const prevInlineBotResults = usePreviousDeprecated(
inlineBotResults?.length
? inlineBotResults
: undefined,

View File

@ -8,7 +8,7 @@ import buildClassName from '../../../util/buildClassName';
import setTooltipItemVisible from '../../../util/setTooltipItemVisible';
import useLastCallback from '../../../hooks/useLastCallback';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useShowTransition from '../../../hooks/useShowTransition';
import { useKeyboardNavigation } from './hooks/useKeyboardNavigation';
@ -74,7 +74,7 @@ const MentionTooltip: FC<OwnProps> = ({
}
}, [filteredUsers, onClose]);
const prevChatMembers = usePrevious(
const prevChatMembers = usePreviousDeprecated(
filteredUsers?.length
? filteredUsers
: undefined,

View File

@ -11,7 +11,7 @@ import buildClassName from '../../../util/buildClassName';
import captureEscKeyListener from '../../../util/captureEscKeyListener';
import { useIntersectionObserver } from '../../../hooks/useIntersectionObserver';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useSendMessageAction from '../../../hooks/useSendMessageAction';
import useShowTransition from '../../../hooks/useShowTransition';
@ -49,7 +49,7 @@ const StickerTooltip: FC<OwnProps & StateProps> = ({
// eslint-disable-next-line no-null/no-null
const containerRef = useRef<HTMLDivElement>(null);
const { shouldRender, transitionClassNames } = useShowTransition(isOpen, undefined, undefined, false);
const prevStickers = usePrevious(stickers, true);
const prevStickers = usePreviousDeprecated(stickers, true);
const displayedStickers = stickers || prevStickers;
const sendMessageAction = useSendMessageAction(chatId, threadId);

View File

@ -26,7 +26,7 @@ import useForceUpdate from '../../../hooks/useForceUpdate';
import useLastCallback from '../../../hooks/useLastCallback';
import useMedia from '../../../hooks/useMedia';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useDevicePixelRatio from '../../../hooks/window/useDevicePixelRatio';
import Avatar from '../../common/Avatar';
@ -81,7 +81,7 @@ const Location: FC<OwnProps> = ({
const mediaHash = buildStaticMapHash(point, width, height, zoom, dpr);
const mediaBlobUrl = useMedia(mediaHash);
const prevMediaBlobUrl = usePrevious(mediaBlobUrl, true);
const prevMediaBlobUrl = usePreviousDeprecated(mediaBlobUrl, true);
const mapBlobUrl = mediaBlobUrl || prevMediaBlobUrl;
const accuracyRadiusPx = useMemo(() => {

View File

@ -130,7 +130,7 @@ import { dispatchHeavyAnimationEvent } from '../../../hooks/useHeavyAnimationChe
import { useOnIntersect } from '../../../hooks/useIntersectionObserver';
import useLastCallback from '../../../hooks/useLastCallback';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useResizeObserver from '../../../hooks/useResizeObserver';
import useShowTransition from '../../../hooks/useShowTransition';
import useTextLanguage from '../../../hooks/useTextLanguage';
@ -720,7 +720,7 @@ const Message: FC<OwnProps & StateProps> = ({
chatTranslations, chatId, shouldTranslate ? messageId : undefined, requestedTranslationLanguage,
);
// Used to display previous result while new one is loading
const previousTranslatedText = usePrevious(translatedText, Boolean(shouldTranslate));
const previousTranslatedText = usePreviousDeprecated(translatedText, Boolean(shouldTranslate));
const currentTranslatedText = translatedText || previousTranslatedText;

View File

@ -24,7 +24,7 @@ import useLastCallback from '../../../hooks/useLastCallback';
import useLayoutEffectWithPrevDeps from '../../../hooks/useLayoutEffectWithPrevDeps';
import useMediaTransition from '../../../hooks/useMediaTransition';
import useMediaWithLoadProgress from '../../../hooks/useMediaWithLoadProgress';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useShowTransition from '../../../hooks/useShowTransition';
import useBlurredMediaThumbRef from './hooks/useBlurredMediaThumbRef';
@ -134,7 +134,7 @@ const Photo = <T,>({
shouldLoad && !fullMediaData,
uploadProgress !== undefined,
);
const wasLoadDisabled = usePrevious(isLoadAllowed) === false;
const wasLoadDisabled = usePreviousDeprecated(isLoadAllowed) === false;
const {
shouldRender: shouldRenderSpinner,

View File

@ -27,7 +27,7 @@ import { useIsIntersecting } from '../../../hooks/useIntersectionObserver';
import useLastCallback from '../../../hooks/useLastCallback';
import useMediaTransition from '../../../hooks/useMediaTransition';
import useMediaWithLoadProgress from '../../../hooks/useMediaWithLoadProgress';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useShowTransition from '../../../hooks/useShowTransition';
import useBlurredMediaThumbRef from './hooks/useBlurredMediaThumbRef';
@ -104,7 +104,7 @@ const RoundVideo: FC<OwnProps> = ({
const thumbClassNames = useMediaTransition(!noThumb);
const thumbDataUri = getMessageMediaThumbDataUri(message);
const isTransferring = (isLoadAllowed && !isPlayerReady) || isDownloading;
const wasLoadDisabled = usePrevious(isLoadAllowed) === false;
const wasLoadDisabled = usePreviousDeprecated(isLoadAllowed) === false;
const {
shouldRender: shouldSpinnerRender,

View File

@ -25,7 +25,7 @@ import useLastCallback from '../../../hooks/useLastCallback';
import useMedia from '../../../hooks/useMedia';
import useMediaTransition from '../../../hooks/useMediaTransition';
import useMediaWithLoadProgress from '../../../hooks/useMediaWithLoadProgress';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useShowTransition from '../../../hooks/useShowTransition';
import useBlurredMediaThumbRef from './hooks/useBlurredMediaThumbRef';
@ -152,7 +152,7 @@ const Video = <T,>({
uploadProgress !== undefined,
);
const wasLoadDisabled = usePrevious(isLoadAllowed) === false;
const wasLoadDisabled = usePreviousDeprecated(isLoadAllowed) === false;
const {
shouldRender: shouldRenderSpinner,
transitionClassNames: spinnerClassNames,

View File

@ -8,7 +8,7 @@ import type { TabState } from '../../../global/types';
import { selectChatFolder } from '../../../global/selectors';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import Modal from '../../ui/Modal';
import Tab from '../../ui/Tab';
@ -35,8 +35,8 @@ const ChatlistInviteModal: FC<OwnProps & StateProps> = ({
const lang = useOldLang();
const isOpen = Boolean(modal);
const renderingInfo = usePrevious(modal) || modal;
const renderingFolder = usePrevious(folder) || folder;
const renderingInfo = usePreviousDeprecated(modal) || modal;
const renderingFolder = usePreviousDeprecated(folder) || folder;
const title = useMemo(() => {
if (!renderingInfo) return undefined;

View File

@ -24,7 +24,7 @@ import renderText from '../../../common/helpers/renderText';
import useLang from '../../../../hooks/useLang';
import useLastCallback from '../../../../hooks/useLastCallback';
import useOldLang from '../../../../hooks/useOldLang';
import usePrevious from '../../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../../hooks/usePreviousDeprecated';
import AnimatedIconFromSticker from '../../../common/AnimatedIconFromSticker';
import Icon from '../../../common/icons/Icon';
@ -243,7 +243,7 @@ const StarsTransactionModal: FC<OwnProps & StateProps> = ({
};
}, [transaction, oldLang, peer, isGift, animatedStickerData, giftOutAboutText, giftEntryAboutText]);
const prevModalData = usePrevious(starModalData);
const prevModalData = usePreviousDeprecated(starModalData);
const renderingModalData = prevModalData || starModalData;
return (

View File

@ -27,7 +27,7 @@ import useAppLayout from '../../../hooks/useAppLayout';
import useFlag from '../../../hooks/useFlag';
import useLastCallback from '../../../hooks/useLastCallback';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import useSyncEffect from '../../../hooks/useSyncEffect';
import usePopupLimit from './hooks/usePopupLimit';
import useWebAppFrame from './hooks/useWebAppFrame';
@ -561,10 +561,10 @@ const WebAppModal: FC<OwnProps & StateProps> = ({
);
}
const prevMainButtonColor = usePrevious(mainButton?.color, true);
const prevMainButtonTextColor = usePrevious(mainButton?.textColor, true);
const prevMainButtonIsActive = usePrevious(mainButton && Boolean(mainButton.isActive), true);
const prevMainButtonText = usePrevious(mainButton?.text, true);
const prevMainButtonColor = usePreviousDeprecated(mainButton?.color, true);
const prevMainButtonTextColor = usePreviousDeprecated(mainButton?.textColor, true);
const prevMainButtonIsActive = usePreviousDeprecated(mainButton && Boolean(mainButton.isActive), true);
const prevMainButtonText = usePreviousDeprecated(mainButton?.text, true);
const mainButtonCurrentColor = mainButton?.color || prevMainButtonColor;
const mainButtonCurrentTextColor = mainButton?.textColor || prevMainButtonTextColor;

View File

@ -22,7 +22,7 @@ import usePaymentReducer from '../../hooks/reducers/usePaymentReducer';
import useFlag from '../../hooks/useFlag';
import useLastCallback from '../../hooks/useLastCallback';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import Button from '../ui/Button';
import Modal from '../ui/Modal';
@ -135,8 +135,8 @@ const PaymentModal: FC<OwnProps & StateProps & GlobalStateProps> = ({
const [isLoading, setIsLoading] = useState(false);
const [isTosAccepted, setIsTosAccepted] = useState(false);
const [twoFaPassword, setTwoFaPassword] = useState('');
const prevStep = usePrevious(step, true);
const prevRequestId = usePrevious(requestId);
const prevStep = usePreviousDeprecated(step, true);
const prevRequestId = usePreviousDeprecated(requestId);
const canRenderFooter = step !== PaymentStep.ConfirmPayment;
const setStep = useCallback((nextStep) => {

View File

@ -18,7 +18,7 @@ import sortChatIds from '../common/helpers/sortChatIds';
import useHistoryBack from '../../hooks/useHistoryBack';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import PeerPicker from '../common/pickers/PeerPicker';
import FloatingActionButton from '../ui/FloatingActionButton';
@ -63,7 +63,7 @@ const AddChatMembers: FC<OwnProps & StateProps> = ({
const lang = useOldLang();
const [selectedMemberIds, setSelectedMemberIds] = useState<string[]>([]);
const prevSelectedMemberIds = usePrevious(selectedMemberIds);
const prevSelectedMemberIds = usePreviousDeprecated(selectedMemberIds);
const noPickerScrollRestore = prevSelectedMemberIds === selectedMemberIds;
useHistoryBack({

View File

@ -17,7 +17,7 @@ import { selectTabState } from '../../global/selectors';
import { renderTextWithEntities } from '../common/helpers/renderTextWithEntities';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import GroupChatInfo from '../common/GroupChatInfo';
import PrivateChatInfo from '../common/PrivateChatInfo';
@ -58,7 +58,7 @@ const PollAnswerResults: FC<OwnProps & StateProps> = ({
closePollResults,
} = getActions();
const prevVotersCount = usePrevious<number>(answerVote.votersCount);
const prevVotersCount = usePreviousDeprecated<number>(answerVote.votersCount);
const [isLoading, setIsLoading] = useState<boolean>(true);
const areVotersLoaded = Boolean(voters);
const { option, text } = answer;

View File

@ -19,7 +19,7 @@ import { selectCurrentLimit } from '../../../global/selectors/limits';
import useFlag from '../../../hooks/useFlag';
import useHistoryBack from '../../../hooks/useHistoryBack';
import useOldLang from '../../../hooks/useOldLang';
import usePrevious from '../../../hooks/usePrevious';
import usePreviousDeprecated from '../../../hooks/usePreviousDeprecated';
import ManageUsernames from '../../common/ManageUsernames';
import SafeLink from '../../common/SafeLink';
@ -82,7 +82,7 @@ const ManageChatPrivacyType: FC<OwnProps & StateProps> = ({
const [isRevokeConfirmDialogOpen, openRevokeConfirmDialog, closeRevokeConfirmDialog] = useFlag();
const [isUsernameLostDialogOpen, openUsernameLostDialog, closeUsernameLostDialog] = useFlag();
const previousIsUsernameAvailable = usePrevious(isUsernameAvailable);
const previousIsUsernameAvailable = usePreviousDeprecated(isUsernameAvailable);
const renderingIsUsernameAvailable = isUsernameAvailable ?? previousIsUsernameAvailable;
const canUpdate = isProfileFieldsTouched && Boolean(

View File

@ -32,7 +32,7 @@ import useAppLayout from '../../hooks/useAppLayout';
import useCurrentOrPrev from '../../hooks/useCurrentOrPrev';
import useHistoryBack from '../../hooks/useHistoryBack';
import useLastCallback from '../../hooks/useLastCallback';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import useWindowSize from '../../hooks/window/useWindowSize';
import useSlideSizes from './hooks/useSlideSizes';
@ -91,7 +91,7 @@ function StorySlides({
const containerRef = useRef<HTMLDivElement>(null);
const [renderingPeerId, setRenderingPeerId] = useState(currentPeerId);
const [renderingStoryId, setRenderingStoryId] = useState(currentStoryId);
const prevPeerId = usePrevious(currentPeerId);
const prevPeerId = usePreviousDeprecated(currentPeerId);
const renderingIsArchive = useCurrentOrPrev(isArchive, true);
const renderingIsPrivate = useCurrentOrPrev(isPrivate, true);
const renderingIsSinglePeer = useCurrentOrPrev(isSinglePeer, true);

View File

@ -21,7 +21,7 @@ import { animateClosing, animateOpening } from './helpers/ghostAnimation';
import useFlag from '../../hooks/useFlag';
import { dispatchHeavyAnimationEvent } from '../../hooks/useHeavyAnimationCheck';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import { dispatchPriorityPlaybackEvent } from '../../hooks/usePriorityPlaybackCheck';
import useSlideSizes from './hooks/useSlideSizes';
import useStoryProps from './hooks/useStoryProps';
@ -69,10 +69,10 @@ function StoryViewer({
const { bestImageData, thumbnail } = useStoryProps(story);
const slideSizes = useSlideSizes();
const isPrevOpen = usePrevious(isOpen);
const prevBestImageData = usePrevious(bestImageData);
const prevPeerId = usePrevious(peerId);
const prevOrigin = usePrevious(origin);
const isPrevOpen = usePreviousDeprecated(isOpen);
const prevBestImageData = usePreviousDeprecated(bestImageData);
const prevPeerId = usePreviousDeprecated(peerId);
const prevOrigin = usePreviousDeprecated(origin);
const isGhostAnimation = Boolean(withAnimation && !shouldSkipHistoryAnimations);
useEffect(() => {

View File

@ -3,7 +3,7 @@ import React, { useRef } from '../../lib/teact/teact';
import buildClassName from '../../util/buildClassName';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import useShowTransition from '../../hooks/useShowTransition';
type OwnProps = {
@ -33,8 +33,8 @@ const ShowTransition: FC<OwnProps> = ({
style,
ref,
}) => {
const prevIsOpen = usePrevious(isOpen);
const prevChildren = usePrevious(children);
const prevIsOpen = usePreviousDeprecated(isOpen);
const prevChildren = usePreviousDeprecated(children);
const fromChildrenRef = useRef<React.ReactNode>();
const isFirstRender = prevIsOpen === undefined;
const {

View File

@ -10,7 +10,7 @@ import { IS_ANDROID, IS_IOS } from '../../util/windowEnvironment';
import useHorizontalScroll from '../../hooks/useHorizontalScroll';
import useOldLang from '../../hooks/useOldLang';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import Tab from './Tab';
@ -45,7 +45,7 @@ const TabList: FC<OwnProps> = ({
}) => {
// eslint-disable-next-line no-null/no-null
const containerRef = useRef<HTMLDivElement>(null);
const previousActiveTab = usePrevious(activeTab);
const previousActiveTab = usePreviousDeprecated(activeTab);
useHorizontalScroll(containerRef, undefined, true);

View File

@ -15,7 +15,7 @@ import { allowSwipeControlForTransition } from '../../util/swipeController';
import useForceUpdate from '../../hooks/useForceUpdate';
import { dispatchHeavyAnimationEvent } from '../../hooks/useHeavyAnimationCheck';
import usePrevious from '../../hooks/usePrevious';
import usePreviousDeprecated from '../../hooks/usePreviousDeprecated';
import './Transition.scss';
@ -98,7 +98,7 @@ function Transition({
}
const rendersRef = useRef<Record<number, React.ReactNode | ChildrenFn>>({});
const prevActiveKey = usePrevious<any>(activeKey);
const prevActiveKey = usePreviousDeprecated<any>(activeKey);
const forceUpdate = useForceUpdate();
const isAnimatingRef = useRef(false);
const isSwipeJustCancelledRef = useRef(false);

View File

@ -1,9 +1,9 @@
import usePrevious from './usePrevious';
import usePreviousDeprecated from './usePreviousDeprecated';
export default function useCurrentOrPrev<T extends any>(
current: T, shouldSkipUndefined = false, shouldForceCurrent = false,
): T | undefined {
const prev = usePrevious(current, shouldSkipUndefined);
const prev = usePreviousDeprecated(current, shouldSkipUndefined);
// eslint-disable-next-line no-null/no-null
return shouldForceCurrent || (current !== null && current !== undefined) ? current : prev;

View File

@ -5,7 +5,7 @@ import { LoadMoreDirection } from '../types';
import { areSortedArraysEqual } from '../util/iteratees';
import useForceUpdate from './useForceUpdate';
import useLastCallback from './useLastCallback';
import usePrevious from './usePrevious';
import usePreviousDeprecated from './usePreviousDeprecated';
type GetMore = (args: { direction: LoadMoreDirection }) => void;
type LoadMoreBackwards = (args: { offsetId?: string | number }) => void;
@ -39,8 +39,8 @@ const useInfiniteScroll = <ListId extends string | number>(
requestParamsRef.current = {};
}
const prevListIds = usePrevious(listIds);
const prevIsDisabled = usePrevious(isDisabled);
const prevListIds = usePreviousDeprecated(listIds);
const prevIsDisabled = usePreviousDeprecated(isDisabled);
if (listIds && !isDisabled && (listIds !== prevListIds || isDisabled !== prevIsDisabled)) {
const { viewportIds, isOnTop } = currentStateRef.current || {};
const currentMiddleId = viewportIds && !isOnTop ? viewportIds[Math.round(viewportIds.length / 2)] : undefined;

View File

@ -1,11 +1,11 @@
import { useRef } from '../lib/teact/teact';
import useForceUpdate from './useForceUpdate';
import usePrevious from './usePrevious';
import usePreviousDeprecated from './usePreviousDeprecated';
import useSyncEffect from './useSyncEffect';
export default function usePrevDuringAnimation<T>(current: T, duration?: number): T {
const prev = usePrevious(current, true);
const prev = usePreviousDeprecated(current, true);
const timeoutRef = useRef<number>();
const forceUpdate = useForceUpdate();
// eslint-disable-next-line no-null/no-null

View File

@ -1,17 +1,15 @@
import { useRef } from '../lib/teact/teact';
// Deprecated. Use `usePrevious2` instead
function usePrevious<T extends any>(next: T): T | undefined;
function usePrevious<T extends any>(next: T, shouldSkipUndefined: true): Exclude<T, undefined> | undefined;
function usePrevious<T extends any>(next: T, shouldSkipUndefined?: boolean): Exclude<T, undefined> | undefined;
function usePrevious<T extends any>(next: T, shouldSkipUndefined?: boolean) {
const ref = useRef<T>();
const { current } = ref;
if (!shouldSkipUndefined || next !== undefined) {
ref.current = next;
// This is not render-dependent and will never allow previous to match current
export default function usePrevious<T extends any>(current: T) {
const prevRef = useRef<T>();
const lastRef = useRef<T>();
if (lastRef.current !== current) {
prevRef.current = lastRef.current;
}
return current;
}
lastRef.current = current;
export default usePrevious;
return prevRef.current;
}

View File

@ -1,15 +0,0 @@
import { useRef } from '../lib/teact/teact';
// This is not render-dependent and will never allow previous to match current
export default function usePrevious2<T extends any>(current: T) {
const prevRef = useRef<T>();
const lastRef = useRef<T>();
if (lastRef.current !== current) {
prevRef.current = lastRef.current;
}
lastRef.current = current;
return prevRef.current;
}

View File

@ -0,0 +1,20 @@
import { useRef } from '../lib/teact/teact';
/**
* @deprecated
*/
function usePreviousDeprecated<T extends any>(next: T): T | undefined;
function usePreviousDeprecated<T extends any>(next: T, shouldSkipUndefined: true): Exclude<T, undefined> | undefined;
// eslint-disable-next-line max-len
function usePreviousDeprecated<T extends any>(next: T, shouldSkipUndefined?: boolean): Exclude<T, undefined> | undefined;
function usePreviousDeprecated<T extends any>(next: T, shouldSkipUndefined?: boolean) {
const ref = useRef<T>();
const { current } = ref;
if (!shouldSkipUndefined || next !== undefined) {
ref.current = next;
}
return current;
}
export default usePreviousDeprecated;

View File

@ -1,13 +1,13 @@
import { useRef } from '../lib/teact/teact';
import useEffectOnce from './useEffectOnce';
import usePrevious from './usePrevious';
import usePreviousDeprecated from './usePreviousDeprecated';
export default function useSyncEffect<const T extends readonly any[]>(
effect: (args: T | readonly []) => NoneToVoidFunction | void,
dependencies: T,
) {
const prevDeps = usePrevious<T>(dependencies);
const prevDeps = usePreviousDeprecated<T>(dependencies);
const cleanupRef = useRef<NoneToVoidFunction>();
if (!prevDeps || dependencies.some((d, i) => d !== prevDeps[i])) {