From 31cc95cf0eb894953a91bed0607bbd200bb52c1b Mon Sep 17 00:00:00 2001
From: Jeremy Kauffman <kauffj@gmail.com>
Date: Fri, 22 Sep 2017 18:59:28 -0400
Subject: [PATCH] simplify balance check now that we are in redux land

---
 ui/js/actions/app.js         |  3 ++-
 ui/js/actions/wallet.js      | 23 +++++++++++++++------
 ui/js/component/app/index.js |  2 --
 ui/js/component/app/view.jsx |  5 -----
 ui/js/lbry.js                | 39 ------------------------------------
 5 files changed, 19 insertions(+), 53 deletions(-)

diff --git a/ui/js/actions/app.js b/ui/js/actions/app.js
index 67fb76071..0fb877573 100644
--- a/ui/js/actions/app.js
+++ b/ui/js/actions/app.js
@@ -1,5 +1,4 @@
 import * as types from "constants/action_types";
-import * as settings from "constants/settings";
 import lbry from "lbry";
 import {
   selectUpdateUrl,
@@ -8,6 +7,7 @@ import {
   selectUpgradeFilename,
 } from "selectors/app";
 import { doFetchDaemonSettings } from "actions/settings";
+import { doBalanceSubscribe } from "actions/wallet";
 import { doAuthenticate } from "actions/user";
 import { doFetchFileInfosAndPublishedClaims } from "actions/file_info";
 
@@ -178,6 +178,7 @@ export function doDaemonReady() {
     dispatch(doAuthenticate());
     dispatch({ type: types.DAEMON_READY });
     dispatch(doFetchDaemonSettings());
+    dispatch(doBalanceSubscribe());
     dispatch(doFetchFileInfosAndPublishedClaims());
   };
 }
diff --git a/ui/js/actions/wallet.js b/ui/js/actions/wallet.js
index 0e90266fb..e7b36597a 100644
--- a/ui/js/actions/wallet.js
+++ b/ui/js/actions/wallet.js
@@ -9,12 +9,23 @@ import { doOpenModal, doShowSnackBar } from "actions/app";
 import { doNavigate } from "actions/navigation";
 import * as modals from "constants/modal_types";
 
-export function doUpdateBalance(balance) {
-  return {
-    type: types.UPDATE_BALANCE,
-    data: {
-      balance: balance,
-    },
+export function doUpdateBalance() {
+  return function(dispatch, getState) {
+    lbry.wallet_balance().then(balance => {
+      return dispatch({
+        type: types.UPDATE_BALANCE,
+        data: {
+          balance: balance,
+        },
+      });
+    });
+  };
+}
+
+export function doBalanceSubscribe() {
+  return function(dispatch, getState) {
+    dispatch(doUpdateBalance());
+    setInterval(() => dispatch(doUpdateBalance()), 5000);
   };
 }
 
diff --git a/ui/js/component/app/index.js b/ui/js/component/app/index.js
index 574c5f862..06ff45f18 100644
--- a/ui/js/component/app/index.js
+++ b/ui/js/component/app/index.js
@@ -5,7 +5,6 @@ import { selectUser } from "selectors/user";
 import { doCheckUpgradeAvailable, doAlertError } from "actions/app";
 import { doRecordScroll } from "actions/navigation";
 import { doFetchRewardedContent } from "actions/content";
-import { doUpdateBalance } from "actions/wallet";
 import App from "./view";
 
 const select = (state, props) => ({
@@ -16,7 +15,6 @@ const select = (state, props) => ({
 const perform = dispatch => ({
   alertError: errorList => dispatch(doAlertError(errorList)),
   checkUpgradeAvailable: () => dispatch(doCheckUpgradeAvailable()),
-  updateBalance: balance => dispatch(doUpdateBalance(balance)),
   fetchRewardedContent: () => dispatch(doFetchRewardedContent()),
   recordScroll: scrollPosition => dispatch(doRecordScroll(scrollPosition)),
 });
diff --git a/ui/js/component/app/view.jsx b/ui/js/component/app/view.jsx
index 37bd05c72..b349fd2de 100644
--- a/ui/js/component/app/view.jsx
+++ b/ui/js/component/app/view.jsx
@@ -10,7 +10,6 @@ class App extends React.PureComponent {
     const {
       alertError,
       checkUpgradeAvailable,
-      updateBalance,
       fetchRewardedContent,
     } = this.props;
 
@@ -22,10 +21,6 @@ class App extends React.PureComponent {
       checkUpgradeAvailable();
     }
 
-    lbry.balanceSubscribe(balance => {
-      updateBalance(balance);
-    });
-
     fetchRewardedContent();
 
     this.scrollListener = () => this.props.recordScroll(window.scrollY);
diff --git a/ui/js/lbry.js b/ui/js/lbry.js
index 32770bcf1..ac787b353 100644
--- a/ui/js/lbry.js
+++ b/ui/js/lbry.js
@@ -279,45 +279,6 @@ lbry.getMediaType = function(contentType, fileName) {
   }
 };
 
-lbry._subscribeIdCount = 0;
-lbry._balanceSubscribeCallbacks = {};
-lbry._balanceSubscribeInterval = 5000;
-
-lbry._balanceUpdateInterval = null;
-lbry._updateBalanceSubscribers = function() {
-  lbry.wallet_balance().then(function(balance) {
-    for (let callback of Object.values(lbry._balanceSubscribeCallbacks)) {
-      callback(balance);
-    }
-  });
-
-  if (
-    !lbry._balanceUpdateInterval &&
-    Object.keys(lbry._balanceSubscribeCallbacks).length
-  ) {
-    lbry._balanceUpdateInterval = setInterval(() => {
-      lbry._updateBalanceSubscribers();
-    }, lbry._balanceSubscribeInterval);
-  }
-};
-
-lbry.balanceSubscribe = function(callback) {
-  const subscribeId = ++lbry._subscribeIdCount;
-  lbry._balanceSubscribeCallbacks[subscribeId] = callback;
-  lbry._updateBalanceSubscribers();
-  return subscribeId;
-};
-
-lbry.balanceUnsubscribe = function(subscribeId) {
-  delete lbry._balanceSubscribeCallbacks[subscribeId];
-  if (
-    lbry._balanceUpdateInterval &&
-    !Object.keys(lbry._balanceSubscribeCallbacks).length
-  ) {
-    clearInterval(lbry._balanceUpdateInterval);
-  }
-};
-
 lbry.showMenuIfNeeded = function() {
   const showingMenu = sessionStorage.getItem("menuShown") || null;
   const chosenMenu = lbry.getClientSetting("showDeveloperMenu")