Clear player position if on playlist. (#6943)
This commit is contained in:
parent
1124125578
commit
01f73c4861
4 changed files with 27 additions and 8 deletions
|
@ -3,7 +3,7 @@ import { makeSelectClaimForUri, SETTINGS, COLLECTIONS_CONSTS, makeSelectNextUrlF
|
||||||
import { withRouter } from 'react-router';
|
import { withRouter } from 'react-router';
|
||||||
import { makeSelectIsPlayerFloating, makeSelectNextUnplayedRecommended } from 'redux/selectors/content';
|
import { makeSelectIsPlayerFloating, makeSelectNextUnplayedRecommended } from 'redux/selectors/content';
|
||||||
import { makeSelectClientSetting } from 'redux/selectors/settings';
|
import { makeSelectClientSetting } from 'redux/selectors/settings';
|
||||||
import { doSetPlayingUri, doPlayUri } from 'redux/actions/content';
|
import { doSetPlayingUri, doPlayUri, clearPosition } from 'redux/actions/content';
|
||||||
import AutoplayCountdown from './view';
|
import AutoplayCountdown from './view';
|
||||||
import { selectModal } from 'redux/selectors/app';
|
import { selectModal } from 'redux/selectors/app';
|
||||||
|
|
||||||
|
@ -38,5 +38,6 @@ export default withRouter(
|
||||||
connect(select, {
|
connect(select, {
|
||||||
doSetPlayingUri,
|
doSetPlayingUri,
|
||||||
doPlayUri,
|
doPlayUri,
|
||||||
|
clearPosition,
|
||||||
})(AutoplayCountdown)
|
})(AutoplayCountdown)
|
||||||
);
|
);
|
||||||
|
|
|
@ -19,6 +19,7 @@ type Props = {
|
||||||
doPlayUri: (string) => void,
|
doPlayUri: (string) => void,
|
||||||
modal: { id: string, modalProps: {} },
|
modal: { id: string, modalProps: {} },
|
||||||
collectionId?: string,
|
collectionId?: string,
|
||||||
|
clearPosition: (string) => void,
|
||||||
};
|
};
|
||||||
|
|
||||||
function AutoplayCountdown(props: Props) {
|
function AutoplayCountdown(props: Props) {
|
||||||
|
@ -31,6 +32,7 @@ function AutoplayCountdown(props: Props) {
|
||||||
history: { push },
|
history: { push },
|
||||||
modal,
|
modal,
|
||||||
collectionId,
|
collectionId,
|
||||||
|
clearPosition,
|
||||||
} = props;
|
} = props;
|
||||||
const nextTitle = nextRecommendedClaim && nextRecommendedClaim.value && nextRecommendedClaim.value.title;
|
const nextTitle = nextRecommendedClaim && nextRecommendedClaim.value && nextRecommendedClaim.value.title;
|
||||||
|
|
||||||
|
@ -53,20 +55,29 @@ function AutoplayCountdown(props: Props) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const doPlay = useCallback(
|
||||||
|
(uri) => {
|
||||||
|
if (collectionId) {
|
||||||
|
clearPosition(uri);
|
||||||
|
}
|
||||||
|
doSetPlayingUri({ uri });
|
||||||
|
doPlayUri(uri);
|
||||||
|
},
|
||||||
|
[clearPosition, doSetPlayingUri, doPlayUri]
|
||||||
|
);
|
||||||
|
|
||||||
const doNavigate = useCallback(() => {
|
const doNavigate = useCallback(() => {
|
||||||
if (!isFloating) {
|
if (!isFloating) {
|
||||||
if (navigateUrl) {
|
if (navigateUrl) {
|
||||||
push(navigateUrl);
|
push(navigateUrl);
|
||||||
doSetPlayingUri({ uri: nextRecommendedUri });
|
doPlay(nextRecommendedUri);
|
||||||
doPlayUri(nextRecommendedUri);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (nextRecommendedUri) {
|
if (nextRecommendedUri) {
|
||||||
doSetPlayingUri({ uri: nextRecommendedUri });
|
doPlay(nextRecommendedUri);
|
||||||
doPlayUri(nextRecommendedUri);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [navigateUrl, nextRecommendedUri, isFloating, doSetPlayingUri, doPlayUri, push]);
|
}, [navigateUrl, nextRecommendedUri, isFloating, doPlay, push]);
|
||||||
|
|
||||||
function shouldPauseAutoplay() {
|
function shouldPauseAutoplay() {
|
||||||
const elm = document.querySelector(`.${CLASSNAME_AUTOPLAY_COUNTDOWN}`);
|
const elm = document.querySelector(`.${CLASSNAME_AUTOPLAY_COUNTDOWN}`);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { doSetContentHistoryItem, doSetPrimaryUri } from 'redux/actions/content';
|
import { doSetContentHistoryItem, doSetPrimaryUri, clearPosition } from 'redux/actions/content';
|
||||||
import { withRouter } from 'react-router-dom';
|
import { withRouter } from 'react-router-dom';
|
||||||
import {
|
import {
|
||||||
doFetchFileInfo,
|
doFetchFileInfo,
|
||||||
|
@ -45,6 +45,7 @@ const perform = (dispatch) => ({
|
||||||
fetchCostInfo: (uri) => dispatch(doFetchCostInfoForUri(uri)),
|
fetchCostInfo: (uri) => dispatch(doFetchCostInfoForUri(uri)),
|
||||||
setViewed: (uri) => dispatch(doSetContentHistoryItem(uri)),
|
setViewed: (uri) => dispatch(doSetContentHistoryItem(uri)),
|
||||||
setPrimaryUri: (uri) => dispatch(doSetPrimaryUri(uri)),
|
setPrimaryUri: (uri) => dispatch(doSetPrimaryUri(uri)),
|
||||||
|
clearPosition: (uri) => dispatch(clearPosition(uri)),
|
||||||
});
|
});
|
||||||
|
|
||||||
export default withRouter(connect(select, perform)(FilePage));
|
export default withRouter(connect(select, perform)(FilePage));
|
||||||
|
|
|
@ -38,6 +38,7 @@ type Props = {
|
||||||
claimIsMine: boolean,
|
claimIsMine: boolean,
|
||||||
commentsDisabled: boolean,
|
commentsDisabled: boolean,
|
||||||
isLivestream: boolean,
|
isLivestream: boolean,
|
||||||
|
clearPosition: (string) => void,
|
||||||
};
|
};
|
||||||
|
|
||||||
function FilePage(props: Props) {
|
function FilePage(props: Props) {
|
||||||
|
@ -60,6 +61,7 @@ function FilePage(props: Props) {
|
||||||
collection,
|
collection,
|
||||||
collectionId,
|
collectionId,
|
||||||
isLivestream,
|
isLivestream,
|
||||||
|
clearPosition,
|
||||||
} = props;
|
} = props;
|
||||||
const cost = costInfo ? costInfo.cost : null;
|
const cost = costInfo ? costInfo.cost : null;
|
||||||
const hasFileInfo = fileInfo !== undefined;
|
const hasFileInfo = fileInfo !== undefined;
|
||||||
|
@ -74,6 +76,10 @@ function FilePage(props: Props) {
|
||||||
}
|
}
|
||||||
// @endif
|
// @endif
|
||||||
|
|
||||||
|
if (collectionId) {
|
||||||
|
clearPosition(uri);
|
||||||
|
}
|
||||||
|
|
||||||
// See https://github.com/lbryio/lbry-desktop/pull/1563 for discussion
|
// See https://github.com/lbryio/lbry-desktop/pull/1563 for discussion
|
||||||
fetchCostInfo(uri);
|
fetchCostInfo(uri);
|
||||||
setViewed(uri);
|
setViewed(uri);
|
||||||
|
@ -82,7 +88,7 @@ function FilePage(props: Props) {
|
||||||
return () => {
|
return () => {
|
||||||
setPrimaryUri(null);
|
setPrimaryUri(null);
|
||||||
};
|
};
|
||||||
}, [uri, hasFileInfo, fetchFileInfo, fetchCostInfo, setViewed, setPrimaryUri]);
|
}, [uri, hasFileInfo, fetchFileInfo, collectionId, clearPosition, fetchCostInfo, setViewed, setPrimaryUri]);
|
||||||
|
|
||||||
function renderFilePageLayout() {
|
function renderFilePageLayout() {
|
||||||
if (RENDER_MODES.FLOATING_MODES.includes(renderMode)) {
|
if (RENDER_MODES.FLOATING_MODES.includes(renderMode)) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue