From 76fe44e519635e30cf0d34a2da15a5eb6d1d86da Mon Sep 17 00:00:00 2001 From: 6ea86b96 <6ea86b96@gmail.com> Date: Mon, 10 Jul 2017 21:44:49 +0700 Subject: [PATCH] Refactor back to lbry.js localStorage for pending publishes --- ui/js/actions/content.js | 61 +++++-------------------------- ui/js/component/fileTile/view.jsx | 9 +---- ui/js/lbry.js | 53 ++++++++++++--------------- ui/js/reducers/claims.js | 39 -------------------- ui/js/store.js | 8 +--- 5 files changed, 34 insertions(+), 136 deletions(-) diff --git a/ui/js/actions/content.js b/ui/js/actions/content.js index 291dc4d81..fb58d0a74 100644 --- a/ui/js/actions/content.js +++ b/ui/js/actions/content.js @@ -389,62 +389,19 @@ export function doCreateChannel(name, amount) { export function doPublish(params) { return function(dispatch, getState) { - let uri; - const { name, channel_name } = params; - if (channel_name) { - uri = lbryuri.build({ name: channel_name, path: name }, false); - } else { - uri = lbryuri.build({ name: name }, false); - } - const fakeId = "pending"; - const pendingPublish = { - name, - channel_name, - claim_id: fakeId, - txid: "pending_" + uri, - nout: 0, - outpoint: fakeId + ":0", - time: Date.now(), - pending: true, - }; - - dispatch({ - type: types.PUBLISH_STARTED, - data: { - params, - pendingPublish, - }, - }); - return new Promise((resolve, reject) => { const success = claim => { - claim.name = params.name; - claim.channel_name = params.channel_name; - dispatch({ - type: types.PUBLISH_COMPLETED, - data: { - claim, - uri, - pendingPublish, - }, - }); - dispatch(doFileList()); resolve(claim); - }; - const failure = error => { - dispatch({ - type: types.PUBLISH_FAILED, - data: { - error, - params, - uri, - pendingPublish, - }, - }); - reject(error); - }; - lbry.publish(params).then(success, failure); + if (claim === true) dispatch(doFetchClaimListMine()); + else + setTimeout(() => dispatch(doFetchClaimListMine()), 20000, { + once: true, + }); + }; + const failure = err => reject(err); + + lbry.publishDeprecated(params, null, success, failure); }); }; } diff --git a/ui/js/component/fileTile/view.jsx b/ui/js/component/fileTile/view.jsx index eb865d1ac..ef4654ce8 100644 --- a/ui/js/component/fileTile/view.jsx +++ b/ui/js/component/fileTile/view.jsx @@ -66,14 +66,7 @@ class FileTile extends React.PureComponent { ? metadata.title : lbryuri.parse(uri).contentName; const obscureNsfw = this.props.obscureNsfw && metadata && metadata.nsfw; - let onClick; - if (isClaimed) { - onClick = () => navigate("/show", { uri }); - } else { - onClick = () => { - return false; - }; - } + let onClick = () => navigate("/show", { uri }); let description = ""; if (isClaimed) { diff --git a/ui/js/lbry.js b/ui/js/lbry.js index f13665e09..7409bdde4 100644 --- a/ui/js/lbry.js +++ b/ui/js/lbry.js @@ -223,45 +223,38 @@ lbry.publishDeprecated = function( ) { lbry.publish(params).then( result => { - if (returnedPending) { - return; - } - - clearTimeout(returnPendingTimeout); + if (returnPendingTimeout) clearTimeout(returnPendingTimeout); publishedCallback(result); }, err => { - if (returnedPending) { - return; - } - - clearTimeout(returnPendingTimeout); + if (returnPendingTimeout) clearTimeout(returnPendingTimeout); errorCallback(err); } ); - let returnedPending = false; // Give a short grace period in case publish() returns right away or (more likely) gives an error - const returnPendingTimeout = setTimeout(() => { - returnedPending = true; + const returnPendingTimeout = setTimeout( + () => { + if (publishedCallback) { + savePendingPublish({ + name: params.name, + channel_name: params.channel_name, + }); + publishedCallback(true); + } - if (publishedCallback) { - savePendingPublish({ - name: params.name, - channel_name: params.channel_name, - }); - publishedCallback(true); - } - - if (fileListedCallback) { - const { name, channel_name } = params; - savePendingPublish({ - name: params.name, - channel_name: params.channel_name, - }); - fileListedCallback(true); - } - }, 2000); + if (fileListedCallback) { + const { name, channel_name } = params; + savePendingPublish({ + name: params.name, + channel_name: params.channel_name, + }); + fileListedCallback(true); + } + }, + 2000, + { once: true } + ); }; lbry.getClientSettings = function() { diff --git a/ui/js/reducers/claims.js b/ui/js/reducers/claims.js index 8f60bf9a1..2470e5f9c 100644 --- a/ui/js/reducers/claims.js +++ b/ui/js/reducers/claims.js @@ -159,45 +159,6 @@ reducers[types.CREATE_CHANNEL_COMPLETED] = function(state, action) { }); }; -reducers[types.PUBLISH_STARTED] = function(state, action) { - const { pendingPublish } = action.data; - const pendingById = Object.assign({}, state.pendingById); - - pendingById[pendingPublish.claim_id] = pendingPublish; - - return Object.assign({}, state, { - pendingById, - }); -}; - -reducers[types.PUBLISH_COMPLETED] = function(state, action) { - const { claim, pendingPublish } = action.data; - const byId = Object.assign({}, state.byId); - const myClaims = new Set(state.myClaims); - const pendingById = Object.assign({}, state.pendingById); - - byId[claim.claim_id] = claim; - myClaims.add(claim.claim_id); - delete pendingById[pendingPublish.claim_id]; - - return Object.assign({}, state, { - byId, - myClaims, - pendingById, - }); -}; - -reducers[types.PUBLISH_FAILED] = function(state, action) { - const { pendingPublish } = action.data; - const pendingById = Object.assign({}, state.pendingById); - - delete pendingById[pendingPublish.claim_id]; - - return Object.assign({}, state, { - pendingById, - }); -}; - export default function reducer(state = defaultState, action) { const handler = reducers[action.type]; if (handler) return handler(state, action); diff --git a/ui/js/store.js b/ui/js/store.js index 124174bc1..5eb84d4cf 100644 --- a/ui/js/store.js +++ b/ui/js/store.js @@ -86,13 +86,7 @@ const createStoreWithMiddleware = redux.compose( const reduxStore = createStoreWithMiddleware(enableBatching(reducers)); const compressor = createCompressor(); -const saveClaimsFilter = createFilter("claims", [ - "byId", - "claimsByUri", - "myClaims", - "myChannelClaims", - "pendingById", -]); +const saveClaimsFilter = createFilter("claims", ["byId", "claimsByUri"]); const persistOptions = { whitelist: ["claims"],