From a05bd2d4599493b21cb2857629db19d9b2cbabc9 Mon Sep 17 00:00:00 2001 From: Simon Sinclair Date: Fri, 20 Dec 2019 08:19:21 +0000 Subject: [PATCH 01/30] Bump package version --- packages/components/psammead-media-player/package-lock.json | 2 +- packages/components/psammead-media-player/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/components/psammead-media-player/package-lock.json b/packages/components/psammead-media-player/package-lock.json index 2248637977..a09ccb0fcb 100644 --- a/packages/components/psammead-media-player/package-lock.json +++ b/packages/components/psammead-media-player/package-lock.json @@ -1,6 +1,6 @@ { "name": "@bbc/psammead-media-player", - "version": "2.4.4", + "version": "2.5.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/packages/components/psammead-media-player/package.json b/packages/components/psammead-media-player/package.json index 93659e8a40..5ebaf7dd54 100644 --- a/packages/components/psammead-media-player/package.json +++ b/packages/components/psammead-media-player/package.json @@ -1,6 +1,6 @@ { "name": "@bbc/psammead-media-player", - "version": "2.4.4", + "version": "2.5.0", "description": "Provides a media player with optional placeholder", "main": "dist/index.js", "module": "esm/index.js", From 449938b9488355053a5bc830009ddd8525584bba Mon Sep 17 00:00:00 2001 From: Simon Sinclair Date: Fri, 20 Dec 2019 08:40:28 +0000 Subject: [PATCH 02/30] Add changelog entry --- packages/components/psammead-media-player/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/components/psammead-media-player/CHANGELOG.md b/packages/components/psammead-media-player/CHANGELOG.md index af63c5c1a3..de55c6b2de 100644 --- a/packages/components/psammead-media-player/CHANGELOG.md +++ b/packages/components/psammead-media-player/CHANGELOG.md @@ -3,6 +3,7 @@ | Version | Description | | ------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| 2.5.0 | [PR#2836](https://github.com/bbc/psammead/pull/2836) Add AV embed timeout handling. | | 2.4.4 | [PR#2830](https://github.com/bbc/psammead/pull/2830) Talos - Bump Dependencies - @bbc/psammead-play-button | | 2.4.3 | [PR#2827](https://github.com/bbc/psammead/pull/2827) Talos - Bump Dependencies - @bbc/psammead-assets | | 2.4.2 | [PR#2806](https://github.com/bbc/psammead/pull/2806) Fix StyledPlaceholder cursor when Javascript is disabled | From 338933f64b24510d9be01ecfe1d20099fbcf10f5 Mon Sep 17 00:00:00 2001 From: Simon Sinclair Date: Mon, 23 Dec 2019 16:05:17 +0000 Subject: [PATCH 03/30] Add useTimeout hook --- .../psammead-media-player/src/useTimeout.jsx | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 packages/components/psammead-media-player/src/useTimeout.jsx diff --git a/packages/components/psammead-media-player/src/useTimeout.jsx b/packages/components/psammead-media-player/src/useTimeout.jsx new file mode 100644 index 0000000000..54551e95cb --- /dev/null +++ b/packages/components/psammead-media-player/src/useTimeout.jsx @@ -0,0 +1,22 @@ +import { useRef, useEffect } from 'react'; + +const useTimeout = (callback, iframe, timeout) => { + const timer = useRef(null); + + const handleLoad = () => { + clearTimeout(timer.current); + callback(false); + }; + + useEffect(() => { + iframe.current.addEventListener('load', handleLoad); + timer.current = setTimeout(() => { + callback(true); + }, timeout); + return () => { + clearTimeout(timer.current); + }; + }, [iframe]); +}; + +export default useTimeout; From 44b87f619e1331cbf0cd73a92b9839ee6da294cd Mon Sep 17 00:00:00 2001 From: Simon Sinclair Date: Mon, 23 Dec 2019 16:10:55 +0000 Subject: [PATCH 04/30] Refactor Canonical to use timeout hook --- .../src/Canonical/index.jsx | 65 +++++++++++++------ .../psammead-media-player/src/index.jsx | 7 +- 2 files changed, 51 insertions(+), 21 deletions(-) diff --git a/packages/components/psammead-media-player/src/Canonical/index.jsx b/packages/components/psammead-media-player/src/Canonical/index.jsx index 4938605ddc..6e265075c2 100644 --- a/packages/components/psammead-media-player/src/Canonical/index.jsx +++ b/packages/components/psammead-media-player/src/Canonical/index.jsx @@ -1,38 +1,63 @@ -import React from 'react'; +import React, { useState, useRef } from 'react'; import { string } from 'prop-types'; -import styled from 'styled-components'; +import styled, { css } from 'styled-components'; +import Guidance from '../Guidance'; +import useTimeout from '../useTimeout'; -const Canonical = ({ src, title, placeholderSrc }) => { - const backgroundStyle = ` - background-image: url(${placeholderSrc}); - background-repeat: no-repeat; - background-size: contain; - `; +const TIMEOUT_MS = 3000; - const StyledIframe = styled.iframe` +const Canonical = ({ service, src, title, placeholderSrc }) => { + const [hasTimedOut, setHasTimedOut] = useState(null); + const iframe = useRef(null); + + useTimeout(setHasTimedOut, iframe, TIMEOUT_MS); + + const CanonicalWrapper = styled.div` + left: 0; + overflow: hidden; position: absolute; top: 0; - left: 0; width: 100%; height: 100%; + ${placeholderSrc && + css` + background-image: url(${placeholderSrc}); + background-repeat: no-repeat; + background-size: contain; + `} + `; + + const StyledIframe = styled.iframe` border: 0; - overflow: hidden; - ${placeholderSrc ? backgroundStyle : ''} + height: 100%; + width: 100%; `; return ( - + + {hasTimedOut ? ( + + ) : ( + + )} + ); }; Canonical.propTypes = { + service: string.isRequired, src: string.isRequired, title: string.isRequired, placeholderSrc: string, diff --git a/packages/components/psammead-media-player/src/index.jsx b/packages/components/psammead-media-player/src/index.jsx index f7b588c334..4ed6035549 100644 --- a/packages/components/psammead-media-player/src/index.jsx +++ b/packages/components/psammead-media-player/src/index.jsx @@ -51,7 +51,12 @@ export const CanonicalMediaPlayer = ({ noJsMessage={noJsMessage} /> ) : ( - + )} ); From 50aa239184da81c421a5f5d66bb80f692cdd6add Mon Sep 17 00:00:00 2001 From: Simon Sinclair Date: Mon, 23 Dec 2019 16:18:13 +0000 Subject: [PATCH 05/30] Update snapshots --- .../__snapshots__/index.test.jsx.snap | 27 ++++++---- .../src/__snapshots__/index.test.jsx.snap | 54 ++++++++++++------- 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/packages/components/psammead-media-player/src/Canonical/__snapshots__/index.test.jsx.snap b/packages/components/psammead-media-player/src/Canonical/__snapshots__/index.test.jsx.snap index b9b3ff21dc..e74e1574a9 100644 --- a/packages/components/psammead-media-player/src/Canonical/__snapshots__/index.test.jsx.snap +++ b/packages/components/psammead-media-player/src/Canonical/__snapshots__/index.test.jsx.snap @@ -2,21 +2,30 @@ exports[`Media Player: Canonical should render an iframe 1`] = ` .c0 { + left: 0; + overflow: hidden; position: absolute; top: 0; - left: 0; width: 100%; height: 100%; +} + +.c1 { border: 0; - overflow: hidden; + height: 100%; + width: 100%; } -