From e31a50478e526dec7d05d11920563445a0cc8fb5 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Mon, 14 Oct 2019 23:07:41 -0400 Subject: [PATCH 1/3] add callbacks to 'doGetSync' --- dist/bundle.es.js | 41 ++++++++++++++++++----------------- dist/bundle.js | 40 +++++++++++++++++----------------- src/redux/actions/sync.js | 45 +++++++++++++++++++++------------------ 3 files changed, 67 insertions(+), 59 deletions(-) diff --git a/dist/bundle.es.js b/dist/bundle.es.js index 57ab6e6..5233c81 100644 --- a/dist/bundle.es.js +++ b/dist/bundle.es.js @@ -2404,7 +2404,17 @@ function doSetSync(oldHash, newHash, data) { }); }; } -function doGetSync(password = '', shouldSetDefaultAccount) { +function doGetSync(password = '', callback) { + function handleCallback() { + if (callback) { + if (typeof callback !== 'function') { + throw new Error('Second argument passed to "doGetSync" must be a function'); + } + + callback(); + } + } + return dispatch => { dispatch({ type: GET_SYNC_STARTED @@ -2419,7 +2429,7 @@ function doGetSync(password = '', shouldSetDefaultAccount) { data.syncData = response.data; data.hasSyncedWallet = true; - if (response.changed || shouldSetDefaultAccount) { + if (response.changed) { return lbryRedux.Lbry.sync_apply({ password, data: response.data @@ -2432,23 +2442,10 @@ function doGetSync(password = '', shouldSetDefaultAccount) { data }); - if (walletHash !== syncHash || shouldSetDefaultAccount) { + if (walletHash !== syncHash) { // different local hash, need to synchronise dispatch(doSetSync(syncHash, walletHash, walletData)); - - if (shouldSetDefaultAccount) { - dispatch(doSetDefaultAccount(() => { - lbryRedux.Lbry.status().then(status => { - if (status.wallet.is_locked) { - lbryRedux.Lbry.account_unlock({ - password - }); - } - - dispatch(lbryRedux.doFetchChannelListMine()); - }); - })); - } + handleCallback(); } }); } @@ -2457,14 +2454,17 @@ function doGetSync(password = '', shouldSetDefaultAccount) { type: GET_SYNC_COMPLETED, data }); + handleCallback(); }).catch(() => { if (data.hasSyncedWallet) { + const error = 'Error getting synced wallet'; dispatch({ type: GET_SYNC_FAILED, data: { - error: 'Error getting synced wallet' + error } }); + handleCallback(error); } else { // user doesn't have a synced wallet dispatch({ @@ -2481,7 +2481,10 @@ function doGetSync(password = '', shouldSetDefaultAccount) { }).then(({ hash: walletHash, data: syncApplyData - }) => dispatch(doSetSync('', walletHash, syncApplyData, password))); + }) => { + dispatch(doSetSync('', walletHash, syncApplyData, password)); + handleCallback(); + }); } }); }); diff --git a/dist/bundle.js b/dist/bundle.js index d1c5bcc..beef479 100644 --- a/dist/bundle.js +++ b/dist/bundle.js @@ -3969,7 +3969,18 @@ function doSetSync(oldHash, newHash, data) { } function doGetSync() { var password = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var shouldSetDefaultAccount = arguments.length > 1 ? arguments[1] : undefined; + var callback = arguments.length > 1 ? arguments[1] : undefined; + + function handleCallback() { + if (callback) { + if (typeof callback !== 'function') { + throw new Error('Second argument passed to "doGetSync" must be a function'); + } + + callback(); + } + } + return function (dispatch) { dispatch({ type: constants_action_types__WEBPACK_IMPORTED_MODULE_0__["GET_SYNC_STARTED"] @@ -3984,7 +3995,7 @@ function doGetSync() { data.syncData = response.data; data.hasSyncedWallet = true; - if (response.changed || shouldSetDefaultAccount) { + if (response.changed) { return lbry_redux__WEBPACK_IMPORTED_MODULE_2__["Lbry"].sync_apply({ password: password, data: response.data @@ -3996,23 +4007,10 @@ function doGetSync() { data: data }); - if (walletHash !== syncHash || shouldSetDefaultAccount) { + if (walletHash !== syncHash) { // different local hash, need to synchronise dispatch(doSetSync(syncHash, walletHash, walletData)); - - if (shouldSetDefaultAccount) { - dispatch(doSetDefaultAccount(function () { - lbry_redux__WEBPACK_IMPORTED_MODULE_2__["Lbry"].status().then(function (status) { - if (status.wallet.is_locked) { - lbry_redux__WEBPACK_IMPORTED_MODULE_2__["Lbry"].account_unlock({ - password: password - }); - } - - dispatch(Object(lbry_redux__WEBPACK_IMPORTED_MODULE_2__["doFetchChannelListMine"])()); - }); - })); - } + handleCallback(); } }); } @@ -4021,14 +4019,17 @@ function doGetSync() { type: constants_action_types__WEBPACK_IMPORTED_MODULE_0__["GET_SYNC_COMPLETED"], data: data }); + handleCallback(); })["catch"](function () { if (data.hasSyncedWallet) { + var error = 'Error getting synced wallet'; dispatch({ type: constants_action_types__WEBPACK_IMPORTED_MODULE_0__["GET_SYNC_FAILED"], data: { - error: 'Error getting synced wallet' + error: error } }); + handleCallback(error); } else { // user doesn't have a synced wallet dispatch({ @@ -4045,7 +4046,8 @@ function doGetSync() { }).then(function (_ref2) { var walletHash = _ref2.hash, syncApplyData = _ref2.data; - return dispatch(doSetSync('', walletHash, syncApplyData, password)); + dispatch(doSetSync('', walletHash, syncApplyData, password)); + handleCallback(); }); } }); diff --git a/src/redux/actions/sync.js b/src/redux/actions/sync.js index d456dc4..76dfdfa 100644 --- a/src/redux/actions/sync.js +++ b/src/redux/actions/sync.js @@ -1,6 +1,6 @@ import * as ACTIONS from 'constants/action_types'; import Lbryio from 'lbryio'; -import { Lbry, doFetchChannelListMine } from 'lbry-redux'; +import { Lbry } from 'lbry-redux'; export function doSetDefaultAccount(success, failure) { return dispatch => { @@ -77,7 +77,17 @@ export function doSetSync(oldHash, newHash, data) { }; } -export function doGetSync(password = '', shouldSetDefaultAccount) { +export function doGetSync(password = '', callback) { + function handleCallback() { + if (callback) { + if (typeof callback !== 'function') { + throw new Error('Second argument passed to "doGetSync" must be a function'); + } + + callback(); + } + } + return dispatch => { dispatch({ type: ACTIONS.GET_SYNC_STARTED, @@ -91,42 +101,34 @@ export function doGetSync(password = '', shouldSetDefaultAccount) { data.syncHash = syncHash; data.syncData = response.data; data.hasSyncedWallet = true; - if (response.changed || shouldSetDefaultAccount) { + if (response.changed) { return Lbry.sync_apply({ password, data: response.data }).then( ({ hash: walletHash, data: walletData }) => { dispatch({ type: ACTIONS.GET_SYNC_COMPLETED, data }); - if (walletHash !== syncHash || shouldSetDefaultAccount) { + if (walletHash !== syncHash) { // different local hash, need to synchronise dispatch(doSetSync(syncHash, walletHash, walletData)); - - if (shouldSetDefaultAccount) { - dispatch( - doSetDefaultAccount(() => { - Lbry.status().then(status => { - if (status.wallet.is_locked) { - Lbry.account_unlock({ password }); - } - dispatch(doFetchChannelListMine()); - }); - }) - ); - } + handleCallback(); } } ); } dispatch({ type: ACTIONS.GET_SYNC_COMPLETED, data }); + handleCallback(); }) .catch(() => { if (data.hasSyncedWallet) { + const error = 'Error getting synced wallet'; dispatch({ type: ACTIONS.GET_SYNC_FAILED, data: { - error: 'Error getting synced wallet', + error, }, }); + + handleCallback(error); } else { // user doesn't have a synced wallet dispatch({ @@ -136,9 +138,10 @@ export function doGetSync(password = '', shouldSetDefaultAccount) { // call sync_apply to get data to sync // first time sync. use any string for old hash - Lbry.sync_apply({ password }).then(({ hash: walletHash, data: syncApplyData }) => - dispatch(doSetSync('', walletHash, syncApplyData, password)) - ); + Lbry.sync_apply({ password }).then(({ hash: walletHash, data: syncApplyData }) => { + dispatch(doSetSync('', walletHash, syncApplyData, password)); + handleCallback(); + }); } }); }); From b8e1708ee4491db342c81576265e1b58f542bedb Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Mon, 14 Oct 2019 23:21:17 -0400 Subject: [PATCH 2/3] better default password handling --- dist/bundle.es.js | 4 +++- dist/bundle.js | 5 ++--- src/redux/actions/sync.js | 4 +++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/dist/bundle.es.js b/dist/bundle.es.js index 5233c81..e97001b 100644 --- a/dist/bundle.es.js +++ b/dist/bundle.es.js @@ -2404,7 +2404,9 @@ function doSetSync(oldHash, newHash, data) { }); }; } -function doGetSync(password = '', callback) { +function doGetSync(passedPassword, callback) { + const password = passedPassword === null || passedPassword === undefined ? '' : passedPassword; + function handleCallback() { if (callback) { if (typeof callback !== 'function') { diff --git a/dist/bundle.js b/dist/bundle.js index beef479..144469f 100644 --- a/dist/bundle.js +++ b/dist/bundle.js @@ -3967,9 +3967,8 @@ function doSetSync(oldHash, newHash, data) { }); }; } -function doGetSync() { - var password = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var callback = arguments.length > 1 ? arguments[1] : undefined; +function doGetSync(passedPassword, callback) { + var password = passedPassword === null || passedPassword === undefined ? '' : passedPassword; function handleCallback() { if (callback) { diff --git a/src/redux/actions/sync.js b/src/redux/actions/sync.js index 76dfdfa..f83d988 100644 --- a/src/redux/actions/sync.js +++ b/src/redux/actions/sync.js @@ -77,7 +77,9 @@ export function doSetSync(oldHash, newHash, data) { }; } -export function doGetSync(password = '', callback) { +export function doGetSync(passedPassword, callback) { + const password = passedPassword === null || passedPassword === undefined ? '' : passedPassword; + function handleCallback() { if (callback) { if (typeof callback !== 'function') { From fc55460f2eeb71d2d86facab862c271e12e8c248 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 15 Oct 2019 10:32:05 -0400 Subject: [PATCH 3/3] fix to prevent callback being called twice --- dist/bundle.es.js | 12 ++++++------ dist/bundle.js | 12 ++++++------ src/redux/actions/sync.js | 1 - 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/dist/bundle.es.js b/dist/bundle.es.js index e97001b..f77a895 100644 --- a/dist/bundle.es.js +++ b/dist/bundle.es.js @@ -2450,13 +2450,13 @@ function doGetSync(passedPassword, callback) { handleCallback(); } }); + } else { + dispatch({ + type: GET_SYNC_COMPLETED, + data + }); + handleCallback(); } - - dispatch({ - type: GET_SYNC_COMPLETED, - data - }); - handleCallback(); }).catch(() => { if (data.hasSyncedWallet) { const error = 'Error getting synced wallet'; diff --git a/dist/bundle.js b/dist/bundle.js index 144469f..f5cc630 100644 --- a/dist/bundle.js +++ b/dist/bundle.js @@ -4012,13 +4012,13 @@ function doGetSync(passedPassword, callback) { handleCallback(); } }); + } else { + dispatch({ + type: constants_action_types__WEBPACK_IMPORTED_MODULE_0__["GET_SYNC_COMPLETED"], + data: data + }); + handleCallback(); } - - dispatch({ - type: constants_action_types__WEBPACK_IMPORTED_MODULE_0__["GET_SYNC_COMPLETED"], - data: data - }); - handleCallback(); })["catch"](function () { if (data.hasSyncedWallet) { var error = 'Error getting synced wallet'; diff --git a/src/redux/actions/sync.js b/src/redux/actions/sync.js index f83d988..990a1a6 100644 --- a/src/redux/actions/sync.js +++ b/src/redux/actions/sync.js @@ -116,7 +116,6 @@ export function doGetSync(passedPassword, callback) { } ); } - dispatch({ type: ACTIONS.GET_SYNC_COMPLETED, data }); handleCallback(); })