improvements

This commit is contained in:
Sean Yesmunt 2019-09-13 15:52:52 -04:00
parent 220b717fc1
commit 5ff2491e78
9 changed files with 72 additions and 52 deletions

51
dist/bundle.es.js vendored
View file

@ -262,7 +262,7 @@ const TAG_DELETE = 'TAG_DELETE';
const TOGGLE_BLOCK_CHANNEL = 'TOGGLE_BLOCK_CHANNEL'; const TOGGLE_BLOCK_CHANNEL = 'TOGGLE_BLOCK_CHANNEL';
// Sync // Sync
const USER_SETTINGS_POPULATE = 'USER_SETTINGS_POPULATE'; const USER_STATE_POPULATE = 'USER_STATE_POPULATE';
var action_types = /*#__PURE__*/Object.freeze({ var action_types = /*#__PURE__*/Object.freeze({
WINDOW_FOCUSED: WINDOW_FOCUSED, WINDOW_FOCUSED: WINDOW_FOCUSED,
@ -469,7 +469,7 @@ var action_types = /*#__PURE__*/Object.freeze({
TAG_ADD: TAG_ADD, TAG_ADD: TAG_ADD,
TAG_DELETE: TAG_DELETE, TAG_DELETE: TAG_DELETE,
TOGGLE_BLOCK_CHANNEL: TOGGLE_BLOCK_CHANNEL, TOGGLE_BLOCK_CHANNEL: TOGGLE_BLOCK_CHANNEL,
USER_SETTINGS_POPULATE: USER_SETTINGS_POPULATE USER_STATE_POPULATE: USER_STATE_POPULATE
}); });
const CC_LICENSES = [{ const CC_LICENSES = [{
@ -1469,7 +1469,7 @@ const selectCurrentChannelPage = reselect.createSelector(selectState$2, state =>
const selectCreatingChannel = reselect.createSelector(selectState$2, state => state.creatingChannel); const selectCreatingChannel = reselect.createSelector(selectState$2, state => state.creatingChannel);
const createChannelError = reselect.createSelector(selectState$2, state => state.createChannelError); const selectCreateChannelError = reselect.createSelector(selectState$2, state => state.createChannelError);
const selectClaimsByUri = reselect.createSelector(selectState$2, selectClaimsById, (state, byId) => { const selectClaimsByUri = reselect.createSelector(selectState$2, selectClaimsById, (state, byId) => {
const byUri = state.claimsByUri || {}; const byUri = state.claimsByUri || {};
@ -1668,9 +1668,12 @@ const selectMyClaimsOutpoints = reselect.createSelector(selectMyClaims, myClaims
const selectFetchingMyChannels = reselect.createSelector(selectState$2, state => state.fetchingMyChannels); const selectFetchingMyChannels = reselect.createSelector(selectState$2, state => state.fetchingMyChannels);
const selectMyChannelClaims = reselect.createSelector(selectState$2, selectClaimsById, (state, byId) => { const selectMyChannelClaims = reselect.createSelector(selectState$2, selectClaimsById, (state, byId) => {
const ids = state.myChannelClaims || []; const ids = state.myChannelClaims;
const claims = []; if (!ids) {
return ids;
}
const claims = [];
ids.forEach(id => { ids.forEach(id => {
if (byId[id]) { if (byId[id]) {
// I'm not sure why this check is necessary, but it ought to be a quick fix for https://github.com/lbryio/lbry-desktop/issues/544 // I'm not sure why this check is necessary, but it ought to be a quick fix for https://github.com/lbryio/lbry-desktop/issues/544
@ -2454,7 +2457,7 @@ function doCreateChannel(name, amount, optionalParams) {
}).catch(error => { }).catch(error => {
dispatch({ dispatch({
type: CREATE_CHANNEL_FAILED, type: CREATE_CHANNEL_FAILED,
data: error data: error.message
}); });
}); });
}; };
@ -3556,8 +3559,8 @@ const doToggleBlockChannel = uri => ({
var _extends$5 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _extends$5 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
function extractSettings(rawObj) { function extractSettings(rawObj) {
if (rawObj && rawObj.version && rawObj.app) { if (rawObj && rawObj.version === '0' && rawObj.shared) {
const { subscriptions, tags } = rawObj.app; const { subscriptions, tags } = rawObj.shared;
return _extends$5({}, subscriptions ? { subscriptions } : {}, tags ? { tags } : {}); return _extends$5({}, subscriptions ? { subscriptions } : {}, tags ? { tags } : {});
} }
@ -3567,7 +3570,7 @@ function extractSettings(rawObj) {
function doPopulateUserSettings(settings) { function doPopulateUserSettings(settings) {
return dispatch => { return dispatch => {
const { subscriptions, tags } = extractSettings(settings); const { subscriptions, tags } = extractSettings(settings);
dispatch({ type: USER_SETTINGS_POPULATE, data: { subscriptions, tags } }); dispatch({ type: USER_STATE_POPULATE, data: { subscriptions, tags } });
}; };
} }
@ -3583,7 +3586,7 @@ const defaultState = {
resolvingUris: [], resolvingUris: [],
// This should not be a Set // This should not be a Set
// Storing sets in reducers can cause issues // Storing sets in reducers can cause issues
myChannelClaims: new Set(), myChannelClaims: undefined,
fetchingMyChannels: false, fetchingMyChannels: false,
abandoningById: {}, abandoningById: {},
pendingById: {}, pendingById: {},
@ -3716,13 +3719,20 @@ reducers[FETCH_CHANNEL_LIST_STARTED] = state => Object.assign({}, state, { fetch
reducers[FETCH_CHANNEL_LIST_COMPLETED] = (state, action) => { reducers[FETCH_CHANNEL_LIST_COMPLETED] = (state, action) => {
const { claims } = action.data; const { claims } = action.data;
const myChannelClaims = new Set(state.myChannelClaims);
const byId = Object.assign({}, state.byId);
claims.forEach(claim => { let myChannelClaims;
myChannelClaims.add(claim.claim_id); let byId = Object.assign({}, state.byId);
byId[claim.claim_id] = claim; if (!claims.length) {
}); // $FlowFixMe
myChannelClaims = null;
} else {
myChannelClaims = new Set(state.myChannelClaims);
claims.forEach(claim => {
// $FlowFixMe
myChannelClaims.add(claim.claim_id);
byId[claim.claim_id] = claim;
});
}
return Object.assign({}, state, { return Object.assign({}, state, {
byId, byId,
@ -4512,14 +4522,14 @@ const tagsReducer = handleActions({
followedTags: newFollowedTags followedTags: newFollowedTags
}); });
}, },
[USER_SETTINGS_POPULATE]: (state, action) => { [USER_STATE_POPULATE]: (state, action) => {
const { tags } = action.data; const { tags } = action.data;
let newTags; let newTags;
if (!tags) { if (!tags) {
newTags = state.followedTags || DEFAULT_FOLLOWED_TAGS; newTags = state.followedTags.length ? state.followedTags : DEFAULT_FOLLOWED_TAGS;
} else { } else {
if (!state.followedTags || !state.followedTags.length) { if (!state.followedTags.length) {
newTags = tags; newTags = tags;
} else { } else {
const map = {}; const map = {};
@ -4890,7 +4900,6 @@ const selectFollowedTags = reselect.createSelector(selectFollowedTagsList, follo
const selectUnfollowedTags = reselect.createSelector(selectKnownTagsByName, selectFollowedTagsList, (tagsByName, followedTags) => { const selectUnfollowedTags = reselect.createSelector(selectKnownTagsByName, selectFollowedTagsList, (tagsByName, followedTags) => {
const followedTagsSet = new Set(followedTags); const followedTagsSet = new Set(followedTags);
let tagsToReturn = []; let tagsToReturn = [];
Object.keys(tagsByName).forEach(key => { Object.keys(tagsByName).forEach(key => {
if (!followedTagsSet.has(key)) { if (!followedTagsSet.has(key)) {
const { name } = tagsByName[key]; const { name } = tagsByName[key];
@ -4938,7 +4947,6 @@ exports.claimsReducer = claimsReducer;
exports.commentReducer = commentReducer; exports.commentReducer = commentReducer;
exports.contentReducer = contentReducer; exports.contentReducer = contentReducer;
exports.convertToShareLink = convertToShareLink; exports.convertToShareLink = convertToShareLink;
exports.createChannelError = createChannelError;
exports.createNormalizedClaimSearchKey = createNormalizedClaimSearchKey; exports.createNormalizedClaimSearchKey = createNormalizedClaimSearchKey;
exports.creditsToString = creditsToString; exports.creditsToString = creditsToString;
exports.doAbandonClaim = doAbandonClaim; exports.doAbandonClaim = doAbandonClaim;
@ -5072,6 +5080,7 @@ exports.selectClaimSearchByQuery = selectClaimSearchByQuery;
exports.selectClaimSearchByQueryLastPageReached = selectClaimSearchByQueryLastPageReached; exports.selectClaimSearchByQueryLastPageReached = selectClaimSearchByQueryLastPageReached;
exports.selectClaimsById = selectClaimsById; exports.selectClaimsById = selectClaimsById;
exports.selectClaimsByUri = selectClaimsByUri; exports.selectClaimsByUri = selectClaimsByUri;
exports.selectCreateChannelError = selectCreateChannelError;
exports.selectCreatingChannel = selectCreatingChannel; exports.selectCreatingChannel = selectCreatingChannel;
exports.selectCurrentChannelPage = selectCurrentChannelPage; exports.selectCurrentChannelPage = selectCurrentChannelPage;
exports.selectDownloadedUris = selectDownloadedUris; exports.selectDownloadedUris = selectDownloadedUris;

View file

@ -239,4 +239,4 @@ export const TAG_DELETE = 'TAG_DELETE';
export const TOGGLE_BLOCK_CHANNEL = 'TOGGLE_BLOCK_CHANNEL'; export const TOGGLE_BLOCK_CHANNEL = 'TOGGLE_BLOCK_CHANNEL';
// Sync // Sync
export const USER_SETTINGS_POPULATE = 'USER_SETTINGS_POPULATE'; export const USER_STATE_POPULATE = 'USER_STATE_POPULATE';

View file

@ -205,7 +205,7 @@ export {
selectUpdatingChannel, selectUpdatingChannel,
selectUpdateChannelError, selectUpdateChannelError,
selectCreatingChannel, selectCreatingChannel,
createChannelError, selectCreateChannelError,
} from 'redux/selectors/claims'; } from 'redux/selectors/claims';
export { makeSelectCommentsForUri } from 'redux/selectors/comments'; export { makeSelectCommentsForUri } from 'redux/selectors/comments';

View file

@ -275,7 +275,7 @@ export function doCreateChannel(name: string, amount: number, optionalParams: an
.catch(error => { .catch(error => {
dispatch({ dispatch({
type: ACTIONS.CREATE_CHANNEL_FAILED, type: ACTIONS.CREATE_CHANNEL_FAILED,
data: error, data: error.message,
}); });
}) })
); );

View file

@ -1,15 +1,17 @@
// @flow // @flow
import * as ACTIONS from 'constants/action_types'; import * as ACTIONS from 'constants/action_types';
function extractSettings(rawObj: { type v0Data = {
version: string, version: '0',
app: {}, shared: {
}): { subscriptions?: Array<string>,
subscriptions?: Array<string>, tags?: Array<string>,
tags?: Array<string>, },
} { };
if (rawObj && rawObj.version && rawObj.app) {
const { subscriptions, tags } = rawObj.app; function extractSettings(rawObj: v0Data) {
if (rawObj && rawObj.version === '0' && rawObj.shared) {
const { subscriptions, tags } = rawObj.shared;
return { return {
...(subscriptions ? { subscriptions } : {}), ...(subscriptions ? { subscriptions } : {}),
...(tags ? { tags } : {}), ...(tags ? { tags } : {}),
@ -20,8 +22,8 @@ function extractSettings(rawObj: {
} }
export function doPopulateUserSettings(settings: any) { export function doPopulateUserSettings(settings: any) {
return dispatch => { return (dispatch: Dispatch) => {
const { subscriptions, tags } = extractSettings(settings); const { subscriptions, tags } = extractSettings(settings);
dispatch({ type: ACTIONS.USER_SETTINGS_POPULATE, data: { subscriptions, tags } }); dispatch({ type: ACTIONS.USER_STATE_POPULATE, data: { subscriptions, tags } });
}; };
} }

View file

@ -18,7 +18,7 @@ type State = {
byId: { [string]: Claim }, byId: { [string]: Claim },
resolvingUris: Array<string>, resolvingUris: Array<string>,
pendingById: { [string]: Claim }, pendingById: { [string]: Claim },
myChannelClaims: Set<string>, myChannelClaims: ?Set<string>,
abandoningById: { [string]: boolean }, abandoningById: { [string]: boolean },
fetchingChannelClaims: { [string]: number }, fetchingChannelClaims: { [string]: number },
fetchingMyChannels: boolean, fetchingMyChannels: boolean,
@ -46,7 +46,7 @@ const defaultState = {
resolvingUris: [], resolvingUris: [],
// This should not be a Set // This should not be a Set
// Storing sets in reducers can cause issues // Storing sets in reducers can cause issues
myChannelClaims: new Set(), myChannelClaims: undefined,
fetchingMyChannels: false, fetchingMyChannels: false,
abandoningById: {}, abandoningById: {},
pendingById: {}, pendingById: {},
@ -190,13 +190,20 @@ reducers[ACTIONS.FETCH_CHANNEL_LIST_STARTED] = (state: State): State =>
reducers[ACTIONS.FETCH_CHANNEL_LIST_COMPLETED] = (state: State, action: any): State => { reducers[ACTIONS.FETCH_CHANNEL_LIST_COMPLETED] = (state: State, action: any): State => {
const { claims }: { claims: Array<ChannelClaim> } = action.data; const { claims }: { claims: Array<ChannelClaim> } = action.data;
const myChannelClaims = new Set(state.myChannelClaims);
const byId = Object.assign({}, state.byId);
claims.forEach(claim => { let myChannelClaims;
myChannelClaims.add(claim.claim_id); let byId = Object.assign({}, state.byId);
byId[claim.claim_id] = claim; if (!claims.length) {
}); // $FlowFixMe
myChannelClaims = null;
} else {
myChannelClaims = new Set(state.myChannelClaims);
claims.forEach(claim => {
// $FlowFixMe
myChannelClaims.add(claim.claim_id);
byId[claim.claim_id] = claim;
});
}
return Object.assign({}, state, { return Object.assign({}, state, {
byId, byId,

View file

@ -65,7 +65,7 @@ export const tagsReducer = handleActions(
followedTags: newFollowedTags, followedTags: newFollowedTags,
}; };
}, },
[ACTIONS.USER_SETTINGS_POPULATE]: ( [ACTIONS.USER_STATE_POPULATE]: (
state: TagState, state: TagState,
action: { data: { tags: ?Array<string> } } action: { data: { tags: ?Array<string> } }
) => { ) => {
@ -73,9 +73,9 @@ export const tagsReducer = handleActions(
let newTags; let newTags;
if (!tags) { if (!tags) {
newTags = state.followedTags || DEFAULT_FOLLOWED_TAGS; newTags = state.followedTags.length ? state.followedTags : DEFAULT_FOLLOWED_TAGS;
} else { } else {
if (!state.followedTags || !state.followedTags.length) { if (!state.followedTags.length) {
newTags = tags; newTags = tags;
} else { } else {
const map = {}; const map = {};

View file

@ -23,7 +23,7 @@ export const selectCreatingChannel = createSelector(
state => state.creatingChannel state => state.creatingChannel
); );
export const createChannelError = createSelector( export const selectCreateChannelError = createSelector(
selectState, selectState,
state => state.createChannelError state => state.createChannelError
); );
@ -240,8 +240,8 @@ export const makeSelectDateForUri = (uri: string) =>
(claim.value.release_time (claim.value.release_time
? claim.value.release_time * 1000 ? claim.value.release_time * 1000
: claim.meta && claim.meta.creation_timestamp : claim.meta && claim.meta.creation_timestamp
? claim.meta.creation_timestamp * 1000 ? claim.meta.creation_timestamp * 1000
: null); : null);
if (!timestamp) { if (!timestamp) {
return undefined; return undefined;
} }
@ -360,9 +360,12 @@ export const selectMyChannelClaims = createSelector(
selectState, selectState,
selectClaimsById, selectClaimsById,
(state, byId) => { (state, byId) => {
const ids = state.myChannelClaims || []; const ids = state.myChannelClaims;
const claims = []; if (!ids) {
return ids;
}
const claims = [];
ids.forEach(id => { ids.forEach(id => {
if (byId[id]) { if (byId[id]) {
// I'm not sure why this check is necessary, but it ought to be a quick fix for https://github.com/lbryio/lbry-desktop/issues/544 // I'm not sure why this check is necessary, but it ought to be a quick fix for https://github.com/lbryio/lbry-desktop/issues/544

View file

@ -27,7 +27,6 @@ export const selectUnfollowedTags = createSelector(
(tagsByName: KnownTags, followedTags: Array<string>): Array<Tag> => { (tagsByName: KnownTags, followedTags: Array<string>): Array<Tag> => {
const followedTagsSet = new Set(followedTags); const followedTagsSet = new Set(followedTags);
let tagsToReturn = []; let tagsToReturn = [];
Object.keys(tagsByName).forEach(key => { Object.keys(tagsByName).forEach(key => {
if (!followedTagsSet.has(key)) { if (!followedTagsSet.has(key)) {
const { name } = tagsByName[key]; const { name } = tagsByName[key];