support consolidating txos

improvements

actual values

bump

bump

devtools revert

bugfix

bump
This commit is contained in:
zeppi 2020-12-30 17:31:03 -05:00
parent dd1d956bfe
commit 1b3bc0f4e3
7 changed files with 170 additions and 34 deletions

View file

@ -178,10 +178,6 @@ export default appState => {
window.webContents.send('language-set', language); window.webContents.send('language-set', language);
} }
}); });
if (isDev) {
window.webContents.openDevTools();
}
}); });
window.webContents.on('crashed', () => { window.webContents.on('crashed', () => {

View file

@ -177,7 +177,6 @@ if (!gotSingleInstanceLock) {
if (isDev) { if (isDev) {
await installDevtools(); await installDevtools();
} }
rendererWindow = createWindow(appState); rendererWindow = createWindow(appState);
tray = createTray(rendererWindow); tray = createTray(rendererWindow);

View file

@ -112,7 +112,7 @@
"dotenv-webpack": "^1.8.0", "dotenv-webpack": "^1.8.0",
"electron": "9.3.1", "electron": "9.3.1",
"electron-builder": "^22.9.1", "electron-builder": "^22.9.1",
"electron-devtools-installer": "^2.2.4", "electron-devtools-installer": "^3.1.1",
"electron-is-dev": "^0.3.0", "electron-is-dev": "^0.3.0",
"electron-webpack": "^2.8.2", "electron-webpack": "^2.8.2",
"electron-window-state": "^4.1.1", "electron-window-state": "^4.1.1",
@ -140,7 +140,7 @@
"imagesloaded": "^4.1.4", "imagesloaded": "^4.1.4",
"json-loader": "^0.5.4", "json-loader": "^0.5.4",
"lbry-format": "https://github.com/lbryio/lbry-format.git", "lbry-format": "https://github.com/lbryio/lbry-format.git",
"lbry-redux": "lbryio/lbry-redux#ce9f720bbd978d7574ab072771aa85ff5a83e2fc", "lbry-redux": "lbryio/lbry-redux#acc54f157f3757b07145e04d325c133c981440c1",
"lbryinc": "lbryio/lbryinc#eee2cb730ecec95a1344a755035755b0d4dad5cf", "lbryinc": "lbryio/lbryinc#eee2cb730ecec95a1344a755035755b0d4dad5cf",
"lint-staged": "^7.0.2", "lint-staged": "^7.0.2",
"localforage": "^1.7.1", "localforage": "^1.7.1",

View file

@ -1549,5 +1549,9 @@
"This content can be downloaded from lbry.tv, but not displayed. It will display in LBRY Desktop, an app for desktop computers.": "This content can be downloaded from lbry.tv, but not displayed. It will display in LBRY Desktop, an app for desktop computers.", "This content can be downloaded from lbry.tv, but not displayed. It will display in LBRY Desktop, an app for desktop computers.": "This content can be downloaded from lbry.tv, but not displayed. It will display in LBRY Desktop, an app for desktop computers.",
"Repost Here": "Repost Here", "Repost Here": "Repost Here",
"Publish Here": "Publish Here", "Publish Here": "Publish Here",
"Close sidebar - hide channels you are following.": "Close sidebar - hide channels you are following.",
"Consolidate Now": "Consolidate Now",
"Your wallet has a lot of change lying around. Consolidating will speed up your transactions. This could take some time. %now%%help%": "Your wallet has a lot of change lying around. Consolidating will speed up your transactions. This could take some time. %now%%help%",
"Consolidating": "Consolidating",
"--end--": "--end--" "--end--": "--end--"
} }

View file

@ -1,5 +1,16 @@
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { selectBalance, selectClaimsBalance, selectSupportsBalance, selectTipsBalance } from 'lbry-redux'; import {
selectBalance,
selectClaimsBalance,
selectSupportsBalance,
selectTipsBalance,
selectIsFetchingUtxoCounts,
selectUtxoCounts,
doFetchUtxoCounts,
doUtxoConsolidate,
selectPendingOtherTransactions,
selectIsConsolidatingUtxos,
} from 'lbry-redux';
import { doOpenModal } from 'redux/actions/app'; import { doOpenModal } from 'redux/actions/app';
import { selectSyncHash } from 'redux/selectors/sync'; import { selectSyncHash } from 'redux/selectors/sync';
import { selectClaimedRewards } from 'redux/selectors/rewards'; import { selectClaimedRewards } from 'redux/selectors/rewards';
@ -12,8 +23,14 @@ const select = state => ({
tipsBalance: selectTipsBalance(state) || 0, tipsBalance: selectTipsBalance(state) || 0,
rewards: selectClaimedRewards(state), rewards: selectClaimedRewards(state),
hasSynced: Boolean(selectSyncHash(state)), hasSynced: Boolean(selectSyncHash(state)),
fetchingUtxoCounts: selectIsFetchingUtxoCounts(state),
consolidatingUtxos: selectIsConsolidatingUtxos(state),
utxoCounts: selectUtxoCounts(state),
pendingUtxoConsolidating: selectPendingOtherTransactions(state),
}); });
export default connect(select, { export default connect(select, {
doOpenModal, doOpenModal,
doFetchUtxoCounts,
doUtxoConsolidate,
})(WalletBalance); })(WalletBalance);

View file

@ -9,6 +9,7 @@ import Icon from 'component/common/icon';
import HelpLink from 'component/common/help-link'; import HelpLink from 'component/common/help-link';
import Card from 'component/common/card'; import Card from 'component/common/card';
import LbcSymbol from 'component/common/lbc-symbol'; import LbcSymbol from 'component/common/lbc-symbol';
import I18nMessage from 'component/i18nMessage';
type Props = { type Props = {
balance: number, balance: number,
@ -18,35 +19,95 @@ type Props = {
tipsBalance: number, tipsBalance: number,
doOpenModal: string => void, doOpenModal: string => void,
hasSynced: boolean, hasSynced: boolean,
doFetchUtxoCounts: () => void,
doUtxoConsolidate: () => void,
fetchingUtxoCounts: boolean,
consolidatingUtxos: boolean,
utxoCounts: { [string]: number },
pendingUtxoConsolidating: Array<string>,
}; };
const WalletBalance = (props: Props) => { const WALLET_CONSOLIDATE_UTXOS = 400;
const { balance, claimsBalance, supportsBalance, tipsBalance, doOpenModal, hasSynced } = props; const LARGE_WALLET_BALANCE = 100;
const WalletBalance = (props: Props) => {
const {
balance,
claimsBalance,
supportsBalance,
tipsBalance,
doOpenModal,
hasSynced,
pendingUtxoConsolidating,
doUtxoConsolidate,
doFetchUtxoCounts,
consolidatingUtxos,
utxoCounts,
} = props;
const { other: otherCount = 0 } = utxoCounts || {};
React.useEffect(() => {
if (balance > LARGE_WALLET_BALANCE) {
doFetchUtxoCounts();
}
}, [doFetchUtxoCounts, balance]);
return ( return (
<React.Fragment> <React.Fragment>
<section className="columns"> <section className="columns">
<Card <div>
title={<LbcSymbol postfix={balance} isTitle />} <div className="section">
subtitle={__('Available Balance')} <Card
actions={ title={<LbcSymbol postfix={balance} isTitle />}
<div className="section__actions"> subtitle={__('Available Balance')}
<Button button="primary" label={__('Buy')} icon={ICONS.BUY} navigate={`/$/${PAGES.BUY}`} /> actions={
<Button <>
button="secondary" <div className="section__actions--between">
label={__('Receive')} <div className="section__actions">
icon={ICONS.RECEIVE} <Button button="primary" label={__('Buy')} icon={ICONS.BUY} navigate={`/$/${PAGES.BUY}`} />
onClick={() => doOpenModal(MODALS.WALLET_RECEIVE)} <Button
/> button="secondary"
<Button label={__('Receive')}
button="secondary" icon={ICONS.RECEIVE}
label={__('Send')} onClick={() => doOpenModal(MODALS.WALLET_RECEIVE)}
icon={ICONS.SEND} />
onClick={() => doOpenModal(MODALS.WALLET_SEND)} <Button
/> button="secondary"
</div> label={__('Send')}
} icon={ICONS.SEND}
/> onClick={() => doOpenModal(MODALS.WALLET_SEND)}
/>
</div>
</div>
{(otherCount > WALLET_CONSOLIDATE_UTXOS || pendingUtxoConsolidating.length || consolidatingUtxos) && (
<p className="help">
<I18nMessage
tokens={{
now: (
<Button
button="link"
onClick={() => doUtxoConsolidate()}
disabled={pendingUtxoConsolidating.length || consolidatingUtxos}
label={
pendingUtxoConsolidating.length || consolidatingUtxos
? __('Consolidating')
: __('Consolidate Now')
}
/>
),
help: <HelpLink href="https://lbry.com/faq/transaction-types" />,
}}
>
Your wallet has a lot of change lying around. Consolidating will speed up your transactions.
This could take some time. %now%%help%
</I18nMessage>
</p>
)}
</>
}
/>
</div>
</div>
<div> <div>
<React.Fragment> <React.Fragment>
{/* @if TARGET='app' */} {/* @if TARGET='app' */}

View file

@ -4711,6 +4711,15 @@ electron-devtools-installer@^2.2.4:
rimraf "^2.5.2" rimraf "^2.5.2"
semver "^5.3.0" semver "^5.3.0"
electron-devtools-installer@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-3.1.1.tgz#7b56c8c86475c5e4e10de6917d150c53c9ceb55e"
integrity sha512-g2D4J6APbpsiIcnLkFMyKZ6bOpEJ0Ltcc2m66F7oKUymyGAt628OWeU9nRZoh1cNmUs/a6Cls2UfOmsZtE496Q==
dependencies:
rimraf "^3.0.2"
semver "^7.2.1"
unzip-crx-3 "^0.2.0"
electron-dl@^1.11.0: electron-dl@^1.11.0:
version "1.14.0" version "1.14.0"
resolved "https://registry.yarnpkg.com/electron-dl/-/electron-dl-1.14.0.tgz#1466f1b945664ca3d784268307c2b935728177bf" resolved "https://registry.yarnpkg.com/electron-dl/-/electron-dl-1.14.0.tgz#1466f1b945664ca3d784268307c2b935728177bf"
@ -7253,6 +7262,16 @@ jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3:
array-includes "^3.0.3" array-includes "^3.0.3"
object.assign "^4.1.0" object.assign "^4.1.0"
jszip@^3.1.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.5.0.tgz#b4fd1f368245346658e781fec9675802489e15f6"
integrity sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==
dependencies:
lie "~3.3.0"
pako "~1.0.2"
readable-stream "~2.3.6"
set-immediate-shim "~1.0.1"
jszip@~2.5.0: jszip@~2.5.0:
version "2.5.0" version "2.5.0"
resolved "https://registry.yarnpkg.com/jszip/-/jszip-2.5.0.tgz#7444fd8551ddf3e5da7198fea0c91bc8308cc274" resolved "https://registry.yarnpkg.com/jszip/-/jszip-2.5.0.tgz#7444fd8551ddf3e5da7198fea0c91bc8308cc274"
@ -7328,9 +7347,9 @@ lazy-val@^1.0.4:
yargs "^13.2.2" yargs "^13.2.2"
zstd-codec "^0.1.1" zstd-codec "^0.1.1"
lbry-redux@lbryio/lbry-redux#ce9f720bbd978d7574ab072771aa85ff5a83e2fc: lbry-redux@lbryio/lbry-redux#acc54f157f3757b07145e04d325c133c981440c1:
version "0.0.1" version "0.0.1"
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/ce9f720bbd978d7574ab072771aa85ff5a83e2fc" resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/acc54f157f3757b07145e04d325c133c981440c1"
dependencies: dependencies:
proxy-polyfill "0.1.6" proxy-polyfill "0.1.6"
reselect "^3.0.0" reselect "^3.0.0"
@ -7381,6 +7400,13 @@ lie@3.1.1:
dependencies: dependencies:
immediate "~3.0.5" immediate "~3.0.5"
lie@~3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
dependencies:
immediate "~3.0.5"
lines-and-columns@^1.1.6: lines-and-columns@^1.1.6:
version "1.1.6" version "1.1.6"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
@ -8687,7 +8713,7 @@ package-json@^6.3.0:
registry-url "^5.0.0" registry-url "^5.0.0"
semver "^6.2.0" semver "^6.2.0"
pako@^1.0.11, pako@~1.0.5: pako@^1.0.11, pako@~1.0.2, pako@~1.0.5:
version "1.0.11" version "1.0.11"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
@ -10231,6 +10257,13 @@ rimraf@2.6.3:
dependencies: dependencies:
glob "^7.1.3" glob "^7.1.3"
rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
ripemd160@^2.0.0, ripemd160@^2.0.1: ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
@ -10436,6 +10469,13 @@ semver@^7.1.3:
version "7.1.3" version "7.1.3"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6"
semver@^7.2.1:
version "7.3.4"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
dependencies:
lru-cache "^6.0.0"
semver@^7.3.2: semver@^7.3.2:
version "7.3.2" version "7.3.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
@ -10507,6 +10547,11 @@ set-blocking@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
set-immediate-shim@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
set-value@^2.0.0, set-value@^2.0.1: set-value@^2.0.0, set-value@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
@ -11700,6 +11745,15 @@ unused-filename@^1.0.0:
modify-filename "^1.1.0" modify-filename "^1.1.0"
path-exists "^3.0.0" path-exists "^3.0.0"
unzip-crx-3@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz#d5324147b104a8aed9ae8639c95521f6f7cda292"
integrity sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ==
dependencies:
jszip "^3.1.0"
mkdirp "^0.5.1"
yaku "^0.16.6"
unzip-response@^2.0.1: unzip-response@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
@ -12424,6 +12478,11 @@ y18n@^5.0.2:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.3.tgz#978115b82befe2b5c762bf55980b7b01a4a2d5d9" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.3.tgz#978115b82befe2b5c762bf55980b7b01a4a2d5d9"
integrity sha512-JeFbcHQ/7hVmMBXW6UB6Tg7apStHd/ztGz1JN78y3pFi/q0Ht1eA6PVkvw56gm7UA8fcJR/ziRlYEDMGoju0yQ== integrity sha512-JeFbcHQ/7hVmMBXW6UB6Tg7apStHd/ztGz1JN78y3pFi/q0Ht1eA6PVkvw56gm7UA8fcJR/ziRlYEDMGoju0yQ==
yaku@^0.16.6:
version "0.16.7"
resolved "https://registry.yarnpkg.com/yaku/-/yaku-0.16.7.tgz#1d195c78aa9b5bf8479c895b9504fd4f0847984e"
integrity sha1-HRlceKqbW/hHnIlblQT9TwhHmE4=
yallist@^2.1.2: yallist@^2.1.2:
version "2.1.2" version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"