From 08c375d024d65f8976e89a678fd76a8da4a6cab7 Mon Sep 17 00:00:00 2001 From: jessop Date: Mon, 20 Jul 2020 20:03:14 -0400 Subject: [PATCH] adds reconnect timeout and stores non-signed in prefs in different key --- dist/bundle.es.js | 22 +++++++++++++++++----- src/redux/actions/wallet.js | 20 +++++++++++++++++--- src/redux/middleware/shared-state.js | 11 +++++++---- 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/dist/bundle.es.js b/dist/bundle.es.js index fcedf9b..ee590eb 100644 --- a/dist/bundle.es.js +++ b/dist/bundle.es.js @@ -1996,7 +1996,6 @@ function doPreferenceGet(key, success, fail) { // -const SHARED_PREFERENCE_KEY = 'shared'; const SHARED_PREFERENCE_VERSION = '0.1'; let oldShared = {}; @@ -2011,6 +2010,7 @@ const buildSharedStateMiddleware = (actions, sharedStateFilters, sharedStateCb) const actionResult = next(action); // Call `getState` after calling `next` to ensure the state has updated in response to the action const nextState = getState(); + const preferenceKey = nextState.user && nextState.user.user && nextState.user.user.has_verified_email ? 'shared' : 'anon'; const shared = {}; Object.keys(sharedStateFilters).forEach(key => { @@ -2027,7 +2027,7 @@ const buildSharedStateMiddleware = (actions, sharedStateFilters, sharedStateCb) if (!isEqual(oldShared, shared)) { // only update if the preference changed from last call in the same session oldShared = shared; - doPreferenceSet(SHARED_PREFERENCE_KEY, shared, SHARED_PREFERENCE_VERSION); + doPreferenceSet(preferenceKey, shared, SHARED_PREFERENCE_VERSION); } if (sharedStateCb) { @@ -3235,11 +3235,23 @@ function doWalletReconnect() { dispatch({ type: WALLET_RESTART }); + let failed = false; // this basically returns null when it's done. :( // might be good to dispatch ACTIONS.WALLET_RESTARTED - lbryProxy.wallet_reconnect().then(() => dispatch({ - type: WALLET_RESTART_COMPLETED - })); + const walletTimeout = setTimeout(() => { + failed = true; + dispatch({ + type: WALLET_RESTART_COMPLETED + }); + dispatch(doToast({ + message: __('Your servers were not available. Check your url and port, or switch back to defaults.'), + isError: true + })); + }, 15000); + lbryProxy.wallet_reconnect().then(() => { + clearTimeout(walletTimeout); + if (!failed) dispatch({ type: WALLET_RESTART_COMPLETED }); + }); }; } function doWalletDecrypt() { diff --git a/src/redux/actions/wallet.js b/src/redux/actions/wallet.js index 949ada5..c454352 100644 --- a/src/redux/actions/wallet.js +++ b/src/redux/actions/wallet.js @@ -424,13 +424,27 @@ export function doWalletReconnect() { dispatch({ type: ACTIONS.WALLET_RESTART, }); + let failed = false; // this basically returns null when it's done. :( // might be good to dispatch ACTIONS.WALLET_RESTARTED - Lbry.wallet_reconnect().then(() => + const walletTimeout = setTimeout(() => { + failed = true; dispatch({ type: ACTIONS.WALLET_RESTART_COMPLETED, - }) - ); + }); + dispatch( + doToast({ + message: __( + 'Your servers were not available. Check your url and port, or switch back to defaults.' + ), + isError: true, + }) + ); + }, 15000); + Lbry.wallet_reconnect().then(() => { + clearTimeout(walletTimeout); + if (!failed) dispatch({ type: ACTIONS.WALLET_RESTART_COMPLETED }); + }); }; } export function doWalletDecrypt() { diff --git a/src/redux/middleware/shared-state.js b/src/redux/middleware/shared-state.js index 0fb0d7f..100a86c 100644 --- a/src/redux/middleware/shared-state.js +++ b/src/redux/middleware/shared-state.js @@ -2,7 +2,6 @@ import isEqual from 'util/deep-equal'; import { doPreferenceSet } from 'redux/actions/sync'; -const SHARED_PREFERENCE_KEY = 'shared'; const SHARED_PREFERENCE_VERSION = '0.1'; let oldShared = {}; @@ -10,7 +9,7 @@ export const buildSharedStateMiddleware = ( actions: Array, sharedStateFilters: {}, sharedStateCb?: any => void -) => ({ getState, dispatch }: { getState: () => {}, dispatch: any => void }) => ( +) => ({ getState, dispatch }: { getState: () => { user: any }, dispatch: any => void }) => ( next: ({}) => void ) => (action: { type: string, data: any }) => { const currentState = getState(); @@ -22,7 +21,11 @@ export const buildSharedStateMiddleware = ( const actionResult = next(action); // Call `getState` after calling `next` to ensure the state has updated in response to the action - const nextState = getState(); + const nextState: { user: any } = getState(); + const preferenceKey = + nextState.user && nextState.user.user && nextState.user.user.has_verified_email + ? 'shared' + : 'anon'; const shared = {}; Object.keys(sharedStateFilters).forEach(key => { @@ -39,7 +42,7 @@ export const buildSharedStateMiddleware = ( if (!isEqual(oldShared, shared)) { // only update if the preference changed from last call in the same session oldShared = shared; - doPreferenceSet(SHARED_PREFERENCE_KEY, shared, SHARED_PREFERENCE_VERSION); + doPreferenceSet(preferenceKey, shared, SHARED_PREFERENCE_VERSION); } if (sharedStateCb) {