improve loading style for embedded videos

This commit is contained in:
Sean Yesmunt 2020-05-26 12:16:30 -04:00
parent 9f317de5b6
commit 3480bdc4cc
3 changed files with 40 additions and 10 deletions

View file

@ -1218,5 +1218,6 @@
"Check your rewards page to see if you qualify for paid content reimbursement. Only content in this section qualifies.": "Check your rewards page to see if you qualify for paid content reimbursement. Only content in this section qualifies.", "Check your rewards page to see if you qualify for paid content reimbursement. Only content in this section qualifies.": "Check your rewards page to see if you qualify for paid content reimbursement. Only content in this section qualifies.",
"You don't have blocked channels.": "You don't have blocked channels.", "You don't have blocked channels.": "You don't have blocked channels.",
"You have one blocked channel.": "You have one blocked channel.", "You have one blocked channel.": "You have one blocked channel.",
"You have %channels% blocked channels.": "You have %channels% blocked channels." "You have %channels% blocked channels.": "You have %channels% blocked channels.",
"Drop here to publish!": "Drop here to publish!"
} }

View file

@ -1,6 +1,8 @@
// @flow // @flow
import React, { useEffect } from 'react'; import React, { useEffect } from 'react';
import FileRender from 'component/fileRender'; import FileRender from 'component/fileRender';
import FileViewerEmbeddedTitle from 'component/fileViewerEmbeddedTitle';
import Spinner from 'component/spinner';
type Props = { type Props = {
uri: string, uri: string,
@ -17,6 +19,10 @@ export const EmbedContext = React.createContext();
const EmbedWrapperPage = (props: Props) => { const EmbedWrapperPage = (props: Props) => {
const { resolveUri, claim, uri, doPlayUri, costInfo, streamingUrl, doFetchCostInfoForUri, isResolvingUri } = props; const { resolveUri, claim, uri, doPlayUri, costInfo, streamingUrl, doFetchCostInfoForUri, isResolvingUri } = props;
const haveClaim = Boolean(claim); const haveClaim = Boolean(claim);
const readyToDisplay = claim && streamingUrl;
const loading = !claim && isResolvingUri;
const noContentFound = !claim && !isResolvingUri;
const isPaidContent = costInfo && costInfo.cost > 0;
useEffect(() => { useEffect(() => {
if (resolveUri && uri && !haveClaim) { if (resolveUri && uri && !haveClaim) {
@ -34,12 +40,21 @@ const EmbedWrapperPage = (props: Props) => {
}, [uri, haveClaim, doFetchCostInfoForUri]); }, [uri, haveClaim, doFetchCostInfoForUri]);
return ( return (
<div className={'embed__wrapper'}> <div className="embed__wrapper">
<EmbedContext.Provider value> <EmbedContext.Provider value>
{claim && streamingUrl && <FileRender uri={uri} embedded />} {readyToDisplay ? (
{!claim && isResolvingUri && <h1>Loading...</h1>} <FileRender uri={uri} embedded />
{!claim && !isResolvingUri && <h1>No content at this link.</h1>} ) : (
{claim && costInfo && costInfo.cost > 0 && <h1>Paid content cannot be embedded.</h1>} <div className="embed__loading">
<FileViewerEmbeddedTitle uri={uri} />
<div className="embed__loading-text">
{loading && <Spinner delayed />}
{noContentFound && <h1>No content at this link.</h1>}
{isPaidContent && <h1>Paid content cannot be embedded.</h1>}
</div>
</div>
)}
</EmbedContext.Provider> </EmbedContext.Provider>
</div> </div>
); );

View file

@ -7,9 +7,6 @@
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
background-color: var(--color-black); background-color: var(--color-black);
h1 {
color: white;
}
} }
.embed__inline-button { .embed__inline-button {
@ -28,3 +25,20 @@
height: 200px; height: 200px;
} }
} }
.embed__loading {
width: 100%;
height: 100%;
}
.embed__loading-text {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
color: var(--color-white);
h1 {
font-size: var(--font-title);
}
}