fix autoplay after playlist click and select next playable #415
3 changed files with 52 additions and 18 deletions
32
dist/bundle.es.js
vendored
32
dist/bundle.es.js
vendored
|
@ -1051,6 +1051,11 @@ const FAVORITES_ID = 'favorites';
|
||||||
const FAVORITE_CHANNELS_ID = 'favoriteChannels';
|
const FAVORITE_CHANNELS_ID = 'favoriteChannels';
|
||||||
const BUILTIN_LISTS = [WATCH_LATER_ID, FAVORITES_ID, FAVORITE_CHANNELS_ID];
|
const BUILTIN_LISTS = [WATCH_LATER_ID, FAVORITES_ID, FAVORITE_CHANNELS_ID];
|
||||||
|
|
||||||
|
const COL_KEY_EDITED = 'edited';
|
||||||
|
const COL_KEY_UNPUBLISHED = 'unpublished';
|
||||||
|
const COL_KEY_PENDING = 'pending';
|
||||||
|
const COL_KEY_SAVED = 'saved';
|
||||||
|
|
||||||
var collections = /*#__PURE__*/Object.freeze({
|
var collections = /*#__PURE__*/Object.freeze({
|
||||||
COLLECTION_ID: COLLECTION_ID,
|
COLLECTION_ID: COLLECTION_ID,
|
||||||
COLLECTION_INDEX: COLLECTION_INDEX,
|
COLLECTION_INDEX: COLLECTION_INDEX,
|
||||||
|
@ -1059,7 +1064,11 @@ var collections = /*#__PURE__*/Object.freeze({
|
||||||
WATCH_LATER_ID: WATCH_LATER_ID,
|
WATCH_LATER_ID: WATCH_LATER_ID,
|
||||||
FAVORITES_ID: FAVORITES_ID,
|
FAVORITES_ID: FAVORITES_ID,
|
||||||
FAVORITE_CHANNELS_ID: FAVORITE_CHANNELS_ID,
|
FAVORITE_CHANNELS_ID: FAVORITE_CHANNELS_ID,
|
||||||
BUILTIN_LISTS: BUILTIN_LISTS
|
BUILTIN_LISTS: BUILTIN_LISTS,
|
||||||
|
COL_KEY_EDITED: COL_KEY_EDITED,
|
||||||
|
COL_KEY_UNPUBLISHED: COL_KEY_UNPUBLISHED,
|
||||||
|
COL_KEY_PENDING: COL_KEY_PENDING,
|
||||||
|
COL_KEY_SAVED: COL_KEY_SAVED
|
||||||
});
|
});
|
||||||
|
|
||||||
const DEFAULT_FOLLOWED_TAGS = ['art', 'automotive', 'blockchain', 'comedy', 'economics', 'education', 'gaming', 'music', 'news', 'science', 'sports', 'technology'];
|
const DEFAULT_FOLLOWED_TAGS = ['art', 'automotive', 'blockchain', 'comedy', 'economics', 'education', 'gaming', 'music', 'news', 'science', 'sports', 'technology'];
|
||||||
|
@ -3694,22 +3703,27 @@ const makeSelectClaimIdsForCollectionId = id => reselect.createSelector(makeSele
|
||||||
return ids;
|
return ids;
|
||||||
});
|
});
|
||||||
|
|
||||||
const makeSelectIndexForUrlInCollection = (url, id) => reselect.createSelector(makeSelectUrlsForCollectionId(id), urls => {
|
const makeSelectIndexForUrlInCollection = (url, id) => reselect.createSelector(makeSelectUrlsForCollectionId(id), makeSelectClaimForUri(url), (urls, claim) => {
|
||||||
const index = urls && urls.findIndex(u => u === url);
|
const index = urls && urls.findIndex(u => u === url);
|
||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
return index;
|
return index;
|
||||||
|
} else if (claim) {
|
||||||
|
const index = urls && urls.findIndex(u => u === claim.permanent_url);
|
||||||
|
if (index > -1) return index;
|
||||||
|
return claim;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
const makeSelectNextUrlForCollectionAndUrl = (id, url) => reselect.createSelector(makeSelectIndexForUrlInCollection(url, id), makeSelectUrlsForCollectionId(id), (index, urls) => {
|
const makeSelectNextUrlForCollectionAndUrl = (id, url) => reselect.createSelector(makeSelectIndexForUrlInCollection(url, id), selectClaimsByUri, makeSelectUrlsForCollectionId(id), (index, claims, urls) => {
|
||||||
if (urls && index >= -1) {
|
if (index > -1) {
|
||||||
const url = urls[index + 1];
|
// We'll get the next playble url
|
||||||
if (url) {
|
const remainingUrls = urls.slice(index + 1);
|
||||||
return url;
|
const nextUrl = remainingUrls.find(u => claims[u].value.stream_type && (claims[u].value.stream_type === 'video' || claims[u].value.stream_type === 'audio'));
|
||||||
}
|
return nextUrl || null;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const makeSelectNameForCollectionId = id => reselect.createSelector(makeSelectCollectionForId(id), collection => {
|
const makeSelectNameForCollectionId = id => reselect.createSelector(makeSelectCollectionForId(id), collection => {
|
||||||
|
|
|
@ -8,3 +8,8 @@ export const WATCH_LATER_ID = 'watchlater';
|
||||||
export const FAVORITES_ID = 'favorites';
|
export const FAVORITES_ID = 'favorites';
|
||||||
export const FAVORITE_CHANNELS_ID = 'favoriteChannels';
|
export const FAVORITE_CHANNELS_ID = 'favoriteChannels';
|
||||||
export const BUILTIN_LISTS = [WATCH_LATER_ID, FAVORITES_ID, FAVORITE_CHANNELS_ID];
|
export const BUILTIN_LISTS = [WATCH_LATER_ID, FAVORITES_ID, FAVORITE_CHANNELS_ID];
|
||||||
|
|
||||||
|
export const COL_KEY_EDITED = 'edited';
|
||||||
|
export const COL_KEY_UNPUBLISHED = 'unpublished';
|
||||||
|
export const COL_KEY_PENDING = 'pending';
|
||||||
|
export const COL_KEY_SAVED = 'saved';
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
// @flow
|
// @flow
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { selectMyCollectionIds } from 'redux/selectors/claims';
|
import {
|
||||||
|
selectMyCollectionIds,
|
||||||
|
makeSelectClaimForUri,
|
||||||
|
selectClaimsByUri,
|
||||||
|
} from 'redux/selectors/claims';
|
||||||
import { parseURI } from 'lbryURI';
|
import { parseURI } from 'lbryURI';
|
||||||
|
|
||||||
const selectState = (state: { collections: CollectionState }) => state.collections;
|
const selectState = (state: { collections: CollectionState }) => state.collections;
|
||||||
|
@ -187,10 +191,15 @@ export const makeSelectClaimIdsForCollectionId = (id: string) =>
|
||||||
export const makeSelectIndexForUrlInCollection = (url: string, id: string) =>
|
export const makeSelectIndexForUrlInCollection = (url: string, id: string) =>
|
||||||
createSelector(
|
createSelector(
|
||||||
makeSelectUrlsForCollectionId(id),
|
makeSelectUrlsForCollectionId(id),
|
||||||
urls => {
|
makeSelectClaimForUri(url),
|
||||||
|
(urls, claim) => {
|
||||||
const index = urls && urls.findIndex(u => u === url);
|
const index = urls && urls.findIndex(u => u === url);
|
||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
return index;
|
return index;
|
||||||
|
} else if (claim) {
|
||||||
|
const index = urls && urls.findIndex(u => u === claim.permanent_url);
|
||||||
|
if (index > -1) return index;
|
||||||
|
return claim;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -199,15 +208,21 @@ export const makeSelectIndexForUrlInCollection = (url: string, id: string) =>
|
||||||
export const makeSelectNextUrlForCollectionAndUrl = (id: string, url: string) =>
|
export const makeSelectNextUrlForCollectionAndUrl = (id: string, url: string) =>
|
||||||
createSelector(
|
createSelector(
|
||||||
makeSelectIndexForUrlInCollection(url, id),
|
makeSelectIndexForUrlInCollection(url, id),
|
||||||
|
selectClaimsByUri,
|
||||||
makeSelectUrlsForCollectionId(id),
|
makeSelectUrlsForCollectionId(id),
|
||||||
(index, urls) => {
|
(index, claims, urls) => {
|
||||||
if (urls && index >= -1) {
|
if (index > -1) {
|
||||||
const url = urls[index + 1];
|
// We'll get the next playble url
|
||||||
if (url) {
|
const remainingUrls = urls.slice(index + 1);
|
||||||
return url;
|
const nextUrl = remainingUrls.find(
|
||||||
}
|
u =>
|
||||||
|
claims[u].value.stream_type &&
|
||||||
|
(claims[u].value.stream_type === 'video' || claims[u].value.stream_type === 'audio')
|
||||||
|
);
|
||||||
|
return nextUrl || null;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue