Playable downloads #111
7 changed files with 21 additions and 26 deletions
19
package-lock.json
generated
19
package-lock.json
generated
|
@ -10136,22 +10136,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"react-navigation-drawer": {
|
"react-navigation-drawer": {
|
||||||
"version": "1.4.0",
|
"version": "2.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/react-navigation-drawer/-/react-navigation-drawer-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-navigation-drawer/-/react-navigation-drawer-2.3.3.tgz",
|
||||||
"integrity": "sha512-ZyWBozcjB2aZ7vwCALv90cYA2NpDjM+WALaiYRshvPvue8l7cqynePbHK8GhlMGyJDwZqp4MxQmu8u1XAKp3Bw==",
|
"integrity": "sha512-d/rA8Slqv7HoMfONKVDBQUrRF7YQH796Gzal/KOhaY4VOwUUqIwfxMRJ3WrsdL2OkDPixtkXJE2Fz6KAj658uA=="
|
||||||
"requires": {
|
|
||||||
"react-native-tab-view": "^1.2.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"react-native-tab-view": {
|
|
||||||
"version": "1.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-1.4.1.tgz",
|
|
||||||
"integrity": "sha512-Bke8KkDcDhvB/z0AS7MnQKMD2p6Kwfc1rSKlMOvg9CC5CnClQ2QEnhPSbwegKDYhUkBI92iH/BYy7hNSm5kbUQ==",
|
|
||||||
"requires": {
|
|
||||||
"prop-types": "^15.6.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"react-navigation-redux-helpers": {
|
"react-navigation-redux-helpers": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
"react-native-video": "lbryio/react-native-video#7992ff945872f9bd00a3736d9ff1318f343abf47",
|
"react-native-video": "lbryio/react-native-video#7992ff945872f9bd00a3736d9ff1318f343abf47",
|
||||||
"react-native-webview": "^8.0.2",
|
"react-native-webview": "^8.0.2",
|
||||||
"react-navigation": "^4.0.10",
|
"react-navigation": "^4.0.10",
|
||||||
"react-navigation-drawer": "^1.4.0",
|
"react-navigation-drawer": "^2.3.3",
|
||||||
"react-navigation-redux-helpers": "^3.0.2",
|
"react-navigation-redux-helpers": "^3.0.2",
|
||||||
"react-navigation-tabs": "^2.7.0",
|
"react-navigation-tabs": "^2.7.0",
|
||||||
"react-navigation-stack": "^1.10.3",
|
"react-navigation-stack": "^1.10.3",
|
||||||
|
|
|
@ -225,7 +225,7 @@ const drawer = createDrawerNavigator(
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
drawerWidth: 300,
|
drawerWidth: 299,
|
||||||
drawerBackgroundColor: 'transparent',
|
drawerBackgroundColor: 'transparent',
|
||||||
headerMode: 'none',
|
headerMode: 'none',
|
||||||
backBehavior: 'none',
|
backBehavior: 'none',
|
||||||
|
|
|
@ -421,7 +421,7 @@ class MediaPlayer extends React.PureComponent {
|
||||||
const seekerCircleStyle = [this.state.seeking ? mediaPlayerStyle.bigSeekerCircle : mediaPlayerStyle.seekerCircle];
|
const seekerCircleStyle = [this.state.seeking ? mediaPlayerStyle.bigSeekerCircle : mediaPlayerStyle.seekerCircle];
|
||||||
if (!this.state.seeking) {
|
if (!this.state.seeking) {
|
||||||
seekerCircleStyle.push(
|
seekerCircleStyle.push(
|
||||||
this.state.fullscreenMode ? mediaPlayerStyle.seekerCircleTopFs : mediaPlayerStyle.seekerCircleTop
|
this.state.fullscreenMode ? mediaPlayerStyle.seekerCircleTopFs : mediaPlayerStyle.seekerCircleTop,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,6 +440,7 @@ class MediaPlayer extends React.PureComponent {
|
||||||
}}
|
}}
|
||||||
resizeMode={this.state.resizeMode}
|
resizeMode={this.state.resizeMode}
|
||||||
playInBackground={this.state.backgroundPlayEnabled}
|
playInBackground={this.state.backgroundPlayEnabled}
|
||||||
|
playWhenInactive={this.state.backgroundPlayEnabled}
|
||||||
style={mediaPlayerStyle.player}
|
style={mediaPlayerStyle.player}
|
||||||
rate={this.state.rate}
|
rate={this.state.rate}
|
||||||
volume={this.state.volume}
|
volume={this.state.volume}
|
||||||
|
|
|
@ -41,7 +41,7 @@ import {
|
||||||
import { doDeleteFile, doStopDownloadingFile } from 'redux/actions/file';
|
import { doDeleteFile, doStopDownloadingFile } from 'redux/actions/file';
|
||||||
import { doPushDrawerStack, doPopDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
|
import { doPushDrawerStack, doPopDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
|
||||||
import { doToggleFullscreenMode } from 'redux/actions/settings';
|
import { doToggleFullscreenMode } from 'redux/actions/settings';
|
||||||
import { selectDrawerStack } from 'redux/selectors/drawer';
|
import { selectDrawerStack, selectIsPlayerVisible } from 'redux/selectors/drawer';
|
||||||
import FilePage from './view';
|
import FilePage from './view';
|
||||||
|
|
||||||
const select = (state, props) => {
|
const select = (state, props) => {
|
||||||
|
@ -61,6 +61,7 @@ const select = (state, props) => {
|
||||||
fileInfo: makeSelectFileInfoForUri(contentUri)(state),
|
fileInfo: makeSelectFileInfoForUri(contentUri)(state),
|
||||||
rewardedContentClaimIds: selectRewardContentClaimIds(state, selectProps),
|
rewardedContentClaimIds: selectRewardContentClaimIds(state, selectProps),
|
||||||
channelUri: makeSelectChannelForClaimUri(contentUri, true)(state),
|
channelUri: makeSelectChannelForClaimUri(contentUri, true)(state),
|
||||||
|
isPlayerVisible: selectIsPlayerVisible(state),
|
||||||
position: makeSelectContentPositionForUri(contentUri)(state),
|
position: makeSelectContentPositionForUri(contentUri)(state),
|
||||||
purchasedUris: selectPurchasedUris(state),
|
purchasedUris: selectPurchasedUris(state),
|
||||||
failedPurchaseUris: selectFailedPurchaseUris(state),
|
failedPurchaseUris: selectFailedPurchaseUris(state),
|
||||||
|
|
|
@ -681,13 +681,16 @@ class FilePage extends React.PureComponent {
|
||||||
|
|
||||||
getPurchaseUrl = () => {
|
getPurchaseUrl = () => {
|
||||||
const { claim, navigation } = this.props;
|
const { claim, navigation } = this.props;
|
||||||
const { permanent_url: permanentUrl } = claim;
|
const permanentUrl = claim ? claim.permanent_url : null;
|
||||||
|
|
||||||
let purchaseUrl;
|
let purchaseUrl;
|
||||||
if (navigation.state.params) {
|
if (navigation.state.params) {
|
||||||
const { uri, fullUri } = navigation.state.params;
|
const { uri, fullUri } = navigation.state.params;
|
||||||
purchaseUrl = fullUri || uri || permanentUrl;
|
purchaseUrl = fullUri || uri || permanentUrl;
|
||||||
}
|
}
|
||||||
|
if (!purchaseUrl && permanentUrl) {
|
||||||
|
purchaseUrl = permanentUrl;
|
||||||
|
}
|
||||||
|
|
||||||
return purchaseUrl;
|
return purchaseUrl;
|
||||||
};
|
};
|
||||||
|
@ -876,6 +879,7 @@ class FilePage extends React.PureComponent {
|
||||||
contentType,
|
contentType,
|
||||||
tab,
|
tab,
|
||||||
rewardedContentClaimIds,
|
rewardedContentClaimIds,
|
||||||
|
isPlayerVisible,
|
||||||
isResolvingUri,
|
isResolvingUri,
|
||||||
blackListedOutpoints,
|
blackListedOutpoints,
|
||||||
myClaimUris,
|
myClaimUris,
|
||||||
|
@ -1131,7 +1135,9 @@ class FilePage extends React.PureComponent {
|
||||||
{!innerContent &&
|
{!innerContent &&
|
||||||
(this.state.streamingMode || (canLoadMedia && fileInfo && isPlayable)) &&
|
(this.state.streamingMode || (canLoadMedia && fileInfo && isPlayable)) &&
|
||||||
this.state.fullscreenMode && <View style={fsPlayerBgStyle} />}
|
this.state.fullscreenMode && <View style={fsPlayerBgStyle} />}
|
||||||
{!innerContent && (this.state.streamingMode || (canLoadMedia && fileInfo && isPlayable)) && (
|
{isPlayerVisible &&
|
||||||
|
!innerContent &&
|
||||||
|
(this.state.streamingMode || (canLoadMedia && fileInfo && isPlayable)) && (
|
||||||
<MediaPlayer
|
<MediaPlayer
|
||||||
claim={claim}
|
claim={claim}
|
||||||
assignPlayer={ref => {
|
assignPlayer={ref => {
|
||||||
|
|
|
@ -64,14 +64,14 @@ export function dispatchNavigateToUri(dispatch, nav, uri, isNavigatingBack, full
|
||||||
const fileRoute = discoverRoute.routes[discoverRoute.index];
|
const fileRoute = discoverRoute.routes[discoverRoute.index];
|
||||||
// Currently on a file page, so we can ignore (if the URI is the same) or replace (different URIs)
|
// Currently on a file page, so we can ignore (if the URI is the same) or replace (different URIs)
|
||||||
if (uri !== fileRoute.params.uri) {
|
if (uri !== fileRoute.params.uri) {
|
||||||
const stackAction = StackActions.replace({ routeName: 'File', newKey: uri, params });
|
const stackAction = StackActions.replace({ routeName: 'File', newKey: 'file', params });
|
||||||
dispatch(stackAction);
|
dispatch(stackAction);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const navigateAction = NavigationActions.navigate({ routeName: 'File', key: uri, params });
|
const navigateAction = NavigationActions.navigate({ routeName: 'File', key: 'file', params });
|
||||||
dispatch(navigateAction);
|
dispatch(navigateAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ export function navigateToUri(navigation, uri, additionalParams, isNavigatingBac
|
||||||
const { store } = window;
|
const { store } = window;
|
||||||
const params = Object.assign({ uri, uriVars, fullUri: fullUri }, additionalParams);
|
const params = Object.assign({ uri, uriVars, fullUri: fullUri }, additionalParams);
|
||||||
if (navigation.state.routeName === 'File') {
|
if (navigation.state.routeName === 'File') {
|
||||||
const stackAction = StackActions.replace({ routeName: 'File', newKey: uri, params });
|
const stackAction = StackActions.replace({ routeName: 'File', newKey: 'file', params });
|
||||||
navigation.dispatch(stackAction);
|
navigation.dispatch(stackAction);
|
||||||
if (store && store.dispatch && !isNavigatingBack) {
|
if (store && store.dispatch && !isNavigatingBack) {
|
||||||
store.dispatch(doPushDrawerStack(uri));
|
store.dispatch(doPushDrawerStack(uri));
|
||||||
|
@ -147,7 +147,7 @@ export function navigateToUri(navigation, uri, additionalParams, isNavigatingBac
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
navigation.navigate({ routeName: 'File', key: uri, params });
|
navigation.navigate({ routeName: 'File', key: 'file', params });
|
||||||
if (store && store.dispatch && !isNavigatingBack) {
|
if (store && store.dispatch && !isNavigatingBack) {
|
||||||
store.dispatch(doPushDrawerStack(uri));
|
store.dispatch(doPushDrawerStack(uri));
|
||||||
store.dispatch(doSetPlayerVisible(true));
|
store.dispatch(doSetPlayerVisible(true));
|
||||||
|
|
Loading…
Reference in a new issue