diff --git a/app/javascript/flavours/glitch/containers/media_container.jsx b/app/javascript/flavours/glitch/containers/media_container.jsx index a7b20bc249..a690382679 100644 --- a/app/javascript/flavours/glitch/containers/media_container.jsx +++ b/app/javascript/flavours/glitch/containers/media_container.jsx @@ -11,7 +11,7 @@ import Poll from 'flavours/glitch/components/poll'; import Audio from 'flavours/glitch/features/audio'; import Card from 'flavours/glitch/features/status/components/card'; import MediaModal from 'flavours/glitch/features/ui/components/media_modal'; -import Video from 'flavours/glitch/features/video'; +import { Video } from 'flavours/glitch/features/video'; import { IntlProvider } from 'flavours/glitch/locales'; import { getScrollbarWidth } from 'flavours/glitch/utils/scrollbar'; diff --git a/app/javascript/flavours/glitch/features/alt_text_modal/index.tsx b/app/javascript/flavours/glitch/features/alt_text_modal/index.tsx index b9ce7e710f..1b03a8011a 100644 --- a/app/javascript/flavours/glitch/features/alt_text_modal/index.tsx +++ b/app/javascript/flavours/glitch/features/alt_text_modal/index.tsx @@ -30,7 +30,7 @@ import { Skeleton } from 'flavours/glitch/components/skeleton'; import Audio from 'flavours/glitch/features/audio'; import { CharacterCounter } from 'flavours/glitch/features/compose/components/character_counter'; import { Tesseract as fetchTesseract } from 'flavours/glitch/features/ui/util/async-components'; -import Video, { getPointerPosition } from 'flavours/glitch/features/video'; +import { Video, getPointerPosition } from 'flavours/glitch/features/video'; import { me } from 'flavours/glitch/initial_state'; import type { MediaAttachment } from 'flavours/glitch/models/media_attachment'; import { useAppSelector, useAppDispatch } from 'flavours/glitch/store'; @@ -134,17 +134,7 @@ const Preview: React.FC<{ return; } - const { x, y } = getPointerPosition(nodeRef.current, e); - setDragging(true); - draggingRef.current = true; - onPositionChange([x, y]); - }, - [setDragging, onPositionChange], - ); - - const handleTouchStart = useCallback( - (e: React.TouchEvent) => { - const { x, y } = getPointerPosition(nodeRef.current, e); + const { x, y } = getPointerPosition(nodeRef.current, e.nativeEvent); setDragging(true); draggingRef.current = true; onPositionChange([x, y]); @@ -165,28 +155,12 @@ const Preview: React.FC<{ } }; - const handleTouchEnd = () => { - setDragging(false); - draggingRef.current = false; - }; - - const handleTouchMove = (e: TouchEvent) => { - if (draggingRef.current) { - const { x, y } = getPointerPosition(nodeRef.current, e); - onPositionChange([x, y]); - } - }; - document.addEventListener('mouseup', handleMouseUp); document.addEventListener('mousemove', handleMouseMove); - document.addEventListener('touchend', handleTouchEnd); - document.addEventListener('touchmove', handleTouchMove); return () => { document.removeEventListener('mouseup', handleMouseUp); document.removeEventListener('mousemove', handleMouseMove); - document.removeEventListener('touchend', handleTouchEnd); - document.removeEventListener('touchmove', handleTouchMove); }; }, [setDragging, onPositionChange]); @@ -204,7 +178,6 @@ const Preview: React.FC<{ alt='' role='presentation' onMouseDown={handleMouseDown} - onTouchStart={handleTouchStart} />
); diff --git a/app/javascript/flavours/glitch/features/audio/index.jsx b/app/javascript/flavours/glitch/features/audio/index.jsx index 291d579346..888ae50618 100644 --- a/app/javascript/flavours/glitch/features/audio/index.jsx +++ b/app/javascript/flavours/glitch/features/audio/index.jsx @@ -27,8 +27,8 @@ import Visualizer from './visualizer'; const messages = defineMessages({ play: { id: 'video.play', defaultMessage: 'Play' }, pause: { id: 'video.pause', defaultMessage: 'Pause' }, - mute: { id: 'video.mute', defaultMessage: 'Mute sound' }, - unmute: { id: 'video.unmute', defaultMessage: 'Unmute sound' }, + mute: { id: 'video.mute', defaultMessage: 'Mute' }, + unmute: { id: 'video.unmute', defaultMessage: 'Unmute' }, download: { id: 'video.download', defaultMessage: 'Download file' }, hide: { id: 'audio.hide', defaultMessage: 'Hide audio' }, }); diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/index.tsx b/app/javascript/flavours/glitch/features/picture_in_picture/index.tsx index 3541e5fdd3..7784453f9d 100644 --- a/app/javascript/flavours/glitch/features/picture_in_picture/index.tsx +++ b/app/javascript/flavours/glitch/features/picture_in_picture/index.tsx @@ -4,7 +4,7 @@ import classNames from 'classnames'; import { removePictureInPicture } from 'flavours/glitch/actions/picture_in_picture'; import Audio from 'flavours/glitch/features/audio'; -import Video from 'flavours/glitch/features/video'; +import { Video } from 'flavours/glitch/features/video'; import { useAppDispatch, useAppSelector, @@ -46,6 +46,10 @@ export const PictureInPicture: React.FC = () => { accentColor, } = pipState; + if (!src) { + return null; + } + let player; switch (type) { @@ -53,11 +57,10 @@ export const PictureInPicture: React.FC = () => { player = (