diff --git a/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PersonalVideo/index.tsx b/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PersonalVideo/index.tsx index f6dbeac..43f66a8 100644 --- a/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PersonalVideo/index.tsx +++ b/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PersonalVideo/index.tsx @@ -4,6 +4,7 @@ import styles from "./styles.module.css"; import Loader from "@/components/Loader"; import PlayButton from "../../../../ui/PlayButton"; import metricService, { EGoals } from "@/services/metric/metricService"; +import PlayPauseButton from "../../../../ui/PlayPauseButton"; interface IPersonalVideoProps { gender: string; @@ -12,6 +13,7 @@ interface IPersonalVideoProps { const PersonalVideo = React.memo(({ url, gender }) => { const [isPlaying, setIsPlaying] = useState(false); + const [isStarted, setIsStarted] = useState(false); const [isError, setIsError] = useState(false); const onError = (error: unknown) => { @@ -21,6 +23,7 @@ const PersonalVideo = React.memo(({ url, gender }) => { }; const onStart = () => { + setIsStarted(true); metricService.reachGoal(EGoals.ROSE_VIDEO_PLAY_START); }; @@ -30,7 +33,9 @@ const PersonalVideo = React.memo(({ url, gender }) => { return (
- {!isPlaying && !isError && } + {!isPlaying && !isError && !isStarted && ( + + )} {isError && ( (({ url, gender }) => { aspectRatio: "16 / 9", }} /> + {!isError && isStarted && ( + setIsPlaying((prev) => !prev)} + className={styles["play-pause-button"]} + /> + )}
); }); diff --git a/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PersonalVideo/styles.module.css b/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PersonalVideo/styles.module.css index 7880b62..b6a4cf5 100644 --- a/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PersonalVideo/styles.module.css +++ b/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PersonalVideo/styles.module.css @@ -15,4 +15,13 @@ top: 50%; left: 50%; transform: translate(-50%, -50%); +} + +.play-pause-button { + position: absolute; + bottom: 10px; + left: 8px; + width: 34px; + height: auto; + z-index: 10; } \ No newline at end of file diff --git a/src/components/pages/ABDesign/v1/ui/PlayPauseButton/index.tsx b/src/components/pages/ABDesign/v1/ui/PlayPauseButton/index.tsx new file mode 100644 index 0000000..3d50ffa --- /dev/null +++ b/src/components/pages/ABDesign/v1/ui/PlayPauseButton/index.tsx @@ -0,0 +1,64 @@ +import { SVGProps } from "react"; + +interface IPlayPauseButtonProps { + state?: "play" | "pause"; +} + +function PlayPauseButton({ + state = "play", + ...props +}: IPlayPauseButtonProps & SVGProps) { + return ( + + + + + {state === "play" && ( + + )} + {state === "pause" && ( + <> + + + + )} + + + + + + + + + + ); +} + +export default PlayPauseButton;