Minor optimizations

This commit is contained in:
Alexander Zinchuk 2023-07-05 13:15:21 +02:00
parent aaf1e8be93
commit 0f04434b65
3 changed files with 13 additions and 22 deletions

View File

@ -1,29 +1,19 @@
import { useEffect, useMemo } from '../lib/teact/teact';
import { useEffect } from '../lib/teact/teact';
import { getActions } from '../global';
import type { ApiMessage } from '../api/types';
import { throttle } from '../util/schedulers';
const useEnsureMessage = (
export default function useEnsureMessage(
chatId: string,
messageId?: number,
message?: ApiMessage,
replyOriginForId?: number,
) => {
) {
const { loadMessage } = getActions();
const loadMessageThrottled = useMemo(() => {
const throttled = throttle(loadMessage, 500, true);
return () => {
throttled({ chatId, messageId: messageId!, replyOriginForId: replyOriginForId! });
};
}, [loadMessage, chatId, messageId, replyOriginForId]);
useEffect(() => {
if (messageId && !message) {
loadMessageThrottled();
loadMessage({ chatId, messageId: messageId!, replyOriginForId: replyOriginForId! });
}
});
};
export default useEnsureMessage;
}, [chatId, message, messageId, replyOriginForId]);
}

View File

@ -1,20 +1,21 @@
import type React from '../lib/teact/teact';
import { IS_TOUCH_ENV, MouseButton } from '../util/windowEnvironment';
import useLastCallback from './useLastCallback';
type EventArg<E> = React.MouseEvent<E>;
type EventHandler<E> = (e: EventArg<E>) => void;
export function useFastClick<T extends HTMLDivElement | HTMLButtonElement>(callback?: EventHandler<T>) {
const wrapperHandler = callback ? (e: EventArg<T>) => {
const handler = useLastCallback((e: EventArg<T>) => {
if (e.type === 'mousedown' && e.button !== MouseButton.Main) {
return;
}
callback(e);
} : undefined;
callback!(e);
});
return IS_TOUCH_ENV
? { handleClick: wrapperHandler }
: { handleMouseDown: wrapperHandler };
? { handleClick: callback ? handler : undefined }
: { handleMouseDown: callback ? handler : undefined };
}

View File

@ -313,7 +313,7 @@ document.addEventListener('dblclick', () => {
Object
.values(DEBUG_components)
.map(({ avgRenderTime, ...state }) => {
return { ...state, ...(avgRenderTime && { avgRenderTime: Number(avgRenderTime.toFixed(2)) }) };
return { ...state, ...(avgRenderTime !== undefined && { avgRenderTime: Number(avgRenderTime.toFixed(2)) }) };
}),
'renders',
'desc',