Revert lazy-loading videojs

## Issue
The loading circle wasn't showing up, causing confusion.

Splitting CSS doesn't seem trivial as there seems to be a huge dependency on the load order. Pretty much similar to what this person is facing https://lihautan.com/css-code-splitting/#the-problem

## Change
This reverts videojs-specific changes from 4d638bcf.
This commit is contained in:
infinite-persistence 2021-07-06 17:02:05 +08:00
parent d1ee904dab
commit 5d8e3d8b0a
No known key found for this signature in database
GPG key ID: B9C3252EDC3D0AA0
12 changed files with 92 additions and 121 deletions

View file

@ -4,7 +4,7 @@ import classnames from 'classnames';
import EmbedPlayButton from 'component/embedPlayButton'; import EmbedPlayButton from 'component/embedPlayButton';
import Button from 'component/button'; import Button from 'component/button';
import UriIndicator from 'component/uriIndicator'; import UriIndicator from 'component/uriIndicator';
import { INLINE_PLAYER_WRAPPER_CLASS } from 'constants/classnames'; import { INLINE_PLAYER_WRAPPER_CLASS } from 'component/fileRenderFloating/view';
import { SIMPLE_SITE } from 'config'; import { SIMPLE_SITE } from 'config';
type Props = { type Props = {

View file

@ -3,6 +3,7 @@ import { remote } from 'electron';
import React from 'react'; import React from 'react';
import classnames from 'classnames'; import classnames from 'classnames';
import * as RENDER_MODES from 'constants/file_render_modes'; import * as RENDER_MODES from 'constants/file_render_modes';
import VideoViewer from 'component/viewers/videoViewer';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'react-router-dom';
import fs from 'fs'; import fs from 'fs';
import analytics from 'analytics'; import analytics from 'analytics';
@ -20,7 +21,6 @@ const AppViewer = React.lazy(() => import('component/viewers/appViewer' /* webpa
const HtmlViewer = React.lazy(() => import('component/viewers/htmlViewer' /* webpackChunkName: "htmlViewer" */)); const HtmlViewer = React.lazy(() => import('component/viewers/htmlViewer' /* webpackChunkName: "htmlViewer" */));
const ImageViewer = React.lazy(() => import('component/viewers/imageViewer' /* webpackChunkName: "imageViewer" */)); const ImageViewer = React.lazy(() => import('component/viewers/imageViewer' /* webpackChunkName: "imageViewer" */));
const PdfViewer = React.lazy(() => import('component/viewers/pdfViewer' /* webpackChunkName: "pdfViewer" */)); const PdfViewer = React.lazy(() => import('component/viewers/pdfViewer' /* webpackChunkName: "pdfViewer" */));
const VideoViewer = React.lazy(() => import('component/viewers/videoViewer' /* webpackChunkName: "videoViewer" */));
type Props = { type Props = {
uri: string, uri: string,
@ -86,14 +86,12 @@ class FileRender extends React.PureComponent<Props> {
case RENDER_MODES.AUDIO: case RENDER_MODES.AUDIO:
case RENDER_MODES.VIDEO: case RENDER_MODES.VIDEO:
return ( return (
<React.Suspense fallback={null}>
<VideoViewer <VideoViewer
uri={uri} uri={uri}
source={source} source={source}
contentType={contentType} contentType={contentType}
desktopPlayStartTime={desktopPlayStartTime} desktopPlayStartTime={desktopPlayStartTime}
/> />
</React.Suspense>
); );
case RENDER_MODES.IMAGE: case RENDER_MODES.IMAGE:
return ( return (

View file

@ -1,24 +1,23 @@
// @flow // @flow
import * as ICONS from 'constants/icons'; import * as ICONS from 'constants/icons';
import * as RENDER_MODES from 'constants/file_render_modes'; import * as RENDER_MODES from 'constants/file_render_modes';
import { INLINE_PLAYER_WRAPPER_CLASS } from 'constants/classnames';
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import Button from 'component/button'; import Button from 'component/button';
import classnames from 'classnames'; import classnames from 'classnames';
import LoadingScreen from 'component/common/loading-screen'; import LoadingScreen from 'component/common/loading-screen';
import FileRender from 'component/fileRender';
import UriIndicator from 'component/uriIndicator'; import UriIndicator from 'component/uriIndicator';
import usePersistedState from 'effects/use-persisted-state'; import usePersistedState from 'effects/use-persisted-state';
import { PRIMARY_PLAYER_WRAPPER_CLASS } from 'page/file/view'; import { PRIMARY_PLAYER_WRAPPER_CLASS } from 'page/file/view';
import Draggable from 'react-draggable';
import { onFullscreenChange } from 'util/full-screen'; import { onFullscreenChange } from 'util/full-screen';
import { useIsMobile } from 'effects/use-screensize'; import { useIsMobile } from 'effects/use-screensize';
import debounce from 'util/debounce'; import debounce from 'util/debounce';
import { useHistory } from 'react-router'; import { useHistory } from 'react-router';
const Draggable = React.lazy(() => import('react-draggable' /* webpackChunkName: "draggable" */));
const FileRender = React.lazy(() => import('component/fileRender' /* webpackChunkName: "fileRender" */));
const IS_DESKTOP_MAC = typeof process === 'object' ? process.platform === 'darwin' : false; const IS_DESKTOP_MAC = typeof process === 'object' ? process.platform === 'darwin' : false;
const DEBOUNCE_WINDOW_RESIZE_HANDLER_MS = 60; const DEBOUNCE_WINDOW_RESIZE_HANDLER_MS = 60;
export const INLINE_PLAYER_WRAPPER_CLASS = 'inline-player__wrapper';
type Props = { type Props = {
isFloating: boolean, isFloating: boolean,
@ -244,7 +243,6 @@ export default function FileRenderFloating(props: Props) {
} }
return ( return (
<React.Suspense fallback={null}>
<Draggable <Draggable
onDrag={handleDragMove} onDrag={handleDragMove}
onStart={handleDragStart} onStart={handleDragStart}
@ -291,7 +289,6 @@ export default function FileRenderFloating(props: Props) {
)} )}
{isReadyToPlay ? ( {isReadyToPlay ? (
<React.Suspense fallback={null}>
<FileRender <FileRender
className="draggable" className="draggable"
uri={uri} uri={uri}
@ -299,7 +296,6 @@ export default function FileRenderFloating(props: Props) {
desktopPlayStartTime={desktopPlayStartTime} desktopPlayStartTime={desktopPlayStartTime}
// @endif // @endif
/> />
</React.Suspense>
) : ( ) : (
<LoadingScreen status={loadingMessage} /> <LoadingScreen status={loadingMessage} />
)} )}
@ -314,6 +310,5 @@ export default function FileRenderFloating(props: Props) {
</div> </div>
</div> </div>
</Draggable> </Draggable>
</React.Suspense>
); );
} }

View file

@ -1,10 +1,9 @@
// @flow // @flow
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import FileRender from 'component/fileRender';
import LoadingScreen from 'component/common/loading-screen'; import LoadingScreen from 'component/common/loading-screen';
import { NON_STREAM_MODES } from 'constants/file_render_modes'; import { NON_STREAM_MODES } from 'constants/file_render_modes';
const FileRender = React.lazy(() => import('component/fileRender' /* webpackChunkName: "fileRender" */));
type Props = { type Props = {
isPlaying: boolean, isPlaying: boolean,
fileInfo: FileListItem, fileInfo: FileListItem,
@ -70,11 +69,5 @@ export default function FileRenderInline(props: Props) {
return null; return null;
} }
return renderContent ? ( return renderContent ? <FileRender uri={uri} /> : <LoadingScreen isDocument />;
<React.Suspense fallback={null}>
<FileRender uri={uri} />
</React.Suspense>
) : (
<LoadingScreen isDocument />
);
} }

View file

@ -4,7 +4,7 @@ import * as ICONS from 'constants/icons';
import ReactDOMServer from 'react-dom/server'; import ReactDOMServer from 'react-dom/server';
import './plugins/videojs-overlay/plugin'; import './plugins/videojs-overlay/plugin';
// import './plugins/videojs-overlay/plugin.scss'; --> 'scss/third-party.scss' import './plugins/videojs-overlay/plugin.scss';
// **************************************************************************** // ****************************************************************************
// **************************************************************************** // ****************************************************************************

View file

@ -5,7 +5,7 @@ import Button from 'component/button';
import * as ICONS from 'constants/icons'; import * as ICONS from 'constants/icons';
import classnames from 'classnames'; import classnames from 'classnames';
import videojs from 'video.js'; import videojs from 'video.js';
// import 'video.js/dist/alt/video-js-cdn.min.css'; --> 'scss/third-party.scss' import 'video.js/dist/alt/video-js-cdn.min.css';
import eventTracking from 'videojs-event-tracking'; import eventTracking from 'videojs-event-tracking';
import * as OVERLAY from './overlays'; import * as OVERLAY from './overlays';
import './plugins/videojs-mobile-ui/plugin'; import './plugins/videojs-mobile-ui/plugin';

View file

@ -5,6 +5,7 @@ import * as ICONS from 'constants/icons';
import React, { useEffect, useState, useContext, useCallback } from 'react'; import React, { useEffect, useState, useContext, useCallback } from 'react';
import { stopContextMenu } from 'util/context-menu'; import { stopContextMenu } from 'util/context-menu';
import type { Player } from './internal/videojs'; import type { Player } from './internal/videojs';
import VideoJs from './internal/videojs';
import analytics from 'analytics'; import analytics from 'analytics';
import { EmbedContext } from 'page/embedWrapper/view'; import { EmbedContext } from 'page/embedWrapper/view';
import classnames from 'classnames'; import classnames from 'classnames';
@ -20,8 +21,6 @@ import Button from 'component/button';
import I18nMessage from 'component/i18nMessage'; import I18nMessage from 'component/i18nMessage';
import { useHistory } from 'react-router'; import { useHistory } from 'react-router';
const VideoJs = React.lazy(() => import('./internal/videojs' /* webpackChunkName: "videojs" */));
const PLAY_TIMEOUT_ERROR = 'play_timeout_error'; const PLAY_TIMEOUT_ERROR = 'play_timeout_error';
const PLAY_TIMEOUT_LIMIT = 2000; const PLAY_TIMEOUT_LIMIT = 2000;
@ -337,7 +336,6 @@ function VideoViewer(props: Props) {
)} )}
{!isFetchingAd && ( {!isFetchingAd && (
<React.Suspense fallback={null}>
<VideoJs <VideoJs
adUrl={adUrl} adUrl={adUrl}
source={adUrl || source} source={adUrl || source}
@ -351,7 +349,6 @@ function VideoViewer(props: Props) {
claimId={claimId} claimId={claimId}
userId={userId} userId={userId}
/> />
</React.Suspense>
)} )}
</div> </div>
); );

