From c30889d3392b89ffffdb5beea8534f2aa0f76b19 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 19 Nov 2019 15:29:32 -0500 Subject: [PATCH] handle claimsInChannels for channel fetch so pagination always works --- dist/bundle.es.js | 13 ++++++++++--- src/redux/actions/claims.js | 5 +++-- src/redux/reducers/claims.js | 15 +++++++++++++-- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/dist/bundle.es.js b/dist/bundle.es.js index 5f3fa68..bbb0504 100644 --- a/dist/bundle.es.js +++ b/dist/bundle.es.js @@ -2732,13 +2732,14 @@ function doFetchClaimsByChannel(uri, page = 1) { page: page || 1, order_by: ['release_time'] }).then(result => { - const { items: claimsInChannel, page: returnedPage } = result; + const { items: claims, total_items: claimsInChannel, page: returnedPage } = result; dispatch({ type: FETCH_CHANNEL_CLAIMS_COMPLETED, data: { uri, - claims: claimsInChannel || [], + claimsInChannel, + claims: claims || [], page: returnedPage || undefined } }); @@ -4172,9 +4173,10 @@ reducers[FETCH_CHANNEL_CLAIMS_COMPLETED] = (state, action) => { const { uri, claims, + claimsInChannel, page } = action.data; - + const channelClaimCounts = Object.assign({}, state.channelClaimCounts); const claimsByChannel = Object.assign({}, state.claimsByChannel); const byChannel = Object.assign({}, claimsByChannel[uri]); const allClaimIds = new Set(byChannel.all); @@ -4192,6 +4194,10 @@ reducers[FETCH_CHANNEL_CLAIMS_COMPLETED] = (state, action) => { }); } + if (claimsInChannel) { + channelClaimCounts[uri] = claimsInChannel; + } + byChannel.all = allClaimIds; byChannel[page] = currentPageClaimIds; claimsByChannel[uri] = byChannel; @@ -4202,6 +4208,7 @@ reducers[FETCH_CHANNEL_CLAIMS_COMPLETED] = (state, action) => { byId, fetchingChannelClaims, claimsByUri, + channelClaimCounts, currentChannelPage: page }); }; diff --git a/src/redux/actions/claims.js b/src/redux/actions/claims.js index 1cacf65..cd21153 100644 --- a/src/redux/actions/claims.js +++ b/src/redux/actions/claims.js @@ -221,13 +221,14 @@ export function doFetchClaimsByChannel(uri: string, page: number = 1) { page: page || 1, order_by: ['release_time'], }).then((result: ClaimSearchResponse) => { - const { items: claimsInChannel, page: returnedPage } = result; + const { items: claims, total_items: claimsInChannel, page: returnedPage } = result; dispatch({ type: ACTIONS.FETCH_CHANNEL_CLAIMS_COMPLETED, data: { uri, - claims: claimsInChannel || [], + claimsInChannel, + claims: claims || [], page: returnedPage || undefined, }, }); diff --git a/src/redux/reducers/claims.js b/src/redux/reducers/claims.js index 103abe0..d5154a4 100644 --- a/src/redux/reducers/claims.js +++ b/src/redux/reducers/claims.js @@ -246,9 +246,15 @@ reducers[ACTIONS.FETCH_CHANNEL_CLAIMS_COMPLETED] = (state: State, action: any): const { uri, claims, + claimsInChannel, page, - }: { uri: string, claims: Array, page: number } = action.data; - + }: { + uri: string, + claims: Array, + claimsInChannel?: number, + page: number, + } = action.data; + const channelClaimCounts = Object.assign({}, state.channelClaimCounts); const claimsByChannel = Object.assign({}, state.claimsByChannel); const byChannel = Object.assign({}, claimsByChannel[uri]); const allClaimIds = new Set(byChannel.all); @@ -266,6 +272,10 @@ reducers[ACTIONS.FETCH_CHANNEL_CLAIMS_COMPLETED] = (state: State, action: any): }); } + if (claimsInChannel) { + channelClaimCounts[uri] = claimsInChannel; + } + byChannel.all = allClaimIds; byChannel[page] = currentPageClaimIds; claimsByChannel[uri] = byChannel; @@ -276,6 +286,7 @@ reducers[ACTIONS.FETCH_CHANNEL_CLAIMS_COMPLETED] = (state: State, action: any): byId, fetchingChannelClaims, claimsByUri, + channelClaimCounts, currentChannelPage: page, }); };