Media Viewer: Prevent refresh when rotating device to watch a video
This commit is contained in:
parent
b249212eb2
commit
de14c30c4a
@ -11,6 +11,7 @@ import { MediaViewerOrigin } from '../../types';
|
|||||||
|
|
||||||
import { ANIMATION_END_DELAY } from '../../config';
|
import { ANIMATION_END_DELAY } from '../../config';
|
||||||
import { IS_IOS, IS_SINGLE_COLUMN_LAYOUT, IS_TOUCH_ENV } from '../../util/environment';
|
import { IS_IOS, IS_SINGLE_COLUMN_LAYOUT, IS_TOUCH_ENV } from '../../util/environment';
|
||||||
|
import windowSize from '../../util/windowSize';
|
||||||
import {
|
import {
|
||||||
AVATAR_FULL_DIMENSIONS,
|
AVATAR_FULL_DIMENSIONS,
|
||||||
MEDIA_VIEWER_MEDIA_QUERY,
|
MEDIA_VIEWER_MEDIA_QUERY,
|
||||||
@ -43,7 +44,6 @@ import {
|
|||||||
getMessageWebPageVideo,
|
getMessageWebPageVideo,
|
||||||
getPhotoFullDimensions,
|
getPhotoFullDimensions,
|
||||||
getVideoDimensions, getMessageFileSize,
|
getVideoDimensions, getMessageFileSize,
|
||||||
|
|
||||||
} from '../../modules/helpers';
|
} from '../../modules/helpers';
|
||||||
import { pick } from '../../util/iteratees';
|
import { pick } from '../../util/iteratees';
|
||||||
import { captureEvents, SwipeDirection } from '../../util/captureEvents';
|
import { captureEvents, SwipeDirection } from '../../util/captureEvents';
|
||||||
@ -332,6 +332,19 @@ const MediaViewer: FC<StateProps & DispatchProps> = ({
|
|||||||
}
|
}
|
||||||
}, [isGif, isVideo]);
|
}, [isGif, isVideo]);
|
||||||
|
|
||||||
|
// Prevent refresh when rotating device to watch a video
|
||||||
|
useEffect(() => {
|
||||||
|
if (!isOpen) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
windowSize.disableRefresh();
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
windowSize.enableRefresh();
|
||||||
|
};
|
||||||
|
}, [isOpen]);
|
||||||
|
|
||||||
const getMessageId = useCallback((fromId: number, direction: number): number => {
|
const getMessageId = useCallback((fromId: number, direction: number): number => {
|
||||||
let index = messageIds.indexOf(fromId);
|
let index = messageIds.indexOf(fromId);
|
||||||
if ((direction === -1 && index > 0) || (direction === 1 && index < messageIds.length - 1)) {
|
if ((direction === -1 && index > 0) || (direction === 1 && index < messageIds.length - 1)) {
|
||||||
|
|||||||
@ -14,11 +14,23 @@ type IDimensions = {
|
|||||||
const IS_LANDSCAPE = IS_SINGLE_COLUMN_LAYOUT && isLandscape();
|
const IS_LANDSCAPE = IS_SINGLE_COLUMN_LAYOUT && isLandscape();
|
||||||
|
|
||||||
let windowSize = updateSizes();
|
let windowSize = updateSizes();
|
||||||
|
let isRefreshDisabled = false;
|
||||||
|
|
||||||
|
function disableRefresh() {
|
||||||
|
isRefreshDisabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function enableRefresh() {
|
||||||
|
isRefreshDisabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
const handleResize = throttle(() => {
|
const handleResize = throttle(() => {
|
||||||
windowSize = updateSizes();
|
windowSize = updateSizes();
|
||||||
|
|
||||||
if ((isMobileScreen() !== IS_SINGLE_COLUMN_LAYOUT) || (IS_SINGLE_COLUMN_LAYOUT && IS_LANDSCAPE !== isLandscape())) {
|
if (!isRefreshDisabled && (
|
||||||
|
isMobileScreen() !== IS_SINGLE_COLUMN_LAYOUT
|
||||||
|
|| (IS_SINGLE_COLUMN_LAYOUT && IS_LANDSCAPE !== isLandscape())
|
||||||
|
)) {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
}
|
}
|
||||||
}, 250, true);
|
}, 250, true);
|
||||||
@ -57,4 +69,6 @@ function isLandscape() {
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
get: () => windowSize,
|
get: () => windowSize,
|
||||||
|
disableRefresh,
|
||||||
|
enableRefresh,
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user