View file

@ -1,2 +0,0 @@
// component/fileRenderFloating
export const INLINE_PLAYER_WRAPPER_CLASS = 'inline-player__wrapper';

View file

@ -1,6 +1,7 @@
// @flow // @flow
import React, { useEffect } from 'react'; import React, { useEffect } from 'react';
import classnames from 'classnames'; import classnames from 'classnames';
import FileRender from 'component/fileRender';
import FileViewerEmbeddedTitle from 'component/fileViewerEmbeddedTitle'; import FileViewerEmbeddedTitle from 'component/fileViewerEmbeddedTitle';
import Spinner from 'component/spinner'; import Spinner from 'component/spinner';
import Button from 'component/button'; import Button from 'component/button';
@ -8,8 +9,6 @@ import Card from 'component/common/card';
import { formatLbryUrlForWeb } from 'util/url'; import { formatLbryUrlForWeb } from 'util/url';
import { useHistory } from 'react-router'; import { useHistory } from 'react-router';
const FileRender = React.lazy(() => import('component/fileRender' /* webpackChunkName: "fileRender" */));
type Props = { type Props = {
uri: string, uri: string,
resolveUri: (string) => void, resolveUri: (string) => void,
@ -99,9 +98,7 @@ const EmbedWrapperPage = (props: Props) => {
> >
<EmbedContext.Provider value> <EmbedContext.Provider value>
{readyToDisplay ? ( {readyToDisplay ? (
<React.Suspense fallback={null}>
<FileRender uri={uri} embedded /> <FileRender uri={uri} embedded />
</React.Suspense>
) : ( ) : (
<div className="embed__loading"> <div className="embed__loading">
<FileViewerEmbeddedTitle uri={uri} /> <FileViewerEmbeddedTitle uri={uri} />

View file

@ -528,7 +528,7 @@ video::-internal-media-controls-overlay-cast-button {
.vjs-playback-rate .vjs-menu { .vjs-playback-rate .vjs-menu {
// Extend the width to prevent a potential scrollbar from blocking the text. // Extend the width to prevent a potential scrollbar from blocking the text.
width: 8em; width: 8em;
left: -3em; left: -2em;
} }
} }

View file

@ -84,11 +84,6 @@
font-size: 10px; font-size: 10px;
} }
.vjs-menu .vjs-menu-content .vjs-menu-item {
margin: 0 0;
padding: 5px 10px;
}
// Volume slider // Volume slider
.vjs-volume-panel { .vjs-volume-panel {
&.vjs-control { &.vjs-control {

View file

@ -2,5 +2,3 @@
@import '~@reach/combobox/styles.css'; @import '~@reach/combobox/styles.css';
@import '~@reach/tooltip/styles.css'; @import '~@reach/tooltip/styles.css';
@import '~video.js/dist/alt/video-js-cdn.min.css';
@import 'component/viewers/videoViewer/internal/plugins/videojs-overlay/plugin.scss';